#include "stdafx.h"
#include "refCMActフェードアウト・透明度.h"
#include "Direct3D9\CDirect3DNative.h"

namespace FDK
{
// public:

	void CMActフェードアウト・透明度::t開始()
	{
		this->b完了 = false;
		this->ct透明度カウンタ = gcnew CCounter( 0, 255, this->n速度ms );
	}

	CMActフェードアウト・透明度::CMActフェードアウト・透明度()
	{
		this->ct透明度カウンタ = nullptr;
		this->n速度ms = 4;
		this->_b完了 = false;
	}
	CMActフェードアウト・透明度::CMActフェードアウト・透明度( int n速度ms )
		: CMActフェードアウト・透明度()
	{
		this->n速度ms = n速度ms;
	}

	void CMActフェードアウト・透明度::On非活性化()
	{
		SAFE_REF_DELETE( this->ct透明度カウンタ );
	}
	int CMActフェードアウト・透明度::On進行()
	{
		if( nullptr == this->ct透明度カウンタ )
			return 0;		// まだ開始されていない

		if( !this->_b完了 )
		{
			this->ct透明度カウンタ->t進行();

			if( this->ct透明度カウンタ->b終了値に達した )
				this->_b完了 = true;
		}
		return 0;
	}
	void CMActフェードアウト・透明度::On描画( IntPtr hDevice, CTexture^ txカバー )
	{
		if( nullptr == this->ct透明度カウンタ )
			return;		// まだ開始されていない

		if( nullptr == txカバー )
			return;

		txカバー->vc拡大縮小倍率 = Vector3( 1.0f, 1.0f, 1.0f );
		txカバー->n透明度 = this->ct透明度カウンタ->n現在の値;

		D3DVIEWPORT9 viewSize = CDirect3DNative::GetViewPort();
		int n横枚数 = ( viewSize.Width / txカバー->sz画像サイズ.Width ) + 1;
		int n縦枚数 = ( viewSize.Height / txカバー->sz画像サイズ.Height ) + 1;

		for( int y = 0; y < n縦枚数; y++ )
		{
			for( int x = 0; x < n横枚数; x++ )
			{
				txカバー->t2D描画( hDevice, x * txカバー->sz画像サイズ.Width, y * txカバー->sz画像サイズ.Height );
			}
		}
	}

}