From d7c3969af77bb0d7bfef6015208f8bad6aa2f988 Mon Sep 17 00:00:00 2001 From: Ovahlord Date: Mon, 21 Jan 2019 11:07:29 +0100 Subject: [PATCH] Tools/Extracors: cleanup for vmap extractors to reduce differences between 434 and master branch --- src/tools/vmap4_extractor/adtfile.cpp | 20 ++---- src/tools/vmap4_extractor/vmapexport.cpp | 89 +++--------------------- 2 files changed, 15 insertions(+), 94 deletions(-) diff --git a/src/tools/vmap4_extractor/adtfile.cpp b/src/tools/vmap4_extractor/adtfile.cpp index 0bab6b7704b..cfa5d6ece6f 100644 --- a/src/tools/vmap4_extractor/adtfile.cpp +++ b/src/tools/vmap4_extractor/adtfile.cpp @@ -92,22 +92,6 @@ bool ADTFile::init(uint32 map_num, uint32 originalMapId) return false; uint32 size; - - std::string xMap; - std::string yMap; - - Adtfilename.erase(Adtfilename.find(".adt"),4); - std::string TempMapNumber; - TempMapNumber = Adtfilename.substr(Adtfilename.length()-6,6); - xMap = TempMapNumber.substr(TempMapNumber.find("_")+1,(TempMapNumber.find_last_of("_")-1) - (TempMapNumber.find("_"))); - yMap = TempMapNumber.substr(TempMapNumber.find_last_of("_")+1,(TempMapNumber.length()) - (TempMapNumber.find_last_of("_"))); - Adtfilename.erase((Adtfilename.length()-xMap.length()-yMap.length()-2), (xMap.length()+yMap.length()+2)); - //string AdtMapNumber = xMap + ' ' + yMap + ' ' + GetPlainName((char*)Adtfilename.c_str()); - //printf("Processing map %s...\n", AdtMapNumber.c_str()); - //printf("MapNumber = %s\n", TempMapNumber.c_str()); - //printf("xMap = %s\n", xMap.c_str()); - //printf("yMap = %s\n", yMap.c_str()); - std::string dirname = std::string(szWorkDirWmo) + "/dir_bin"; FILE* dirfile = fopen(dirname.c_str(), "ab"); if (!dirfile) @@ -170,12 +154,16 @@ bool ADTFile::init(uint32 map_num, uint32 originalMapId) int q = 0; while (p < buf + size) { + std::string path(p); + char* s = GetPlainName(p); FixNameCase(s, strlen(s)); FixNameSpaces(s, strlen(s)); WmoInstanceNames.emplace_back(s); + ExtractSingleWmo(path); + p += strlen(p) + 1; } delete[] buf; diff --git a/src/tools/vmap4_extractor/vmapexport.cpp b/src/tools/vmap4_extractor/vmapexport.cpp index 27b6b8bd6ea..f576e8a6da4 100644 --- a/src/tools/vmap4_extractor/vmapexport.cpp +++ b/src/tools/vmap4_extractor/vmapexport.cpp @@ -264,68 +264,6 @@ bool FileExists(char const* file) return false; } -// copied from contrib/extractor/System.cpp -void ReadLiquidMaterialTable() -{ - printf("Read LiquidMaterial.dbc file...\n"); - - DBCFile dbc(LocaleMpq, "DBFilesClient\\LiquidMaterial.dbc"); - if (!dbc.open()) - { - printf("Fatal error: Invalid LiquidMaterial.dbc file format!\n"); - exit(1); - } - - for (uint32 x = 0; x < dbc.getRecordCount(); ++x) - { - LiquidMaterialEntry& liquidType = LiquidMaterials[dbc.getRecord(x).getUInt(0)]; - liquidType.LVF = dbc.getRecord(x).getUInt(1); - } - - printf("Done! (" SZFMTD " LiquidMaterials loaded)\n", LiquidMaterials.size()); -} - -void ReadLiquidObjectTable() -{ - printf("Read LiquidObject.dbc file...\n"); - - DBCFile dbc(LocaleMpq, "DBFilesClient\\LiquidObject.dbc"); - if (!dbc.open()) - { - printf("Fatal error: Invalid LiquidObject.dbc file format!\n"); - exit(1); - } - - for (uint32 x = 0; x < dbc.getRecordCount(); ++x) - { - LiquidObjectEntry& liquidType = LiquidObjects[dbc.getRecord(x).getUInt(0)]; - liquidType.LiquidTypeID = dbc.getRecord(x).getUInt(3); - } - - printf("Done! (" SZFMTD " LiquidObjects loaded)\n", LiquidObjects.size()); -} - -void ReadLiquidTypeTable() -{ - printf("Read LiquidType.dbc file..."); - - DBCFile dbc(LocaleMpq, "DBFilesClient\\LiquidType.dbc"); - if (!dbc.open()) - { - printf("Fatal error: Invalid LiquidType.dbc file format!\n"); - exit(1); - } - - for (uint32 x = 0; x < dbc.getRecordCount(); ++x) - { - LiquidTypeEntry& liquidType = LiquidTypes[dbc.getRecord(x).getUInt(0)]; - liquidType.SoundBank = dbc.getRecord(x).getUInt(3); - liquidType.MaterialID = dbc.getRecord(x).getUInt(14); - } - - printf("Done! (" SZFMTD " LiquidTypes loaded)\n", LiquidTypes.size()); -} - bool ExtractWmo() { bool success = false; @@ -640,31 +578,27 @@ int main(int argc, char ** argv) break; } - ReadLiquidMaterialTable(); - ReadLiquidObjectTable(); - ReadLiquidTypeTable(); - - // extract data - if (success) - success = ExtractWmo(); + // Extract models, listed in GameObjectDisplayInfo.dbc + ExtractGameobjectModels(); //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx //map.dbc if (success) { - DBCFile* dbc = new DBCFile(LocaleMpq, "DBFilesClient\\Map.dbc"); - if (!dbc->open()) + printf("Read Map.dbc file... "); + + DBCFile dbc(LocaleMpq, "DBFilesClient\\Map.dbc"); + if (!dbc.open()) { - delete dbc; printf("FATAL ERROR: Map.dbc not found in data file.\n"); - return 1; + exit(1); } - for (uint32 x = 0; x < dbc->getRecordCount(); ++x) + for (uint32 x = 0; x < dbc.getRecordCount(); ++x) { - map_info& m = map_ids[dbc->getRecord(x).getUInt(0)]; + map_info& m = map_ids[dbc.getRecord(x).getUInt(0)]; - char const* map_name = dbc->getRecord(x).getString(1); + char const* map_name = dbc.getRecord(x).getString(1); size_t max_map_name_length = sizeof(m.name); if (strlen(map_name) >= max_map_name_length) { @@ -674,7 +608,7 @@ int main(int argc, char ** argv) strncpy(m.name, map_name, max_map_name_length); m.name[max_map_name_length - 1] = '\0'; - m.parent_id = int16(dbc->getRecord(x).getInt(19)); + m.parent_id = int16(dbc.getRecord(x).getInt(19)); if (m.parent_id >= 0) maps_that_are_parents.insert(m.parent_id); @@ -682,7 +616,6 @@ int main(int argc, char ** argv) } ParsMapFiles(); - ExtractGameobjectModels(); } SFileCloseArchive(LocaleMpq);