diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/tools/vmap3_extractor/adtfile.cpp | 9 | ||||
-rw-r--r-- | src/tools/vmap3_extractor/model.cpp | 2 | ||||
-rw-r--r-- | src/tools/vmap3_extractor/mpq_libmpq.cpp | 2 | ||||
-rw-r--r-- | src/tools/vmap3_extractor/vmapexport.cpp | 40 | ||||
-rw-r--r-- | src/tools/vmap3_extractor/vmapexport.h | 2 | ||||
-rw-r--r-- | src/tools/vmap3_extractor/wdtfile.cpp | 9 | ||||
-rw-r--r-- | src/tools/vmap3_extractor/wmo.cpp | 3 |
7 files changed, 37 insertions, 30 deletions
diff --git a/src/tools/vmap3_extractor/adtfile.cpp b/src/tools/vmap3_extractor/adtfile.cpp index 055408edca6..314255d3a58 100644 --- a/src/tools/vmap3_extractor/adtfile.cpp +++ b/src/tools/vmap3_extractor/adtfile.cpp @@ -1,3 +1,4 @@ +#include "vmapexport.h" #include "adtfile.h" #include <algorithm> @@ -69,12 +70,12 @@ bool ADTFile::init(uint32 map_num, uint32 tileX, uint32 tileY) //printf("xMap = %s\n", xMap.c_str()); //printf("yMap = %s\n", yMap.c_str()); - const char dirname[] = "Buildings/dir_bin"; + std::string dirname = std::string(szWorkDirWmo) + "/dir_bin"; FILE *dirfile; - dirfile = fopen(dirname, "ab"); + dirfile = fopen(dirname.c_str(), "ab"); if(!dirfile) { - printf("Can't open dirfile!'%s'\n", dirname); + printf("Can't open dirfile!'%s'\n", dirname.c_str()); return false; } @@ -125,7 +126,7 @@ bool ADTFile::init(uint32 map_num, uint32 tileX, uint32 tileY) // nothing do char szLocalFile[1024]; - snprintf(szLocalFile, 1024, "./Buildings/%s", s); + snprintf(szLocalFile, 1024, "%s/%s", szWorkDirWmo, s); FILE * output = fopen(szLocalFile,"rb"); if(!output) { diff --git a/src/tools/vmap3_extractor/model.cpp b/src/tools/vmap3_extractor/model.cpp index b914ed96406..a2493f7e571 100644 --- a/src/tools/vmap3_extractor/model.cpp +++ b/src/tools/vmap3_extractor/model.cpp @@ -134,7 +134,7 @@ ModelInstance::ModelInstance(MPQFile &f,const char* ModelInstName, uint32 mapID, sc = scale / 1024.0f; char tempname[512]; - sprintf(tempname, "./Buildings/%s", ModelInstName); + sprintf(tempname, "%s/%s", szWorkDirWmo, ModelInstName); FILE *input; input = fopen(tempname, "r+b"); diff --git a/src/tools/vmap3_extractor/mpq_libmpq.cpp b/src/tools/vmap3_extractor/mpq_libmpq.cpp index 72a9de460eb..2d2014e9594 100644 --- a/src/tools/vmap3_extractor/mpq_libmpq.cpp +++ b/src/tools/vmap3_extractor/mpq_libmpq.cpp @@ -57,7 +57,7 @@ MPQFile::MPQFile(const char* filename): // HACK: in patch.mpq some files don't want to open and give 1 for filesize if (size<=1) { - printf("warning: file %s has size %d; cannot read.\n", filename, size); + // printf("info: file %s has size %d; considered dummy file.\n", filename, size); eof = true; buffer = 0; return; diff --git a/src/tools/vmap3_extractor/vmapexport.cpp b/src/tools/vmap3_extractor/vmapexport.cpp index 06f5282b19b..ff81da52219 100644 --- a/src/tools/vmap3_extractor/vmapexport.cpp +++ b/src/tools/vmap3_extractor/vmapexport.cpp @@ -1,16 +1,3 @@ -/*****************************************************************************/ -/* StormLibTest.cpp Copyright (c) Ladislav Zezula 2003 */ -/*---------------------------------------------------------------------------*/ -/* This module uses very brutal test methods for StormLib. It extracts all */ -/* files from the archive with Storm.dll and with stormlib and compares them,*/ -/* then tries to build a copy of the entire archive, then removes a few files*/ -/* from the archive and adds them back, then compares the two archives, ... */ -/*---------------------------------------------------------------------------*/ -/* Date Ver Who Comment */ -/* -------- ---- --- ------- */ -/* 25.03.03 1.00 Lad The first version of StormLibTest.cpp */ -/*****************************************************************************/ - #define _CRT_SECURE_NO_DEPRECATE #include <cstdio> #include <iostream> @@ -68,8 +55,7 @@ bool preciseVectorData = false; // Constants //static const char * szWorkDirMaps = ".\\Maps"; -static const char * szWorkDirWmo = "./Buildings"; - +const char * szWorkDirWmo = "./Buildings"; // Local testing functions static void clreol() @@ -114,7 +100,7 @@ void ReadLiquidTypeTableDBC() 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", LiqType_count); + printf("Done! (%u LiqTypes loaded)\n", (unsigned int)LiqType_count); } int ExtractWmo() @@ -236,18 +222,22 @@ void ParsMapFiles() WDTFile WDT(fn,map_ids[i].name); if(WDT.init(id, map_ids[i].id)) { + printf("Processing Map %u\n[", map_ids[i].id); for (int x=0; x<64; ++x) { for (int y=0; y<64; ++y) { - if (ADTFile*ADT = WDT.GetMap(x,y)) + if (ADTFile *ADT = WDT.GetMap(x,y)) { //sprintf(id_filename,"%02u %02u %03u",x,y,map_ids[i].id);//!!!!!!!!! ADT->init(map_ids[i].id, x, y); delete ADT; } } + printf("#"); + fflush(stdout); } + printf("]\n"); } } } @@ -451,6 +441,22 @@ int main(int argc, char ** argv) if(!processArgv(argc, argv, versionString)) return 1; + // some simple check if working dir is dirty + else + { + std::string sdir = std::string(szWorkDirWmo) + "/dir"; + std::string sdir_bin = std::string(szWorkDirWmo) + "/dir_bin"; + struct stat status; + if (!stat(sdir.c_str(), &status) || !stat(sdir_bin.c_str(), &status)) + { + printf("Your output directory seems to be polluted, please use an empty directory!\n"); + printf("<press return to exit>"); + char garbage[2]; + scanf("%c", garbage); + return 1; + } + } + printf("Extract %s. Beginning work ....\n",versionString); //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx // Create the working directory diff --git a/src/tools/vmap3_extractor/vmapexport.h b/src/tools/vmap3_extractor/vmapexport.h index 625bc930882..fa9a609abf5 100644 --- a/src/tools/vmap3_extractor/vmapexport.h +++ b/src/tools/vmap3_extractor/vmapexport.h @@ -8,4 +8,6 @@ enum ModelFlags MOD_HAS_BOUND = 1<<2 }; +extern const char * szWorkDirWmo; + #endif diff --git a/src/tools/vmap3_extractor/wdtfile.cpp b/src/tools/vmap3_extractor/wdtfile.cpp index 7f81af72931..cd24ef0346c 100644 --- a/src/tools/vmap3_extractor/wdtfile.cpp +++ b/src/tools/vmap3_extractor/wdtfile.cpp @@ -1,5 +1,4 @@ -#define __STORMLIB_SELF__ - +#include "vmapexport.h" #include "wdtfile.h" #include "adtfile.h" #include <cstdio> @@ -29,12 +28,12 @@ bool WDTFile::init(char *map_id, unsigned int mapID) char fourcc[5]; uint32 size; - const char dirname[] = "Buildings/dir_bin"; + std::string dirname = std::string(szWorkDirWmo) + "/dir_bin"; FILE *dirfile; - dirfile = fopen(dirname, "ab"); + dirfile = fopen(dirname.c_str(), "ab"); if(!dirfile) { - printf("Can't open dirfile!'%s'\n", dirname); + printf("Can't open dirfile!'%s'\n", dirname.c_str()); return false; } diff --git a/src/tools/vmap3_extractor/wmo.cpp b/src/tools/vmap3_extractor/wmo.cpp index 508391be675..650d2279f28 100644 --- a/src/tools/vmap3_extractor/wmo.cpp +++ b/src/tools/vmap3_extractor/wmo.cpp @@ -1,4 +1,3 @@ - #include "vmapexport.h" #include "wmo.h" #include "vec3d.h" @@ -443,7 +442,7 @@ WMOInstance::WMOInstance(MPQFile &f,const char* WmoInstName, uint32 mapID, uint3 //-----------add_in _dir_file---------------- char tempname[512]; - sprintf(tempname, "Buildings/%s", WmoInstName); + sprintf(tempname, "%s/%s", szWorkDirWmo, WmoInstName); FILE *input; input = fopen(tempname, "r+b"); |