void Module::loadTexturePack() { int level = ConfigMan.getInt("texturepack", 1); if (_currentTexturePack == level) // Nothing to do return; unloadTexturePack(); status("Loading texture pack %d", level); indexMandatoryArchive(Aurora::kArchiveERF, texturePacks[level][0], 13, &_resTP[0]); indexMandatoryArchive(Aurora::kArchiveERF, texturePacks[level][1], 14, &_resTP[1]); indexOptionalArchive (Aurora::kArchiveERF, texturePacks[level][2], 15, &_resTP[2]); indexOptionalArchive (Aurora::kArchiveERF, texturePacks[level][3], 16, &_resTP[3]); // If we already had a texture pack loaded, reload all textures if (_currentTexturePack != -1) TextureMan.reloadAll(); _currentTexturePack = level; }
void Module::loadResources() { // Add all available resource files for the module. // Apparently, the original game prefers ERFs over RIMs. This is // exploited by the KotOR2 TSL Restored Content Mod. // General module resources _resources.push_back(Common::ChangeID()); if (!indexOptionalArchive (_module + ".erf", 1000, &_resources.back())) indexMandatoryArchive(_module + ".rim", 1000, &_resources.back()); // Scripts _resources.push_back(Common::ChangeID()); if (!indexOptionalArchive (_module + "_s.erf", 1001, &_resources.back())) indexMandatoryArchive(_module + "_s.rim", 1001, &_resources.back()); // Dialogs, KotOR2 only _resources.push_back(Common::ChangeID()); if (!indexOptionalArchive(_module + "_dlg.erf", 1002, &_resources.back())) indexOptionalArchive(_module + "_dlg.rim", 1002, &_resources.back()); // Layouts, Xbox only _resources.push_back(Common::ChangeID()); indexOptionalArchive(_module + "_a.rim" , 1003, &_resources.back()); // Textures, Xbox only _resources.push_back(Common::ChangeID()); indexOptionalArchive(_module + "_adx.rim", 1004, &_resources.back()); }
void Module::loadTexturePack() { int level = ConfigMan.getInt("texturepack", 1); if (_currentTexturePack == level) // Nothing to do return; const int oldTexturePack = _currentTexturePack; unloadTexturePack(); status("Loading texture pack %d", level); indexMandatoryArchive(texturePacks[level][0], 400, &_resTP[0]); indexMandatoryArchive(texturePacks[level][1], 401, &_resTP[1]); indexOptionalArchive (texturePacks[level][2], 402, &_resTP[2]); indexOptionalArchive (texturePacks[level][3], 403, &_resTP[3]); // If we already had a texture pack loaded, reload all textures if (oldTexturePack != -1) TextureMan.reloadAll(); _currentTexturePack = level; }
void WitcherEngine::loadLanguageFiles(Aurora::Language langText, Aurora::Language langVoice) { unloadLanguageFiles(); LangMan.setCurrentLanguage(langText, langVoice); Common::UString archive; _languageResources.push_back(Common::ChangeID()); archive = Common::UString::format("lang_%d.key", LangMan.getLanguageID(langVoice)); indexMandatoryArchive(archive, 100, &_languageResources.back()); // Voices for the first premium module (The Price of Neutrality) _languageResources.push_back(Common::ChangeID()); archive = Common::UString::format("M1_%d.key", LangMan.getLanguageID(langVoice)); indexOptionalArchive(archive, 101, &_languageResources.back()); // Voices for the second premium module (Side Effects) _languageResources.push_back(Common::ChangeID()); archive = Common::UString::format("M2_%d.key", LangMan.getLanguageID(langVoice)); indexOptionalArchive(archive, 102, &_languageResources.back()); archive = Common::UString::format("dialog_%d", LangMan.getLanguageID(langText)); TalkMan.addTable(archive, "", false, 0, &_languageTLK); }
void Module::loadTexturePack() { int level = ConfigMan.getInt("texturepack", 2); if (_currentTexturePack == level) // Nothing to do return; unloadTexturePack(); status("Loading texture pack %d", level); indexOptionalArchive(Aurora::kArchiveERF, texturePacks[level], 25, &_textures); // If we already had a texture pack loaded, reload all textures if (_currentTexturePack != -1) TextureMan.reloadAll(); _currentTexturePack = level; }
void Module::loadResources() { // Add all available resource files for the module. // Apparently, the original game prefers ERFs over RIMs. This is // exploited by the KotOR 2 TSL Restored Content Mod. Aurora::ResourceManager::ChangeID change; // General module resources if (!indexOptionalArchive(Aurora::kArchiveERF, _module + ".erf", 100, &change)) indexMandatoryArchive(Aurora::kArchiveRIM, _module + ".rim", 100, &change); _resources.push_back(change); change.clear(); // Scripts if (!indexOptionalArchive(Aurora::kArchiveERF, _module + "_s.erf", 101, &change)) indexMandatoryArchive(Aurora::kArchiveRIM, _module + "_s.rim", 101, &change); _resources.push_back(change); change.clear(); // Dialogs, KotOR 2 only if (!indexOptionalArchive(Aurora::kArchiveERF, _module + "_dlg.erf", 102, &change)) indexOptionalArchive(Aurora::kArchiveRIM, _module + "_dlg.rim", 102, &change); _resources.push_back(change); change.clear(); // Layouts, Xbox only indexOptionalArchive(Aurora::kArchiveRIM, _module + "_a.rim", 103, &change); _resources.push_back(change); change.clear(); // Textures, Xbox only indexOptionalArchive(Aurora::kArchiveRIM, _module + "_adx.rim", 104, &change); _resources.push_back(change); change.clear(); }
void NWN2Engine::initResources(LoadProgress &progress) { // NWN2's new file types overlap with other engines in the 3000s block ResMan.addTypeAlias((Aurora::FileType) 3000, Aurora::kFileTypeOSC); ResMan.addTypeAlias((Aurora::FileType) 3001, Aurora::kFileTypeUSC); ResMan.addTypeAlias((Aurora::FileType) 3002, Aurora::kFileTypeTRN); ResMan.addTypeAlias((Aurora::FileType) 3003, Aurora::kFileTypeUTR); ResMan.addTypeAlias((Aurora::FileType) 3004, Aurora::kFileTypeUEN); ResMan.addTypeAlias((Aurora::FileType) 3005, Aurora::kFileTypeULT); ResMan.addTypeAlias((Aurora::FileType) 3006, Aurora::kFileTypeSEF); ResMan.addTypeAlias((Aurora::FileType) 3007, Aurora::kFileTypePFX); ResMan.addTypeAlias((Aurora::FileType) 3008, Aurora::kFileTypeCAM); ResMan.addTypeAlias((Aurora::FileType) 3009, Aurora::kFileTypeLFX); ResMan.addTypeAlias((Aurora::FileType) 3010, Aurora::kFileTypeBFX); ResMan.addTypeAlias((Aurora::FileType) 3011, Aurora::kFileTypeUPE); ResMan.addTypeAlias((Aurora::FileType) 3012, Aurora::kFileTypeROS); ResMan.addTypeAlias((Aurora::FileType) 3013, Aurora::kFileTypeRST); ResMan.addTypeAlias((Aurora::FileType) 3014, Aurora::kFileTypeIFX); ResMan.addTypeAlias((Aurora::FileType) 3015, Aurora::kFileTypePFB); ResMan.addTypeAlias((Aurora::FileType) 3016, Aurora::kFileTypeZIP); ResMan.addTypeAlias((Aurora::FileType) 3017, Aurora::kFileTypeWMP); ResMan.addTypeAlias((Aurora::FileType) 3018, Aurora::kFileTypeBBX); ResMan.addTypeAlias((Aurora::FileType) 3019, Aurora::kFileTypeTFX); ResMan.addTypeAlias((Aurora::FileType) 3020, Aurora::kFileTypeWLK); ResMan.addTypeAlias((Aurora::FileType) 3021, Aurora::kFileTypeXML); ResMan.addTypeAlias((Aurora::FileType) 3022, Aurora::kFileTypeSCC); ResMan.addTypeAlias((Aurora::FileType) 3033, Aurora::kFileTypePTX); ResMan.addTypeAlias((Aurora::FileType) 3034, Aurora::kFileTypeLTX); ResMan.addTypeAlias((Aurora::FileType) 3035, Aurora::kFileTypeTRX); progress.step("Setting base directory"); ResMan.registerDataBase(_target); progress.step("Adding extra archive directories"); indexMandatoryDirectory("data" , 0, 0, 2); indexMandatoryDirectory("modules", 0, 0, 3); indexMandatoryDirectory("hak" , 0, 0, 4); progress.step("Loading main resource files"); indexMandatoryArchive("2da.zip" , 10); indexMandatoryArchive("actors.zip" , 11); indexMandatoryArchive("animtags.zip" , 12); indexMandatoryArchive("convo.zip" , 13); indexMandatoryArchive("ini.zip" , 14); indexMandatoryArchive("lod-merged.zip" , 15); indexMandatoryArchive("music.zip" , 16); indexMandatoryArchive("nwn2_materials.zip", 17); indexMandatoryArchive("nwn2_models.zip" , 18); indexMandatoryArchive("nwn2_vfx.zip" , 19); indexMandatoryArchive("prefabs.zip" , 20); indexMandatoryArchive("scripts.zip" , 21); indexMandatoryArchive("sounds.zip" , 22); indexMandatoryArchive("soundsets.zip" , 23); indexMandatoryArchive("speedtree.zip" , 24); indexMandatoryArchive("templates.zip" , 25); indexMandatoryArchive("vo.zip" , 26); indexMandatoryArchive("walkmesh.zip" , 27); progress.step("Loading expansion 1 resource files"); // Expansion 1: Mask of the Betrayer (MotB) _hasXP1 = ResMan.hasArchive("2da_x1.zip"); indexOptionalArchive("2da_x1.zip" , 50); indexOptionalArchive("actors_x1.zip" , 51); indexOptionalArchive("animtags_x1.zip" , 52); indexOptionalArchive("convo_x1.zip" , 53); indexOptionalArchive("ini_x1.zip" , 54); indexOptionalArchive("lod-merged_x1.zip" , 55); indexOptionalArchive("music_x1.zip" , 56); indexOptionalArchive("nwn2_materials_x1.zip", 57); indexOptionalArchive("nwn2_models_x1.zip" , 58); indexOptionalArchive("nwn2_vfx_x1.zip" , 59); indexOptionalArchive("prefabs_x1.zip" , 60); indexOptionalArchive("scripts_x1.zip" , 61); indexOptionalArchive("soundsets_x1.zip" , 62); indexOptionalArchive("sounds_x1.zip" , 63); indexOptionalArchive("speedtree_x1.zip" , 64); indexOptionalArchive("templates_x1.zip" , 65); indexOptionalArchive("vo_x1.zip" , 66); indexOptionalArchive("walkmesh_x1.zip" , 67); progress.step("Loading expansion 2 resource files"); // Expansion 2: Storm of Zehir (SoZ) _hasXP2 = ResMan.hasArchive("2da_x2.zip"); indexOptionalArchive("2da_x2.zip" , 100); indexOptionalArchive("actors_x2.zip" , 101); indexOptionalArchive("animtags_x2.zip" , 102); indexOptionalArchive("lod-merged_x2.zip" , 103); indexOptionalArchive("music_x2.zip" , 104); indexOptionalArchive("nwn2_materials_x2.zip", 105); indexOptionalArchive("nwn2_models_x2.zip" , 106); indexOptionalArchive("nwn2_vfx_x2.zip" , 107); indexOptionalArchive("prefabs_x2.zip" , 108); indexOptionalArchive("scripts_x2.zip" , 109); indexOptionalArchive("soundsets_x2.zip" , 110); indexOptionalArchive("sounds_x2.zip" , 111); indexOptionalArchive("speedtree_x2.zip" , 112); indexOptionalArchive("templates_x2.zip" , 113); indexOptionalArchive("vo_x2.zip" , 114); // Expansion 3: Mysteries of Westgate _hasXP3 = ResMan.hasArchive("westgate.hak"); progress.step("Loading patch resource files"); indexOptionalArchive("actors_v103x1.zip" , 150); indexOptionalArchive("actors_v106.zip" , 151); indexOptionalArchive("lod-merged_v101.zip" , 152); indexOptionalArchive("lod-merged_v107.zip" , 153); indexOptionalArchive("lod-merged_v121.zip" , 154); indexOptionalArchive("lod-merged_x1_v121.zip" , 155); indexOptionalArchive("lod-merged_x2_v121.zip" , 156); indexOptionalArchive("nwn2_materials_v103x1.zip" , 157); indexOptionalArchive("nwn2_materials_v104.zip" , 158); indexOptionalArchive("nwn2_materials_v106.zip" , 159); indexOptionalArchive("nwn2_materials_v107.zip" , 160); indexOptionalArchive("nwn2_materials_v110.zip" , 161); indexOptionalArchive("nwn2_materials_v112.zip" , 162); indexOptionalArchive("nwn2_materials_v121.zip" , 163); indexOptionalArchive("nwn2_materials_x1_v113.zip", 164); indexOptionalArchive("nwn2_materials_x1_v121.zip", 165); indexOptionalArchive("nwn2_models_v103x1.zip" , 166); indexOptionalArchive("nwn2_models_v104.zip" , 167); indexOptionalArchive("nwn2_models_v105.zip" , 168); indexOptionalArchive("nwn2_models_v106.zip" , 169); indexOptionalArchive("nwn2_models_v107.zip" , 160); indexOptionalArchive("nwn2_models_v112.zip" , 171); indexOptionalArchive("nwn2_models_v121.zip" , 172); indexOptionalArchive("nwn2_models_x1_v121.zip" , 173); indexOptionalArchive("nwn2_models_x2_v121.zip" , 174); indexOptionalArchive("templates_v112.zip" , 175); indexOptionalArchive("templates_v122.zip" , 176); indexOptionalArchive("templates_x1_v122.zip" , 177); indexOptionalArchive("vo_103x1.zip" , 178); indexOptionalArchive("vo_106.zip" , 179); progress.step("Indexing extra sound resources"); indexMandatoryDirectory("ambient" , 0, 0, 200); indexOptionalDirectory ("ambient_x1", 0, 0, 201); indexOptionalDirectory ("ambient_x2", 0, 0, 202); progress.step("Indexing extra music resources"); indexMandatoryDirectory("music" , 0, 0, 203); indexOptionalDirectory ("music_x1" , 0, 0, 204); indexOptionalDirectory ("music_x2" , 0, 0, 205); progress.step("Indexing extra movie resources"); indexMandatoryDirectory("movies" , 0, 0, 206); progress.step("Indexing extra effects resources"); indexMandatoryDirectory("effects" , 0, 0, 207); progress.step("Indexing extra character resources"); indexMandatoryDirectory("localvault", 0, 0, 208); progress.step("Indexing extra UI resources"); indexMandatoryDirectory("ui" , 0, -1, 209); progress.step("Indexing Windows-specific resources"); indexMandatoryArchive("nwn2main.exe", 250); progress.step("Indexing override files"); indexOptionalDirectory("override", 0, 0, 500); progress.step("Loading main talk table"); TalkMan.addTable("dialog", "dialogf", false, 0); progress.step("Registering file formats"); registerModelLoader(new NWN2ModelLoader); FontMan.setFormat(Graphics::Aurora::kFontFormatTTF); }
void NWNEngine::initResources(LoadProgress &progress) { progress.step("Setting base directory"); ResMan.registerDataBaseDir(_target); indexMandatoryDirectory("", 0, 0, 1); progress.step("Adding extra archive directories"); ResMan.addArchiveDir(Aurora::kArchiveBIF, "data"); ResMan.addArchiveDir(Aurora::kArchiveERF, "nwm"); ResMan.addArchiveDir(Aurora::kArchiveERF, "modules"); ResMan.addArchiveDir(Aurora::kArchiveERF, "hak"); ResMan.addArchiveDir(Aurora::kArchiveERF, "texturepacks"); progress.step("Loading main KEY"); indexMandatoryArchive(Aurora::kArchiveKEY, "chitin.key", 1); progress.step("Loading expansions and patch KEYs"); // Base game patch indexOptionalArchive(Aurora::kArchiveKEY, "patch.key", 2); // Expansion 1: Shadows of Undrentide (SoU) _hasXP1 = indexOptionalArchive(Aurora::kArchiveKEY, "xp1.key", 3); indexOptionalArchive(Aurora::kArchiveKEY, "xp1patch.key", 4); // Expansion 2: Hordes of the Underdark (HotU) _hasXP2 = indexOptionalArchive(Aurora::kArchiveKEY, "xp2.key", 5); indexOptionalArchive(Aurora::kArchiveKEY, "xp2patch.key", 6); // Expansion 3: Kingmaker (resources also included in the final 1.69 patch) _hasXP3 = indexOptionalArchive(Aurora::kArchiveKEY, "xp3.key", 7); indexOptionalArchive(Aurora::kArchiveKEY, "xp3patch.key", 8); progress.step("Loading GUI textures"); indexMandatoryArchive(Aurora::kArchiveERF, "gui_32bit.erf" , 10); indexOptionalArchive (Aurora::kArchiveERF, "xp1_gui.erf" , 11); indexOptionalArchive (Aurora::kArchiveERF, "xp2_gui.erf" , 12); progress.step("Indexing extra sound resources"); indexMandatoryDirectory("ambient" , 0, 0, 20); progress.step("Indexing extra music resources"); indexMandatoryDirectory("music" , 0, 0, 21); progress.step("Indexing extra movie resources"); indexMandatoryDirectory("movies" , 0, 0, 22); progress.step("Indexing extra image resources"); indexOptionalDirectory ("portraits" , 0, 0, 23); progress.step("Indexing extra talktables"); indexOptionalDirectory ("tlk" , 0, 0, 25); progress.step("Indexing databases"); indexOptionalDirectory ("database" , 0, 0, 26); progress.step("Indexing override files"); indexOptionalDirectory("override", 0, 0, 1000); if (EventMan.quitRequested()) return; progress.step("Loading main talk table"); TalkMan.addMainTable("dialog"); progress.step("Registering file formats"); registerModelLoader(new NWNModelLoader); FontMan.setFormat(Graphics::Aurora::kFontFormatTexture); // Blacklist the DDS version of the galahad14 font, because in versions of NWN coming // with a Cyrillic one, the DDS file is still Latin. ResMan.blacklist("fnt_galahad14", Aurora::kFileTypeDDS); }
void KotOREngine::initResources() { status("Setting base directory"); ResMan.registerDataBaseDir(_baseDirectory); // In the Xbox version of KotOR, TXB textures are actually TPCs if (_platform == Aurora::kPlatformXbox) ResMan.addTypeAlias(Aurora::kFileTypeTXB, Aurora::kFileTypeTPC); indexMandatoryDirectory("", 0, 0, 0); status("Adding extra archive directories"); ResMan.addArchiveDir(Aurora::kArchiveBIF, (_platform == Aurora::kPlatformXbox) ? "dataxbox" : "data"); ResMan.addArchiveDir(Aurora::kArchiveERF, "lips"); if (_platform != Aurora::kPlatformXbox) ResMan.addArchiveDir(Aurora::kArchiveERF, "texturepacks"); ResMan.addArchiveDir(Aurora::kArchiveERF, "modules"); ResMan.addArchiveDir(Aurora::kArchiveRIM, (_platform == Aurora::kPlatformXbox) ? "rimsxbox" : "rims"); ResMan.addArchiveDir(Aurora::kArchiveRIM, "modules"); status("Loading main KEY"); indexMandatoryArchive(Aurora::kArchiveKEY, "chitin.key", 0); if (indexOptionalArchive(Aurora::kArchiveKEY, "live1.key", 1)) { status("Loading Xbox DLC KEY"); _hasLiveKey = true; } status("Loading global auxiliary resources"); indexMandatoryArchive(Aurora::kArchiveRIM, "mainmenu.rim" , 10); indexMandatoryArchive(Aurora::kArchiveRIM, "mainmenudx.rim" , 11); indexMandatoryArchive(Aurora::kArchiveRIM, "legal.rim" , 12); indexMandatoryArchive(Aurora::kArchiveRIM, "legaldx.rim" , 13); indexMandatoryArchive(Aurora::kArchiveRIM, "global.rim" , 14); indexMandatoryArchive(Aurora::kArchiveRIM, "subglobaldx.rim" , 15); indexMandatoryArchive(Aurora::kArchiveRIM, "miniglobaldx.rim", 16); indexMandatoryArchive(Aurora::kArchiveRIM, "globaldx.rim" , 17); indexMandatoryArchive(Aurora::kArchiveRIM, "chargen.rim" , 18); indexMandatoryArchive(Aurora::kArchiveRIM, "chargendx.rim" , 19); if (_platform == Aurora::kPlatformXbox) { // The Xbox version has most of its textures in "textures.bif" // Some, however, reside in "players.erf" status("Loading Xbox textures"); indexMandatoryArchive(Aurora::kArchiveERF, "players.erf", 20); } else { // The Windows/Mac versions have the GUI textures here status("Loading GUI textures"); indexMandatoryArchive(Aurora::kArchiveERF, "swpc_tex_gui.erf", 20); } status("Indexing extra sound resources"); indexMandatoryDirectory("streamsounds", 0, -1, 30); status("Indexing extra voice resources"); indexMandatoryDirectory("streamwaves" , 0, -1, 31); status("Indexing extra music resources"); indexMandatoryDirectory("streammusic" , 0, -1, 32); status("Indexing extra movie resources"); indexMandatoryDirectory("movies" , 0, -1, 33); if (_platform == Aurora::kPlatformWindows) { status("Indexing Windows-specific resources"); initCursorsRemap(); indexMandatoryArchive(Aurora::kArchiveEXE, "swkotor.exe", 34); } else if (_platform == Aurora::kPlatformMacOSX) { status("Indexing Mac-specific resources"); indexMandatoryDirectory("Knights of the Old Republic.app/Contents/Resources", 0, -1, 34); indexMandatoryDirectory("Knights of the Old Republic.app/Contents/Resources/Cursors", 0, -1, 35); } else if (_platform == Aurora::kPlatformXbox) { status("Indexing Xbox-specific resources"); indexMandatoryDirectory("errortex" , 0, -1, 34); indexMandatoryDirectory("localvault", 0, -1, 35); indexMandatoryDirectory("media" , 0, -1, 36); // For the DLC, we need to index the "sound" directory as well if (_hasLiveKey) indexMandatoryDirectory("sound", 0, -1, 37); } status("Indexing override files"); indexOptionalDirectory("override", 0, 0, 40); if (EventMan.quitRequested()) return; status("Loading main talk table"); TalkMan.addMainTable("dialog"); if (_hasLiveKey) { status("Loading Xbox DLC talk table"); TalkMan.addAltTable("live1"); } registerModelLoader(new KotORModelLoader); FontMan.setFormat(Graphics::Aurora::kFontFormatTexture); }
void DragonAge2Engine::initResources(LoadProgress &progress) { ResMan.setRIMsAreERFs(true); ResMan.setHashAlgo(Common::kHashFNV64); progress.step("Setting base directory"); ResMan.registerDataBase(_target); progress.step("Adding extra archive directories"); indexMandatoryDirectory("packages/core/data" , 0, 0, 2); indexMandatoryDirectory("packages/core/textures/", 0, -1, 3); progress.step("Loading core resource files"); indexMandatoryArchive("packages/core/data/2da.rim" , 10); indexMandatoryArchive("packages/core/data/al_char_stage.rim" , 11); indexMandatoryArchive("packages/core/data/artfp.erf" , 12); indexMandatoryArchive("packages/core/data/artfpwin32.erf" , 13); indexMandatoryArchive("packages/core/data/chargen.gpu.rim" , 14); indexMandatoryArchive("packages/core/data/chargen.rim" , 15); indexMandatoryArchive("packages/core/data/designerresources.rim" , 16); indexMandatoryArchive("packages/core/data/designerscripts.rim" , 17); indexMandatoryArchive("packages/core/data/face.erf" , 18); indexMandatoryArchive("packages/core/data/fonts.erf" , 19); indexMandatoryArchive("packages/core/data/global-uncompressed.rim" , 20); indexMandatoryArchive("packages/core/data/global.rim" , 21); indexMandatoryArchive("packages/core/data/globalani-core.rim" , 22); indexMandatoryArchive("packages/core/data/globalchargen-core.rim" , 23); indexMandatoryArchive("packages/core/data/globalchargendds-core.gpu.rim", 24); indexMandatoryArchive("packages/core/data/globaldds-core.gpu.rim" , 25); indexMandatoryArchive("packages/core/data/globalmao-core.rim" , 26); indexMandatoryArchive("packages/core/data/globalvfx-core.rim" , 27); indexMandatoryArchive("packages/core/data/gui.erf" , 28); indexMandatoryArchive("packages/core/data/guiexport.erf" , 29); indexMandatoryArchive("packages/core/data/layouts.erf" , 30); indexMandatoryArchive("packages/core/data/lightprobedata.erf" , 31); indexMandatoryArchive("packages/core/data/maoinit.erf" , 32); indexMandatoryArchive("packages/core/data/materialdefinitions.erf" , 33); indexMandatoryArchive("packages/core/data/materialobjects.rim" , 34); indexMandatoryArchive("packages/core/data/misc.erf" , 35); indexMandatoryArchive("packages/core/data/models.erf" , 36); indexMandatoryArchive("packages/core/data/pathfindingpatches.rim" , 37); indexMandatoryArchive("packages/core/data/resmetrics.erf" , 38); indexMandatoryArchive("packages/core/data/scripts.erf" , 39); indexMandatoryArchive("packages/core/data/shaders.erf" , 40); indexMandatoryArchive("packages/core/data/subqueuefiles.erf" , 41); indexMandatoryArchive("packages/core/data/summonwardog.gpu.rim" , 42); indexMandatoryArchive("packages/core/data/summonwardog.rim" , 43); indexMandatoryArchive("packages/core/data/tints.rim" , 44); progress.step("Loading core sound resource files"); indexMandatoryDirectory("packages/core/audio/sound/" , 0, 0, 100); indexMandatoryArchive ("packages/core/audio/sound/wwisebanks_core.erf" , 101); indexMandatoryArchive ("packages/core/audio/sound/wwisestreams_core.erf" , 102); progress.step("Indexing extra core movie resources"); indexMandatoryDirectory("packages/core/data/movies" , 0, 0, 151); progress.step("Indexing extra core talktables"); indexMandatoryDirectory("packages/core/data/talktables", 0, 0, 152); progress.step("Indexing extra core cursors"); indexMandatoryDirectory("packages/core/data/cursors" , 0, 0, 153); progress.step("Loading core patches"); indexMandatoryDirectory("packages/core/patch", 0, 0, 200); indexOptionalArchive ("packages/core/patch/patch.erf" , 201); indexOptionalArchive ("packages/core/patch/patch.rimp" , 202); progress.step("Indexing extra single-player campaign resources"); indexMandatoryDirectory("modules/campaign_base/data" , 0, 0, 250); progress.step("Indexing extra single-player campaign movie resources"); indexMandatoryDirectory("modules/campaign_base/data/movies" , 0, 0, 251); progress.step("Indexing extra single-player campaign sound resources"); indexMandatoryDirectory("modules/campaign_base/audio/sound" , 0, 0, 252); progress.step("Indexing extra single-player campaign talktables"); indexMandatoryDirectory("modules/campaign_base/data/talktables", 0, 0, 253); progress.step("Loading single-player campaign global resource files"); indexMandatoryArchive("modules/campaign_base/data/global-campaign_base.rim", 300); progress.step("Loading single-player campaign patches"); indexMandatoryDirectory("modules/campaign_base/patch" , 0, 0, 400); indexOptionalArchive ("modules/campaign_base/patch/patch.erf" , 401); indexOptionalArchive ("modules/campaign_base/patch/patch.rimp" , 402); // TODO: DLC loadLanguageFiles(progress, _language); progress.step("Registering file formats"); registerModelLoader(new DragonAge2ModelLoader); }
void NWN2Engine::init() { status("Setting base directory"); ResMan.registerDataBaseDir(_baseDirectory); status("Adding extra archive directories"); ResMan.addArchiveDir(Aurora::kArchiveZIP, "data"); ResMan.addArchiveDir(Aurora::kArchiveERF, "modules"); status("Loading main resource files"); indexMandatoryArchive(Aurora::kArchiveZIP, "2da.zip" , 1); indexMandatoryArchive(Aurora::kArchiveZIP, "actors.zip" , 2); indexMandatoryArchive(Aurora::kArchiveZIP, "animtags.zip" , 3); indexMandatoryArchive(Aurora::kArchiveZIP, "convo.zip" , 4); indexMandatoryArchive(Aurora::kArchiveZIP, "ini.zip" , 5); indexMandatoryArchive(Aurora::kArchiveZIP, "lod-merged.zip" , 6); indexMandatoryArchive(Aurora::kArchiveZIP, "music.zip" , 7); indexMandatoryArchive(Aurora::kArchiveZIP, "nwn2_materials.zip", 8); indexMandatoryArchive(Aurora::kArchiveZIP, "nwn2_models.zip" , 9); indexMandatoryArchive(Aurora::kArchiveZIP, "nwn2_vfx.zip" , 10); indexMandatoryArchive(Aurora::kArchiveZIP, "prefabs.zip" , 11); indexMandatoryArchive(Aurora::kArchiveZIP, "scripts.zip" , 12); indexMandatoryArchive(Aurora::kArchiveZIP, "sounds.zip" , 13); indexMandatoryArchive(Aurora::kArchiveZIP, "soundsets.zip" , 14); indexMandatoryArchive(Aurora::kArchiveZIP, "speedtree.zip" , 15); indexMandatoryArchive(Aurora::kArchiveZIP, "templates.zip" , 16); indexMandatoryArchive(Aurora::kArchiveZIP, "vo.zip" , 17); indexMandatoryArchive(Aurora::kArchiveZIP, "walkmesh.zip" , 18); status("Loading expansions resource files"); // Expansion 1: Mask of the Betrayer (MotB) indexOptionalArchive(Aurora::kArchiveZIP, "2da_x1.zip" , 20); indexOptionalArchive(Aurora::kArchiveZIP, "actors_x1.zip" , 21); indexOptionalArchive(Aurora::kArchiveZIP, "animtags_x1.zip" , 22); indexOptionalArchive(Aurora::kArchiveZIP, "convo_x1.zip" , 23); indexOptionalArchive(Aurora::kArchiveZIP, "ini_x1.zip" , 24); indexOptionalArchive(Aurora::kArchiveZIP, "lod-merged_x1.zip" , 25); indexOptionalArchive(Aurora::kArchiveZIP, "music_x1.zip" , 26); indexOptionalArchive(Aurora::kArchiveZIP, "nwn2_materials_x1.zip", 27); indexOptionalArchive(Aurora::kArchiveZIP, "nwn2_models_x1.zip" , 28); indexOptionalArchive(Aurora::kArchiveZIP, "nwn2_vfx_x1.zip" , 29); indexOptionalArchive(Aurora::kArchiveZIP, "prefabs_x1.zip" , 30); indexOptionalArchive(Aurora::kArchiveZIP, "scripts_x1.zip" , 31); indexOptionalArchive(Aurora::kArchiveZIP, "soundsets_x1.zip" , 32); indexOptionalArchive(Aurora::kArchiveZIP, "sounds_x1.zip" , 33); indexOptionalArchive(Aurora::kArchiveZIP, "speedtree_x1.zip" , 34); indexOptionalArchive(Aurora::kArchiveZIP, "templates_x1.zip" , 35); indexOptionalArchive(Aurora::kArchiveZIP, "vo_x1.zip" , 36); indexOptionalArchive(Aurora::kArchiveZIP, "walkmesh_x1.zip" , 37); // Expansion 2: Storm of Zehir (SoZ) indexOptionalArchive(Aurora::kArchiveZIP, "2da_x2.zip" , 40); indexOptionalArchive(Aurora::kArchiveZIP, "actors_x2.zip" , 41); indexOptionalArchive(Aurora::kArchiveZIP, "animtags_x2.zip" , 42); indexOptionalArchive(Aurora::kArchiveZIP, "lod-merged_x2.zip" , 43); indexOptionalArchive(Aurora::kArchiveZIP, "music_x2.zip" , 44); indexOptionalArchive(Aurora::kArchiveZIP, "nwn2_materials_x2.zip", 45); indexOptionalArchive(Aurora::kArchiveZIP, "nwn2_models_x2.zip" , 46); indexOptionalArchive(Aurora::kArchiveZIP, "nwn2_vfx_x2.zip" , 47); indexOptionalArchive(Aurora::kArchiveZIP, "prefabs_x2.zip" , 48); indexOptionalArchive(Aurora::kArchiveZIP, "scripts_x2.zip" , 49); indexOptionalArchive(Aurora::kArchiveZIP, "soundsets_x2.zip" , 50); indexOptionalArchive(Aurora::kArchiveZIP, "sounds_x2.zip" , 51); indexOptionalArchive(Aurora::kArchiveZIP, "speedtree_x2.zip" , 52); indexOptionalArchive(Aurora::kArchiveZIP, "templates_x2.zip" , 53); indexOptionalArchive(Aurora::kArchiveZIP, "vo_x2.zip" , 54); warning("TODO: Mysteries of Westgate (MoW) resource files"); warning("TODO: Patch resource files"); status("Indexing extra sound resources"); indexMandatoryDirectory("ambient" , 0, 0, 60); indexOptionalDirectory ("ambient_x1", 0, 0, 61); indexOptionalDirectory ("ambient_x2", 0, 0, 62); status("Indexing extra music resources"); indexMandatoryDirectory("music" , 0, 0, 63); indexOptionalDirectory ("music_x1" , 0, 0, 64); indexOptionalDirectory ("music_x2" , 0, 0, 65); status("Indexing extra movie resources"); indexMandatoryDirectory("movies" , 0, 0, 66); status("Indexing extra effects resources"); indexMandatoryDirectory("effects" , 0, 0, 67); status("Indexing extra character resources"); indexMandatoryDirectory("localvault", 0, 0, 68); status("Indexing extra UI resources"); indexMandatoryDirectory("ui" , 0, -1, 69); status("Indexing Windows-specific resources"); indexMandatoryArchive(Aurora::kArchiveEXE, "nwn2main.exe", 70); status("Indexing override files"); indexOptionalDirectory("override", 0, 0, 100); registerModelLoader(new NWN2ModelLoader); FontMan.setFormat(Graphics::Aurora::kFontFormatTTF); }