<commit_before>﻿//-----------------------------------------------
//
//	This file is part of the HamFramework for Siv3D.
//
//	Copyright (C) 2014-2016 Hamukun
//	Copyright (C) 2014-2016 <NAME>
//
//	Licensed under the MIT License.
//
//-----------------------------------------------

# pragma once
//# include "../Siv3D.hpp"
# include <Siv3D.hpp>

namespace ham
{
	/// <summary>
	/// シーケンス管理
	/// </summary>
	/// <remarks>
	/// State にはシーンを区別するキーの型、Data にはシーン間で共有するデータの型を指定します。
	/// </remarks>
	template <class State, class Data> class SceneManager;

	/// <summary>
	/// シーン・インタフェース
	/// </summary>
	template <class State, class Data>
	class SceneBase : s3d::Uncopyable
	{
	public:

		using Manager_t = SceneManager<State, Data>;

		using State_t = State;

		using Data_t = Data;

		virtual ~SceneBase() = default;

		void setData(Manager_t* pManager, const std::shared_ptr<Data>& data)
		{
			m_manager = pManager;

			m_data = data;
		}

		/// <summary>
		/// クラスの初期化時に一度だけ呼ばれます。
		/// </summary>
		/// <returns>
		/// なし
		/// </returns>
		virtual void init() {}

		/// <summary>
		/// フェードイン時の更新
		/// </summary>
		/// <returns>
		/// なし
		/// </returns>
		virtual void updateFadeIn(double) {}

		/// <summary>
		/// 通常時の更新
		/// </summary>
		/// <returns>
		/// なし
		/// </returns>
		virtual void update() = 0;

		/// <summary>
		/// フェードアウト時の更新
		/// </summary>
		/// <returns>
		/// なし
		/// </returns>
		virtual void updateFadeOut(double) {}

		/// <summary>
		/// 通常時の描画
		/// </summary>
		/// <returns>
		/// なし
		/// </returns>
		virtual void draw() const = 0;

		/// <summary>
		/// フェードイン時の描画
		/// </summary>
		/// <param name="t">
		/// フェードインの経過 (0.0 → 1.0)
		/// </param>
		/// <returns>
		/// なし
		/// </returns>
		virtual void drawFadeIn(double t) const
		{
			draw();

			s3d::Window::ClientRect().draw(m_manager->getFadeColor().setAlpha(1.0 - t));
		}

		/// <summary>
		/// フェードイアウト時の描画<commit_msg>fix update draw = 0 to {}<commit_after>﻿//-----------------------------------------------
//
//	This file is part of the HamFramework for Siv3D.
//
//	Copyright (C) 2014-2016 Hamukun
//	Copyright (C) 2014-2016 <NAME>
//
//	Licensed under the MIT License.
//
//-----------------------------------------------

# pragma once
//# include "../Siv3D.hpp"
# include <Siv3D.hpp>

namespace ham
{
	/// <summary>
	/// シーケンス管理
	/// </summary>
	/// <remarks>
	/// State にはシーンを区別するキーの型、Data にはシーン間で共有するデータの型を指定します。
	/// </remarks>
	template <class State, class Data> class SceneManager;

	/// <summary>
	/// シーン・インタフェース
	/// </summary>
	template <class State, class Data>
	class SceneBase : s3d::Uncopyable
	{
	public:

		using Manager_t = SceneManager<State, Data>;

		using State_t = State;

		using Data_t = Data;

		virtual ~SceneBase() = default;

		void setData(Manager_t* pManager, const std::shared_ptr<Data>& data)
		{
			m_manager = pManager;

			m_data = data;
		}

		/// <summary>
		/// クラスの初期化時に一度だけ呼ばれます。
		/// </summary>
		/// <returns>
		/// なし
		/// </returns>
		virtual void init() {}

		/// <summary>
		/// フェードイン時の更新
		/// </summary>
		/// <returns>
		/// なし
		/// </returns>
		virtual void updateFadeIn(double) {}

		/// <summary>
		/// 通常時の更新
		/// </summary>
		/// <returns>
		/// なし
		/// </returns>
		virtual void update() {};

		/// <summary>
		/// フェードアウト時の更新
		/// </summary>
		/// <returns>
		/// なし
		/// </returns>
		virtual void updateFadeOut(double) {}

		/// <summary>
		/// 通常時の描画
		/// </summary>
		/// <returns>
		/// なし
		/// </returns>
		virtual void draw() const {};

		/// <summary>
		/// フェードイン時の描画
		/// </summary>
		/// <param name="t">
		/// フェードインの経過 (0.0 → 1.0)
		/// </param>
		/// <returns>
		/// なし
		/// </returns>
		virtual void drawFadeIn(double t) const
		{
			draw();

			s3d::Window::ClientRect().draw(m_manager->getFadeColor().setAlpha(1.0 - t));
		}

		/// <summary>
		/// フェードイアウト時の描画
{'fraction_non_alphanumeric': 0.24740394600207685, 'fraction_numerical': 0.014797507788161994, 'mean_word_length': 1.802181818181818, 'pattern_counts': {'":': 0, '<': 81, '<?xml version=': 0, '>': 83, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '7123013', 'n_tokens_mistral': 1764, 'n_tokens_neox': 1550, 'n_words': 306}