#include"CResourceNameGenerator.h"
#include"../Auxiliary/Debug/CAssert.h"
#include"../Auxiliary/CString.h"

#include<stdio.h>

	/*
		ここで作ってる関数は
		戻り値の文字列を種類ごとに同じデータベースで管理するので
		名前がかぶったりするとまずいです。

		一番いいのはかぶることのない unt 型なのですが
		アルゴリズムを実装するのがメンドイので、文字列で逃げておきます。
		デバッグしやすいしね。
	*/

namespace Maid
{
	namespace TEXTURENAME
	{
		//	ゲーム側で独自に作る方
		mstring GeneratRenderTarget( int id )
		{
			char buf[256];
			sprintf( buf, "TEXTURE_RT_%08x", id );

			return CString::ConvertSJIStoMAID(buf);
		}

		//	フォントテクスチャ
		mstring GeneratFont( int id )
		{
			char buf[256];
			sprintf( buf, "TEXTURE_FONT_%08x", id );

			return CString::ConvertSJIStoMAID(buf);
		}

		//	ファイルになっている方
		mstring GeneratFile( const mstring& name )
		{
			return CString::ToLower(name);
		}
	}

	namespace SURFACENAME
	{
		mstring GeneratRT( int id )
		{
			char buf[256];
			sprintf( buf, "SURFACE_RT_%08x", id );

			return CString::ConvertSJIStoMAID(buf);
		}
	}

	namespace VERTEXNAME
	{
		//	ゲーム側で独自に作る方
		mstring GeneratMemory( int id )
		{
			char buf[256];
			sprintf( buf, "VERTEX_%08x", id );

			return CString::ConvertSJIStoMAID(buf);
		}

		//	ファイルになっている方
		mstring GeneratFile( const mstring& name )
		{
			return CString::ToLower(name);
		}
	}


	namespace INDEXNAME
	{
		//	ゲーム側で独自に作る方
		mstring GeneratMemory( int id )
		{
			char buf[256];
			sprintf( buf, "INDEX_%08x", id );

			return CString::ConvertSJIStoMAID(buf);
		}

		//	ファイルになっている方
		mstring GeneratFile( const mstring& name )
		{
			return CString::ToLower(name);
		}
	}

	namespace VERTEXSHADERNAME
	{
		//	デフォルトシェーダー名の作成
		mstring GeneratDefault( NAME name )
		{
			MAID_ASSERT( name==VERTEXSHADERNAME::FILE, "ファイルには対応してません" );

			char buf[256];
			sprintf( buf, "VERTEXSHADER_%08x", name );

			return CString::ConvertSJIStoMAID(buf);
		}

		//	ゲーム独自のシェーダー名の作成
		mstring GeneratFile( const mstring& name )
		{
			return CString::ToLower(name);
		}
	}

	namespace VERTEXDECLARATIONNAME
	{
		mstring GeneratDefault( NAME name )
		{
			char buf[256];
			sprintf( buf, "DECLARATION_%08x", name );

			return CString::ConvertSJIStoMAID(buf);
		}
	}

	namespace PIXELSHADERNAME
	{
		//	デフォルトシェーダー名の作成
		mstring GeneratDefault( NAME name )
		{
			MAID_ASSERT( name==PIXELSHADERNAME::FILE, "ファイルには対応してません" );

			char buf[256];
			sprintf( buf, "PIXELSHADER_%08x", name );

			return CString::ConvertSJIStoMAID(buf);
		}

		//	ゲーム独自のシェーダー名の作成
		mstring GeneratFile( const mstring& name )
		{
			return CString::ToLower(name);
		}
	}








}

