#pragma once

#include "共通\refCActivity.h"
#include "共通\refCCounter.h"
#include "Direct3D9\enumD3DFormat.h"
#include "Direct3D9\refCTexture.h"

namespace FDK
{
	// 画面上に任意の文字列を短時間だけ表示するフリップボード。
	// t表示() を呼び出すと、画面最上部にその文字列がしばらく表示され、その後フェードアウトする。
	public ref class CMActフリップボード : CActivity
	{
	public:
		property int n表示し続ける時間ms
		{
			int get()
			{
				return this->_n表示し続ける時間ms;
			}
			void set( int value )
			{
				this->_n表示し続ける時間ms = value;
			}
		};
		property int nフェードアウトにかける時間ms
		{
			int get()
			{
				return this->_nフェードアウトにかける時間ms;
			}
			void set( int value )
			{
				this->_nフェードアウトにかける時間ms = value;
			}
		};

		// 進行、GUIスレッドから呼び出しても大丈夫。
		void t表示( String^ str表示文字列 );

		CMActフリップボード( D3DFormat TextureFormat );
		CMActフリップボード( D3DFormat TextureFormat, int n表示し続ける時間ms, int nフェードアウトにかける時間ms );

		virtual void Onデバイスリソースの作成() override;
		virtual void Onデバイスリソースの解放() override;
		virtual int On進行() override;
		virtual void On描画( IntPtr hDevice ) override;

	protected:
		bool b文字列変更;
		D3DFormat TextureFormat;
		CTexture^ txフリップボード;
		String^ str表示文字列;
		Font^ font文字列;
		CCounter^ ctアニメ用;

	private:
		void tフリップボードの作成( HANDLE hDevice, String^ str表示文字列 );
		void tフリップボードの作成( HANDLE hDevice );

		int _n表示し続ける時間ms;
		int _nフェードアウトにかける時間ms;
	};
}
