#ifndef CResourceNameGenerator_h
#define CResourceNameGenerator_h

#include"../Setup/CompileMode.h"
#include"../Auxiliary/mstring.h"

namespace Maid
{
	namespace TEXTURENAME
	{
		mstring GeneratRenderTarget( int id );
		mstring GeneratFont( int id );
		mstring GeneratFile( const mstring& name );
	}

	namespace SURFACENAME
	{
		mstring GeneratRT( int id );
	}

	namespace VERTEXNAME
	{
		mstring GeneratMemory( int id );
		mstring GeneratFile( const mstring& name );
	}

	namespace INDEXNAME
	{
		mstring GeneratMemory( int id );
		mstring GeneratFile( const mstring& name );
	}

	namespace VERTEXSHADERNAME
	{
		enum NAME
		{
			FILE,	//!<	ファイルにある

			RHWCOLOR,	//!<	変換済み頂点、頂点色を流す
			SPRITE,		//!<	変換済み頂点、頂点色、テクスチャ１枚を流す

			COLOR3D,	//!<	３Ｄ頂点、頂点色を流す
			SPRITE3D,	//!<	３Ｄ頂点、頂点色、テクスチャ１枚を流す
			SPRITE3DMASK,	//!<	３Ｄ頂点、頂点色、テクスチャ２枚を流す

			MODEL_COLOR,	//!<	３Ｄ頂点、頂点色はマテリアル（モデル用）
			MODEL_TEXTURE,	//!<	３Ｄ頂点、テクスチャＵＶ（モデル用）

			MODELTONE_COLOR,	//!<	３Ｄ頂点、頂点色はマテリアル（トゥーンモデル用）
			MODELTONE_TEXTURE,	//!<	３Ｄ頂点、テクスチャＵＶ（トゥーンモデル用）

			MODELTONE_LINE,		//!<	輪郭線（トゥーンモデル用）
		};

		mstring GeneratDefault( NAME name );
		mstring GeneratFile( const mstring& name );
	}

	namespace VERTEXDECLARATIONNAME
	{
		enum NAME
		{
			XYZ0NORMAL1,		//!<	xyzがstream0, normalが1
			XYZ0NORMAL1TEX2,	//!<	xyzがstream0, normalが1 TexUVが2
		};

		mstring GeneratDefault( NAME name );
	}

	namespace PIXELSHADERNAME
	{
		enum NAME
		{
			FILE,	//!<	ファイルにある

			VERTEXCOLOR_NORMAL,	//!<	頂点色のみで普通に描画
			VERTEXCOLOR_ADD,	//!<	頂点色のみで加算描画
			VERTEXCOLOR_SUB,	//!<	頂点色のみで減算描画
			VERTEXCOLOR_MUL,	//!<	頂点色のみで乗算描画
			VERTEXCOLOR_REVERSE,//!<	頂点色のみで反転描画
			VERTEXCOLOR_MAX,	//!<	頂点色のみでＭＡＸ描画

			SPRITE_NORMAL,	//!<	テクスチャと頂点色の乗算で普通に描画
			SPRITE_ADD,		//!<	テクスチャと頂点色の乗算で加算描画
			SPRITE_SUB,		//!<	テクスチャと頂点色の乗算で減算描画
			SPRITE_MUL,		//!<	テクスチャと頂点色の乗算で乗算描画
			SPRITE_REVERSE,	//!<	テクスチャと頂点色の乗算で反転描画
			SPRITE_MAX,		//!<	テクスチャと頂点色の乗算でＭＡＸ描画

			SPRITE_NORMAL_VCADD,	//!<	テクスチャと頂点色の加算で普通に描画
			SPRITE_NORMAL_VCSUB,	//!<	テクスチャと頂点色の減算で普通に描画

			FONT_NORMAL,	//!<	テキスト描画用

			MODEL_COLOR,	//!<	頂点色のみで描画
			MODEL_TEXTURE,	//!<	テクスチャ色のみで描画 アルファは頂点色ｘテクスチャ

			MODELTONE_COLOR,	//!<	頂点色のみで描画（トゥーンモデル用）
			MODELTONE_TEXTURE,	//!<	テクスチャ色のみで描画 アルファは頂点色ｘテクスチャ（トゥーンモデル用）

			MODELTONE_LINE,		//!<	輪郭線（トゥーンモデル用）

			SPRITE_MASK_NORMAL_ADD,	//!<	テクスチャと頂点色の乗算でマスクテクスチャのアルファで描画
			SPRITE_MASK_NORMAL_SUB,	//!<	テクスチャと頂点色の乗算でマスクテクスチャのアルファで描画
		};

		mstring GeneratDefault( NAME name );
		mstring GeneratFile( const mstring& name );
	}

}

#endif