aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2019-02-16 12:51:17 +0100
committerShauren <shauren.trinity@gmail.com>2019-02-23 22:00:04 +0100
commitfee666f02f379596e058110c1012d7a13a5eb6ca (patch)
tree48b42fd972980f6d44fabc1ea0d1090054a69ad8
parent98949b75edefc35f7e8c33bf91846e473f74f24c (diff)
Tools/Misc: Partial cherry-pick of 7b235ce6e4da0e9c19fa9c6306bc7a71c7fb905d
-rw-r--r--src/tools/vmap4_extractor/adtfile.cpp19
-rw-r--r--src/tools/vmap4_extractor/vmapexport.cpp53
-rw-r--r--src/tools/vmap4_extractor/wdtfile.cpp5
-rw-r--r--src/tools/vmap4_extractor/wmo.cpp2
-rw-r--r--src/tools/vmap4_extractor/wmo.h2
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