SDL_image で辞書を作成したのと同じように、SDL_ttf でフォントの辞書を作成しようとしています。フォントは に格納されているため、pnt_size
この情報を含む構造体を作成しました。
struct fontinfo
{
string assetname;
int size;
};
両方の辞書が続きます:
map<string, SDL_Surface*> imageDictionary;
map<fontinfo*, TTF_Font*> fontDictionary;
2 つの違いは、フォント ディクショナリには、ファイルへの文字列だけでなく、フォントのサイズも含める必要があることです。
次に、オブジェクトによって画像またはフォントが要求されると、そのget
関数が呼び出されます。今はgetSprite
うまくいきます:
SDL_Surface* ResourceManager::getSprite(string assetname)
{
if (assetname == "")
return NULL;
map<string, SDL_Surface*>::iterator it = imageDictionary.find(assetname);
if (it != imageDictionary.end())
return it->second;
else
{
SDL_Surface* image = Load_Image(assetname);
if (image != NULL)
imageDictionary.insert(make_pair(assetname, image));
return image;
}
}
メソッドは、 a の代わりに a をgetFont
使用するという事実を除いて、ほぼ同じです。fontinfo
string
TTF_Font* ResourceManager::getFont(string assetname, int size)
{
if (assetname == "" || size < 0)
return NULL;
fontinfo* info = new fontinfo();
info->assetname = assetname;
info->size = size;
map<fontinfo*, TTF_Font*>::iterator it = fontDictionary.find(info);
if (it != fontDictionary.end())
return it->second;
else
{
TTF_Font* font = Load_Font(assetname, size);
if (font != NULL)
fontDictionary.insert(make_pair(info, font));
return font;
}
}
コンパイラは、識別子が見つからず、make_pair
未定義であると通知make_pair
しますが、関数 fromのみですgetFont
。に問題はありませmake_pair
んgetSprite
。