diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/tools/vmap4_extractor/adtfile.cpp | 44 | ||||
-rw-r--r-- | src/tools/vmap4_extractor/adtfile.h | 10 | ||||
-rw-r--r-- | src/tools/vmap4_extractor/gameobject_extract.cpp | 20 | ||||
-rw-r--r-- | src/tools/vmap4_extractor/model.cpp | 6 | ||||
-rw-r--r-- | src/tools/vmap4_extractor/vmapexport.cpp | 4 | ||||
-rw-r--r-- | src/tools/vmap4_extractor/wdtfile.cpp | 4 | ||||
-rw-r--r-- | src/tools/vmap4_extractor/wmo.cpp | 4 |
7 files changed, 44 insertions, 48 deletions
diff --git a/src/tools/vmap4_extractor/adtfile.cpp b/src/tools/vmap4_extractor/adtfile.cpp index 17b00514974..c07757295b8 100644 --- a/src/tools/vmap4_extractor/adtfile.cpp +++ b/src/tools/vmap4_extractor/adtfile.cpp @@ -40,31 +40,31 @@ char* GetPlainName(char* FileName) return FileName; } -void fixnamen(char* name, size_t len) +void FixNameCase(char* name, size_t len) { - if (len < 3) - return; + char* ptr = name + len - 1; - for (size_t i = 0; i < len - 3; i++) + //extension in lowercase + for (; *ptr != '.'; --ptr) + *ptr |= 0x20; + + for (; ptr >= name; --ptr) { - if (i > 0 && name[i] >= 'A' && name[i] <= 'Z' && isalpha(name[i-1])) - name[i] |= 0x20; - else if ((i == 0 || !isalpha(name[i-1])) && name[i]>='a' && name[i]<='z') - name[i] &= ~0x20; + if (ptr > name && *ptr >= 'A' && *ptr <= 'Z' && isalpha(*(ptr - 1))) + *ptr |= 0x20; + else if ((ptr == name || !isalpha(*(ptr - 1))) && *ptr >= 'a' && *ptr <= 'z') + *ptr &= ~0x20; } - //extension in lowercase - for (size_t i = len - 3; i < len; i++) - name[i] |= 0x20; } -void fixname2(char* name, size_t len) +void FixNameSpaces(char* name, size_t len) { if (len < 3) return; for (size_t i = 0; i < len - 3; i++) if (name[i] == ' ') - name[i] = '_'; + name[i] = '_'; } char* GetExtension(char* FileName) @@ -114,21 +114,22 @@ bool ADTFile::init(uint32 map_num, uint32 tileX, uint32 tileY) { if (size) { - char *buf = new char[size]; + char* buf = new char[size]; _file.read(buf, size); char *p = buf; while (p < buf + size) { - fixnamen(p, strlen(p)); + std::string path(p); + char* s = GetPlainName(p); - fixname2(s, strlen(s)); + FixNameCase(s, strlen(s)); + FixNameSpaces(s, strlen(s)); ModelInstanceNames.emplace_back(s); - std::string path(p); ExtractSingleModel(path); - p = p+strlen(p)+1; + p += strlen(p) + 1; } delete[] buf; } @@ -145,8 +146,9 @@ bool ADTFile::init(uint32 map_num, uint32 tileX, uint32 tileY) std::string path(p); char* s = GetPlainName(p); - fixnamen(s, strlen(s)); - fixname2(s, strlen(s)); + FixNameCase(s, strlen(s)); + FixNameSpaces(s, strlen(s)); + WmoInstanceNames.emplace_back(s); ExtractSingleWmo(path); @@ -184,9 +186,11 @@ bool ADTFile::init(uint32 map_num, uint32 tileX, uint32 tileY) } } } + //====================== _file.seek(nextpos); } + _file.close(); fclose(dirfile); return true; diff --git a/src/tools/vmap4_extractor/adtfile.h b/src/tools/vmap4_extractor/adtfile.h index d762e8aebe5..559d696b697 100644 --- a/src/tools/vmap4_extractor/adtfile.h +++ b/src/tools/vmap4_extractor/adtfile.h @@ -72,11 +72,11 @@ public: */ }; -const char * GetPlainName(const char * FileName); -char * GetPlainName(char * FileName); -char * GetExtension(char * FileName); -void fixnamen(char *name, size_t len); -void fixname2(char *name, size_t len); +char const* GetPlainName(char const* FileName); +char* GetPlainName(char* FileName); +char* GetExtension(char* FileName); +void FixNameCase(char* name, size_t len); +void FixNameSpaces(char* name, size_t len); //void fixMapNamen(char *name, size_t len); #endif diff --git a/src/tools/vmap4_extractor/gameobject_extract.cpp b/src/tools/vmap4_extractor/gameobject_extract.cpp index a025574eedb..d446483c0c7 100644 --- a/src/tools/vmap4_extractor/gameobject_extract.cpp +++ b/src/tools/vmap4_extractor/gameobject_extract.cpp @@ -31,18 +31,15 @@ bool ExtractSingleModel(std::string& fname) std::string extension = fname.substr(fname.length() - 4, 4); if (extension == ".mdx" || extension == ".MDX" || extension == ".mdl" || extension == ".MDL") { - // replace .mdx -> .m2 - fname.erase(fname.length()-2,2); + fname.erase(fname.length() - 2, 2); fname.append("2"); } - // >= 3.1.0 ADT MMDX section store filename.m2 filenames for corresponded .m2 file - // nothing do std::string originalName = fname; char* name = GetPlainName((char*)fname.c_str()); - fixnamen(name, strlen(name)); - fixname2(name, strlen(name)); + FixNameCase(name, strlen(name)); + FixNameSpaces(name, strlen(name)); std::string output(szWorkDirWmo); output += "/"; @@ -89,9 +86,9 @@ void ExtractGameobjectModels() if (path.length() < 4) continue; - fixnamen((char*)path.c_str(), path.size()); + FixNameCase((char*)path.c_str(), path.size()); char * name = GetPlainName((char*)path.c_str()); - fixname2(name, strlen(name)); + FixNameSpaces(name, strlen(name)); char * ch_ext = GetExtension(name); if (!ch_ext) @@ -106,15 +103,10 @@ void ExtractGameobjectModels() isWmo = 1; result = ExtractSingleWmo(path); } - else if (!strcmp(ch_ext, ".mdl")) - { - // TODO: extract .mdl files, if needed + else if (!strcmp(ch_ext, ".mdl")) // TODO: extract .mdl files, if needed continue; - } else //if (!strcmp(ch_ext, ".mdx") || !strcmp(ch_ext, ".m2")) - { result = ExtractSingleModel(path); - } if (result) { diff --git a/src/tools/vmap4_extractor/model.cpp b/src/tools/vmap4_extractor/model.cpp index 49e812916b3..431428d9e1b 100644 --- a/src/tools/vmap4_extractor/model.cpp +++ b/src/tools/vmap4_extractor/model.cpp @@ -47,7 +47,7 @@ bool Model::open() _unload(); memcpy(&header, f.getBuffer(), sizeof(ModelHeader)); - if(header.nBoundingTriangles > 0) + if (header.nBoundingTriangles > 0) { f.seek(0); f.seekRelative(header.ofsBoundingVertices); @@ -201,8 +201,8 @@ void Doodad::ExtractSet(WMODoodadData const& doodadData, ADT::MODF const& wmo, u std::string ModelInstName = GetPlainName(&doodadData.Paths[doodad.NameIndex]); uint32 nlen = ModelInstName.length(); - fixnamen(ModelInstName.data(), nlen); - fixname2(ModelInstName.data(), nlen); + FixNameCase(ModelInstName.data(), nlen); + FixNameSpaces(ModelInstName.data(), nlen); if (ModelInstName.ends_with(".mdx") || ModelInstName.ends_with(".mdl")) ModelInstName.replace(ModelInstName.length() - 2, 2, "2"); diff --git a/src/tools/vmap4_extractor/vmapexport.cpp b/src/tools/vmap4_extractor/vmapexport.cpp index 9c6270d23d4..60e515fe099 100644 --- a/src/tools/vmap4_extractor/vmapexport.cpp +++ b/src/tools/vmap4_extractor/vmapexport.cpp @@ -88,8 +88,8 @@ bool ExtractSingleWmo(std::string& fname) std::string originalName = fname; char* plain_name = GetPlainName(&fname[0]); - fixnamen(plain_name, strlen(plain_name)); - fixname2(plain_name, strlen(plain_name)); + FixNameCase(plain_name, strlen(plain_name)); + FixNameSpaces(plain_name, strlen(plain_name)); std::string szLocalFile = Trinity::StringFormat("{}/{}", szWorkDirWmo, plain_name); if (FileExists(szLocalFile.c_str())) diff --git a/src/tools/vmap4_extractor/wdtfile.cpp b/src/tools/vmap4_extractor/wdtfile.cpp index 3071926e035..c0a206d31fb 100644 --- a/src/tools/vmap4_extractor/wdtfile.cpp +++ b/src/tools/vmap4_extractor/wdtfile.cpp @@ -82,8 +82,8 @@ bool WDTFile::init(uint32 mapId) std::string path(p); char* s = wdtGetPlainName(p); - fixnamen(s, strlen(s)); - fixname2(s, strlen(s)); + FixNameCase(s, strlen(s)); + FixNameSpaces(s, strlen(s)); p = p + strlen(p) + 1; _wmoNames.push_back(s); diff --git a/src/tools/vmap4_extractor/wmo.cpp b/src/tools/vmap4_extractor/wmo.cpp index 4e7e0eb2e2d..5bd1f642061 100644 --- a/src/tools/vmap4_extractor/wmo.cpp +++ b/src/tools/vmap4_extractor/wmo.cpp @@ -89,8 +89,8 @@ bool WMORoot::open() std::string path = ptr; char* s = GetPlainName(ptr); - fixnamen(s, strlen(s)); - fixname2(s, strlen(s)); + FixNameCase(s, strlen(s)); + FixNameSpaces(s, strlen(s)); uint32 doodadNameIndex = ptr - f.getPointer(); ptr += path.length() + 1; |