diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/tools/vmap4_extractor/adtfile.cpp | 19 | ||||
-rw-r--r-- | src/tools/vmap4_extractor/vmapexport.cpp | 53 | ||||
-rw-r--r-- | src/tools/vmap4_extractor/wdtfile.cpp | 5 | ||||
-rw-r--r-- | src/tools/vmap4_extractor/wmo.cpp | 2 | ||||
-rw-r--r-- | src/tools/vmap4_extractor/wmo.h | 2 |
5 files changed, 18 insertions, 63 deletions
diff --git a/src/tools/vmap4_extractor/adtfile.cpp b/src/tools/vmap4_extractor/adtfile.cpp index df7968264f1..5b07c5b683c 100644 --- a/src/tools/vmap4_extractor/adtfile.cpp +++ b/src/tools/vmap4_extractor/adtfile.cpp @@ -116,12 +116,12 @@ bool ADTFile::init(uint32 map_num, uint32 tileX, uint32 tileY) { char *buf = new char[size]; ADT.read(buf, size); - char *p=buf; - while (p<buf+size) + char *p = buf; + while (p < buf + size) { - fixnamen(p,strlen(p)); + fixnamen(p, strlen(p)); char* s = GetPlainName(p); - fixname2(s,strlen(s)); + fixname2(s, strlen(s)); ModelInstansName.push_back(s); @@ -139,14 +139,19 @@ bool ADTFile::init(uint32 map_num, uint32 tileX, uint32 tileY) { char* buf = new char[size]; ADT.read(buf, size); - char* p=buf; - while (p<buf+size) + char* p = buf; + while (p < buf + size) { + std::string path(p); + char* s = GetPlainName(p); fixnamen(s, strlen(s)); fixname2(s, strlen(s)); - p += strlen(p) + 1; WmoInstansName.push_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 d7aa561f909..e83698de620 100644 --- a/src/tools/vmap4_extractor/vmapexport.cpp +++ b/src/tools/vmap4_extractor/vmapexport.cpp @@ -54,7 +54,6 @@ typedef struct }map_id; std::vector<map_id> map_ids; -std::vector<uint16> LiqType; uint32 map_count; char output_path[128]="."; char input_path[1024]="."; @@ -88,51 +87,6 @@ void strToLower(char* str) } } -// copied from contrib/extractor/System.cpp -void ReadLiquidTypeTableDBC() -{ - printf("Read LiquidType.dbc file..."); - DBCFile dbc("DBFilesClient\\LiquidType.dbc"); - if(!dbc.open()) - { - printf("Fatal error: Invalid LiquidType.dbc file format!\n"); - exit(1); - } - - size_t LiqType_count = dbc.getRecordCount(); - size_t LiqType_maxid = dbc.getRecord(LiqType_count - 1).getUInt(0); - LiqType.resize(LiqType_maxid + 1, 0xFFFF); - - for(uint32 x = 0; x < LiqType_count; ++x) - LiqType[dbc.getRecord(x).getUInt(0)] = dbc.getRecord(x).getUInt(3); - - printf("Done! (%u LiqTypes loaded)\n", (unsigned int)LiqType_count); -} - -bool ExtractWmo() -{ - bool success = true; - - //char const* ParsArchiveNames[] = {"patch-2.MPQ", "patch.MPQ", "common.MPQ", "expansion.MPQ"}; - - for (ArchiveSet::const_iterator ar_itr = gOpenArchives.begin(); ar_itr != gOpenArchives.end() && success; ++ar_itr) - { - std::vector<std::string> filelist; - - (*ar_itr)->GetFileListTo(filelist); - for (std::vector<std::string>::iterator fname = filelist.begin(); fname != filelist.end() && success; ++fname) - { - if (fname->find(".wmo") != std::string::npos) - success = ExtractSingleWmo(*fname); - } - } - - if (success) - printf("\nExtract wmo complete (No (fatal) errors)\n"); - - return success; -} - bool ExtractSingleWmo(std::string& fname) { // Copy files from archive @@ -164,7 +118,7 @@ bool ExtractSingleWmo(std::string& fname) return true; bool file_ok = true; - std::cout << "Extracting " << fname << std::endl; + printf("Extracting %s\n", fname.c_str()); WMORoot froot(fname); if(!froot.open()) { @@ -482,11 +436,6 @@ int main(int argc, char ** argv) printf("FATAL ERROR: None MPQ archive found by path '%s'. Use -d option with proper path.\n", input_path); return 1; } - ReadLiquidTypeTableDBC(); - - // extract data - if (success) - success = ExtractWmo(); //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx //map.dbc diff --git a/src/tools/vmap4_extractor/wdtfile.cpp b/src/tools/vmap4_extractor/wdtfile.cpp index b3bd68bbf0c..c46b4a7c6ab 100644 --- a/src/tools/vmap4_extractor/wdtfile.cpp +++ b/src/tools/vmap4_extractor/wdtfile.cpp @@ -79,10 +79,15 @@ bool WDTFile::init(char* /*map_id*/, unsigned int mapID) char *p = buf; while (p < buf + size) { + std::string path(p); + char* s = wdtGetPlainName(p); fixnamen(s, strlen(s)); + fixname2(s, strlen(s)); p = p + strlen(p) + 1; gWmoInstansName.push_back(s); + + ExtractSingleWmo(path); } delete[] buf; } diff --git a/src/tools/vmap4_extractor/wmo.cpp b/src/tools/vmap4_extractor/wmo.cpp index 5527e84e693..8be14bc38ee 100644 --- a/src/tools/vmap4_extractor/wmo.cpp +++ b/src/tools/vmap4_extractor/wmo.cpp @@ -27,8 +27,6 @@ #undef min #undef max -extern std::vector<uint16> LiqType; - WMORoot::WMORoot(std::string &filename) : filename(filename), color(0), nTextures(0), nGroups(0), nPortals(0), nLights(0), nDoodadNames(0), nDoodadDefs(0), nDoodadSets(0), RootWMOID(0), flags(0) diff --git a/src/tools/vmap4_extractor/wmo.h b/src/tools/vmap4_extractor/wmo.h index f8fd7bdc966..1c68b49ee49 100644 --- a/src/tools/vmap4_extractor/wmo.h +++ b/src/tools/vmap4_extractor/wmo.h @@ -136,8 +136,6 @@ public: uint32 indx, id; WMOInstance(MPQFile&f , char const* WmoInstName, uint32 mapID, uint32 tileX, uint32 tileY, FILE* pDirfile); - - static void reset(); }; #endif |