/* This method loads all the sprite types found in the provided sprite type list file into the game state manager, including their images. */ bool PoseurSpriteTypesImporter::loadSpriteTypes(Game *game, wstring spriteTypesListFileName) { int slashIndex = spriteTypesListFileName.rfind('/'); dir = string(spriteTypesListFileName.begin(), spriteTypesListFileName.end()).substr(0, slashIndex+1); const char *spriteTypesListFile = newCharArrayFromWstring(spriteTypesListFileName); bool success = loadSpriteTypesListInfo(spriteTypesListFile); if (!success) return false; for (unsigned int i = 0; i < spriteTypes.size(); i++) { success = loadSpriteTypeInfo(spriteTypes[i]); if (!success) return false; } TextureManager *tm = game->getGraphics()->getWorldTextureManager(); WStringTable *wStringTable = tm->getWStringTable(); // NOW LET'S USE ALL THE INFO WE'VE LOADED // LET'S START BY LOADING THE TEXTURES INTO THE WORLD TEXTURE MANAGER for (unsigned int i = 0; i < spriteTypes.size(); i++) { string spriteType = spriteTypes[i]; unsigned int offset = wStringTable->getNumWStringsInTable(); map<int, string> images = spriteTypesImages[spriteType]; for (int j = 0; j < images.size(); j++) { string imageToLoad = images[j]; wstring wImageToLoad(imageToLoad.begin(), imageToLoad.end()); tm->loadTexture(wImageToLoad); } AnimatedSpriteType *ast = new AnimatedSpriteType(); unsigned int spriteTypeId = game->getGSM()->getSpriteManager()->addSpriteType(ast); ast->setSpriteTypeID(spriteTypeId); Dimensions dim = spriteTypesDimensions[spriteType]; ast->setTextureSize(dim.width, dim.height); map<string, vector<Pose>> animations = spriteTypesAnimationsLists[spriteType]; map<string, vector<Pose>>::iterator it = animations.begin(); while (it != animations.end()) { string key = it->first; wstring wKey(key.begin(), key.end()); ast->addAnimationSequence(wKey); vector<Pose> poseList = it->second; vector<Pose>::iterator poseIt = poseList.begin(); while (poseIt != poseList.end()) { Pose pose = *poseIt; ast->addAnimationFrame(wKey, pose.imageId + offset - 1, pose.duration); poseIt++; } it++; } } return true; }
bool Localization::has(wchar_t* key) { wstring wKey(key); #ifdef _DEBUG if (wKey.empty()) return false; bool r = mMenu.find(wKey) == mMenu.end(); if (r) { dwprintf(L"Not Found: %s\n", key); } return !r; #else return !wKey.empty() && mMenu.find(wKey) != mMenu.end(); #endif }
wstring Localization::get(wchar_t* key, const wchar_t* def) { wstring wKey(key); return get(wKey, def); }