#include "stdafx.h"
#include "refCMAct文字列描画.h"

namespace FDK
{
	CMAct文字列描画::CMAct文字列描画( String^ str表記可能文字, int n改行幅px )
	{
		this->str表記可能文字 = str表記可能文字;
		this->n改行幅px = n改行幅px;
		this->n空白幅px = 8;
	}
	CMAct文字列描画::CMAct文字列描画( String^ str表記可能文字, int n改行幅px, int n空白幅px )
		:CMAct文字列描画( str表記可能文字, n改行幅px )
	{
		this->n空白幅px = n空白幅px;
	}

	void CMAct文字列描画::t表示( IntPtr hDevice, CTexture^ tx文字盤, int x, int y, String^ str描画する文字列 )
	{
		// 準正常系チェック。

		if( this->b活性化してない || String::IsNullOrEmpty( this->str表記可能文字 ) || nullptr == tx文字盤 || String::IsNullOrEmpty( str描画する文字列 ) )
			return;


		// 文字列描画。

		int nXの初期値 = x;
		for( int i = 0; i < str描画する文字列->Length; i++ )
		{
			wchar_t ch = str描画する文字列[ i ];

			if( '\n' == ch )
			{
				// (A) 改行

				x = nXの初期値;
				y += this->n改行幅px;
			}
			else
			{
				int n = this->str表記可能文字->LastIndexOf( ch );

				// (B) 通常文字

				if( 0 <= n )
				{
					tx文字盤->t2D描画( hDevice, x, y, tx文字盤->list描画範囲[ n ] );
					x += tx文字盤->list描画範囲[ n ].Width;
				}

				// (C) 未対応文字は空白扱い
				else
				{
					x += this->n空白幅px;
				}
			}
		}
	}
}
