diff --git a/src/tools/CMakeLists.txt b/src/tools/CMakeLists.txt index 181abb9f9..6cd00e18f 100644 --- a/src/tools/CMakeLists.txt +++ b/src/tools/CMakeLists.txt @@ -17,32 +17,5 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -#Used by vmap-assembler and mmap-generator -include_directories( - ${CMAKE_SOURCE_DIR}/src/shared - ${CMAKE_SOURCE_DIR}/src/game/vmap - ${CMAKE_SOURCE_DIR}/dep/g3dlite - ${CMAKE_SOURCE_DIR}/src/framework - ${ACE_INCLUDE_DIR} -) -add_definitions(-DMMAP_GENERATOR -DNO_CORE_FUNCS) - -add_library(vmap - ${CMAKE_SOURCE_DIR}/src/game/vmap/BIH.cpp - ${CMAKE_SOURCE_DIR}/src/game/vmap/VMapManager2.cpp - ${CMAKE_SOURCE_DIR}/src/game/vmap/MapTree.cpp - ${CMAKE_SOURCE_DIR}/src/game/vmap/TileAssembler.cpp - ${CMAKE_SOURCE_DIR}/src/game/vmap/WorldModel.cpp - ${CMAKE_SOURCE_DIR}/src/game/vmap/ModelInstance.cpp -) - -target_link_libraries(vmap g3dlite zlib) - -# Used for install targets in subdirs -set(TOOLS_DIR "tools") - -add_subdirectory(Movemap-Generator) -add_subdirectory(map-extractor) -add_subdirectory(vmap-assembler) -add_subdirectory(vmap-extractor) +add_subdirectory(Extractor_projects) diff --git a/src/tools/Extractor_Binaries/make_vmaps.bat b/src/tools/Extractor_Binaries/make_vmaps.bat new file mode 100644 index 000000000..aca4c651b --- /dev/null +++ b/src/tools/Extractor_Binaries/make_vmaps.bat @@ -0,0 +1,46 @@ +@echo off +cls +echo. +echo Welcome to the vmaps extractor and assembler +echo. +echo You need 2GB of free space in disk, CTRL+C to stop process +echo Hit Enter to start . . . +pause>nul +cls +echo. +echo. +echo. +IF EXIST buildings\dir (ECHO The buildings folder already exist do you want to delete it? +echo If YES hit Enter to continue if no CLOSE the program now! . . . +pause>nul +DEL /S /Q buildings) +vmapExtractor.exe +cls +echo. +echo. +echo. +IF NOT %ERRORLEVEL% LEQ 1 (echo The vmap extract tool finalized with errors. +echo Hit Enter to continue . . . +pause>nul) +cls +echo. +echo. +echo. +echo Vmaps extracted check log.txt for errors, now it's time to assemble the vmaps press any key to continue . . . +pause>nul +md vmaps +vmap_assembler.exe buildings vmaps +cls +echo. +echo. +echo. +IF NOT %ERRORLEVEL% LEQ 1 (echo The vmap assembler tool finalized with errors. +echo Hit Enter to continue . . . +pause>nul) +cls +echo. +echo. +echo. +echo Process done! copy vmaps folder to the MaNGOS main directory +echo Press any key to exit . . . +pause>nul diff --git a/src/tools/Extractor_Binaries/mmap_excluded.txt b/src/tools/Extractor_Binaries/mmap_excluded.txt new file mode 100644 index 000000000..a913e57a4 --- /dev/null +++ b/src/tools/Extractor_Binaries/mmap_excluded.txt @@ -0,0 +1 @@ +13 25 29 35 37 42 44 169 451 598 diff --git a/src/tools/Extractor_projects/CMakeLists.txt b/src/tools/Extractor_projects/CMakeLists.txt new file mode 100644 index 000000000..cc0b0031d --- /dev/null +++ b/src/tools/Extractor_projects/CMakeLists.txt @@ -0,0 +1,52 @@ +# MaNGOS is a full featured server for World of Warcraft, supporting +# the following clients: 1.12.x, 2.4.3, 3.3.5a, 4.3.4a and 5.4.8 +# +# Copyright (C) 2005-2016 MaNGOS project +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +#Used by vmap-assembler and mmap-generator +include_directories( + ${CMAKE_SOURCE_DIR}/src/shared + ${CMAKE_SOURCE_DIR}/src/game/vmap + ${CMAKE_SOURCE_DIR}/dep/g3dlite + ${CMAKE_SOURCE_DIR}/src/framework + ${ACE_INCLUDE_DIR} +) + +add_definitions(-DMMAP_GENERATOR -DNO_CORE_FUNCS) + +add_library(vmap + ${CMAKE_SOURCE_DIR}/src/game/vmap/BIH.cpp + ${CMAKE_SOURCE_DIR}/src/game/vmap/VMapManager2.cpp + ${CMAKE_SOURCE_DIR}/src/game/vmap/MapTree.cpp + ${CMAKE_SOURCE_DIR}/src/game/vmap/TileAssembler.cpp + ${CMAKE_SOURCE_DIR}/src/game/vmap/WorldModel.cpp + ${CMAKE_SOURCE_DIR}/src/game/vmap/ModelInstance.cpp +) + +target_link_libraries(vmap g3dlite zlib) + +# Used for install targets in subdirs +set(TOOLS_DIR "tools") + +add_subdirectory(Movemap-Generator) +add_subdirectory(map-extractor) +add_subdirectory(vmap-assembler) +add_subdirectory(vmap-extractor) + + + + diff --git a/src/tools/Movemap-Generator/.gitignore b/src/tools/Extractor_projects/Movemap-Generator/.gitignore similarity index 100% rename from src/tools/Movemap-Generator/.gitignore rename to src/tools/Extractor_projects/Movemap-Generator/.gitignore diff --git a/src/tools/Movemap-Generator/CMakeLists.txt b/src/tools/Extractor_projects/Movemap-Generator/CMakeLists.txt similarity index 100% rename from src/tools/Movemap-Generator/CMakeLists.txt rename to src/tools/Extractor_projects/Movemap-Generator/CMakeLists.txt diff --git a/src/tools/Movemap-Generator/IntermediateValues.cpp b/src/tools/Extractor_projects/Movemap-Generator/IntermediateValues.cpp similarity index 100% rename from src/tools/Movemap-Generator/IntermediateValues.cpp rename to src/tools/Extractor_projects/Movemap-Generator/IntermediateValues.cpp diff --git a/src/tools/Movemap-Generator/IntermediateValues.h b/src/tools/Extractor_projects/Movemap-Generator/IntermediateValues.h similarity index 100% rename from src/tools/Movemap-Generator/IntermediateValues.h rename to src/tools/Extractor_projects/Movemap-Generator/IntermediateValues.h diff --git a/src/tools/Movemap-Generator/MMapCommon.h b/src/tools/Extractor_projects/Movemap-Generator/MMapCommon.h similarity index 100% rename from src/tools/Movemap-Generator/MMapCommon.h rename to src/tools/Extractor_projects/Movemap-Generator/MMapCommon.h diff --git a/src/tools/Movemap-Generator/MangosMap.h b/src/tools/Extractor_projects/Movemap-Generator/MangosMap.h similarity index 100% rename from src/tools/Movemap-Generator/MangosMap.h rename to src/tools/Extractor_projects/Movemap-Generator/MangosMap.h diff --git a/src/tools/Movemap-Generator/MapBuilder.cpp b/src/tools/Extractor_projects/Movemap-Generator/MapBuilder.cpp similarity index 100% rename from src/tools/Movemap-Generator/MapBuilder.cpp rename to src/tools/Extractor_projects/Movemap-Generator/MapBuilder.cpp diff --git a/src/tools/Movemap-Generator/MapBuilder.h b/src/tools/Extractor_projects/Movemap-Generator/MapBuilder.h similarity index 100% rename from src/tools/Movemap-Generator/MapBuilder.h rename to src/tools/Extractor_projects/Movemap-Generator/MapBuilder.h diff --git a/src/tools/Movemap-Generator/Movemap-Generator.rc b/src/tools/Extractor_projects/Movemap-Generator/Movemap-Generator.rc similarity index 100% rename from src/tools/Movemap-Generator/Movemap-Generator.rc rename to src/tools/Extractor_projects/Movemap-Generator/Movemap-Generator.rc diff --git a/src/tools/Movemap-Generator/TerrainBuilder.cpp b/src/tools/Extractor_projects/Movemap-Generator/TerrainBuilder.cpp similarity index 100% rename from src/tools/Movemap-Generator/TerrainBuilder.cpp rename to src/tools/Extractor_projects/Movemap-Generator/TerrainBuilder.cpp diff --git a/src/tools/Movemap-Generator/TerrainBuilder.h b/src/tools/Extractor_projects/Movemap-Generator/TerrainBuilder.h similarity index 100% rename from src/tools/Movemap-Generator/TerrainBuilder.h rename to src/tools/Extractor_projects/Movemap-Generator/TerrainBuilder.h diff --git a/src/tools/Movemap-Generator/VMapExtensions.cpp b/src/tools/Extractor_projects/Movemap-Generator/VMapExtensions.cpp similarity index 100% rename from src/tools/Movemap-Generator/VMapExtensions.cpp rename to src/tools/Extractor_projects/Movemap-Generator/VMapExtensions.cpp diff --git a/src/tools/Movemap-Generator/generator.cpp b/src/tools/Extractor_projects/Movemap-Generator/generator.cpp similarity index 100% rename from src/tools/Movemap-Generator/generator.cpp rename to src/tools/Extractor_projects/Movemap-Generator/generator.cpp diff --git a/src/tools/Movemap-Generator/mmap_extract.py b/src/tools/Extractor_projects/Movemap-Generator/mmap_extract.py similarity index 100% rename from src/tools/Movemap-Generator/mmap_extract.py rename to src/tools/Extractor_projects/Movemap-Generator/mmap_extract.py diff --git a/src/tools/Movemap-Generator/offmesh_example.txt b/src/tools/Extractor_projects/Movemap-Generator/offmesh_example.txt similarity index 100% rename from src/tools/Movemap-Generator/offmesh_example.txt rename to src/tools/Extractor_projects/Movemap-Generator/offmesh_example.txt diff --git a/src/tools/Movemap-Generator/readme b/src/tools/Extractor_projects/Movemap-Generator/readme similarity index 100% rename from src/tools/Movemap-Generator/readme rename to src/tools/Extractor_projects/Movemap-Generator/readme diff --git a/src/tools/Extractor_projects/README.md b/src/tools/Extractor_projects/README.md new file mode 100644 index 000000000..d239f5b4b --- /dev/null +++ b/src/tools/Extractor_projects/README.md @@ -0,0 +1,11 @@ +## Unified Extractor Projects + +The submodule contains the unified Extractors for MaNGOS. + +This initially Supports:- + +* MaNGOS Zero + +* MaNGOS One + +* MaNGOS Two diff --git a/src/tools/map-extractor/.gitignore b/src/tools/Extractor_projects/map-extractor/.gitignore similarity index 100% rename from src/tools/map-extractor/.gitignore rename to src/tools/Extractor_projects/map-extractor/.gitignore diff --git a/src/tools/map-extractor/CMakeLists.txt b/src/tools/Extractor_projects/map-extractor/CMakeLists.txt similarity index 75% rename from src/tools/map-extractor/CMakeLists.txt rename to src/tools/Extractor_projects/map-extractor/CMakeLists.txt index b4b8f4ca9..2a8d45a66 100644 --- a/src/tools/map-extractor/CMakeLists.txt +++ b/src/tools/Extractor_projects/map-extractor/CMakeLists.txt @@ -29,9 +29,14 @@ endif() include_directories( ${CMAKE_SOURCE_DIR}/dep/StormLib/src ${CMAKE_SOURCE_DIR}/dep/loadlib + ${CMAKE_SOURCE_DIR}/src/tools/Extractor_projects/shared ) -add_executable(${EXECUTABLE_NAME} dbcfile.cpp System.cpp ${EXECUTABLE_SRCS}) +set(SOURCES + ${CMAKE_SOURCE_DIR}/src/tools/Extractor_projects/shared/ExtractorCommon.cpp +) + +add_executable(${EXECUTABLE_NAME} dbcfile.cpp System.cpp ${SOURCES} ${EXECUTABLE_SRCS}) target_link_libraries(${EXECUTABLE_NAME} loadlib StormLib) @@ -58,12 +63,12 @@ endif() #install documentation and generation scripts install( FILES - "${CMAKE_CURRENT_SOURCE_DIR}/../Extractor_Binaries/ExtractResources.sh" - "${CMAKE_CURRENT_SOURCE_DIR}/../Extractor_Binaries/make_vmaps.bat" - "${CMAKE_CURRENT_SOURCE_DIR}/../Extractor_Binaries/mmap_excluded.txt" - "${CMAKE_CURRENT_SOURCE_DIR}/../Extractor_Binaries/MoveMapGen.sh" - "${CMAKE_CURRENT_SOURCE_DIR}/../Extractor_Binaries/offmesh.txt" - "${CMAKE_CURRENT_SOURCE_DIR}/../Extractor_Binaries/README.txt" + "${CMAKE_CURRENT_SOURCE_DIR}/../../Extractor_Binaries/ExtractResources.sh" + "${CMAKE_CURRENT_SOURCE_DIR}/../../Extractor_Binaries/make_vmaps.bat" + "${CMAKE_CURRENT_SOURCE_DIR}/../../Extractor_Binaries/mmap_excluded.txt" + "${CMAKE_CURRENT_SOURCE_DIR}/../../Extractor_Binaries/MoveMapGen.sh" + "${CMAKE_CURRENT_SOURCE_DIR}/../../Extractor_Binaries/offmesh.txt" + "${CMAKE_CURRENT_SOURCE_DIR}/../../Extractor_Binaries/README.txt" DESTINATION "${BIN_DIR}/${TOOLS_DIR}" ) @@ -73,13 +78,13 @@ if( WIN32 ) add_custom_command(TARGET ${EXECUTABLE_NAME} POST_BUILD COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_BINARY_DIR}/bin/$(ConfigurationName)/tools/" - COMMAND ${CMAKE_COMMAND} -E copy_directory "${CMAKE_CURRENT_SOURCE_DIR}/../Extractor_Binaries" "${CMAKE_BINARY_DIR}/bin/$(ConfigurationName)/tools/" + COMMAND ${CMAKE_COMMAND} -E copy_directory "${CMAKE_CURRENT_SOURCE_DIR}/../../Extractor_Binaries" "${CMAKE_BINARY_DIR}/bin/$(ConfigurationName)/tools/" ) elseif ( MINGW ) add_custom_command(TARGET ${EXECUTABLE_NAME} POST_BUILD COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_BINARY_DIR}/bin/tools/" - COMMAND ${CMAKE_COMMAND} -E copy_directory "${CMAKE_CURRENT_SOURCE_DIR}/../Extractor_Binaries" "${CMAKE_BINARY_DIR}/bin/tools/" + COMMAND ${CMAKE_COMMAND} -E copy_directory "${CMAKE_CURRENT_SOURCE_DIR}/../../Extractor_Binaries" "${CMAKE_BINARY_DIR}/bin/tools/" ) endif() endif() \ No newline at end of file diff --git a/src/tools/map-extractor/README.md b/src/tools/Extractor_projects/map-extractor/README.md similarity index 100% rename from src/tools/map-extractor/README.md rename to src/tools/Extractor_projects/map-extractor/README.md diff --git a/src/tools/map-extractor/System.cpp b/src/tools/Extractor_projects/map-extractor/System.cpp similarity index 99% rename from src/tools/map-extractor/System.cpp rename to src/tools/Extractor_projects/map-extractor/System.cpp index 473067d0d..41674b604 100644 --- a/src/tools/map-extractor/System.cpp +++ b/src/tools/Extractor_projects/map-extractor/System.cpp @@ -44,6 +44,8 @@ #include "sl/wdt.h" #include +#include "../shared/ExtractorCommon.h" + #ifndef WIN32 #include #endif @@ -101,21 +103,13 @@ float CONF_float_to_int16_limit = 2048.0f; // Max accuracy = val/65536 float CONF_flat_height_delta_limit = 0.005f; // If max - min less this value - surface is flat float CONF_flat_liquid_delta_limit = 0.001f; // If max - min less this value - liquid surface is flat -static char* const langs[] = {"enGB", "enUS", "deDE", "esES", "frFR", "koKR", "zhCN", "zhTW", "enCN", "enTW", "esMX", "ruRU" }; +// static char* const langs[] = {"enGB", "enUS", "deDE", "esES", "frFR", "koKR", "zhCN", "zhTW", "enCN", "enTW", "esMX", "ruRU" }; #define LANG_COUNT 12 #define MIN_SUPPORTED_BUILD 15595 // code expect mpq files and mpq content files structure for this build or later #define EXPANSION_COUNT 3 #define WORLD_COUNT 2 -void CreateDir(const std::string& Path) -{ -#ifdef WIN32 - _mkdir(Path.c_str()); -#else - mkdir(Path.c_str(), 0777); -#endif -} bool FileExists(const char* FileName) { diff --git a/src/tools/map-extractor/dbcfile.cpp b/src/tools/Extractor_projects/map-extractor/dbcfile.cpp similarity index 100% rename from src/tools/map-extractor/dbcfile.cpp rename to src/tools/Extractor_projects/map-extractor/dbcfile.cpp diff --git a/src/tools/map-extractor/dbcfile.h b/src/tools/Extractor_projects/map-extractor/dbcfile.h similarity index 100% rename from src/tools/map-extractor/dbcfile.h rename to src/tools/Extractor_projects/map-extractor/dbcfile.h diff --git a/src/tools/map-extractor/map-extractor.rc b/src/tools/Extractor_projects/map-extractor/map-extractor.rc similarity index 100% rename from src/tools/map-extractor/map-extractor.rc rename to src/tools/Extractor_projects/map-extractor/map-extractor.rc diff --git a/src/tools/Extractor_projects/shared/ExtractorCommon.cpp b/src/tools/Extractor_projects/shared/ExtractorCommon.cpp new file mode 100644 index 000000000..b0c97122e --- /dev/null +++ b/src/tools/Extractor_projects/shared/ExtractorCommon.cpp @@ -0,0 +1,572 @@ +/** + * MaNGOS is a full featured server for World of Warcraft, supporting + * the following clients: 1.12.x, 2.4.3, 3.3.5a, 4.3.4a and 5.4.8 + * + * Copyright (C) 2005-2016 MaNGOS project + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * World of Warcraft, and all World of Warcraft or Warcraft art, images, + * and lore are copyrighted by Blizzard Entertainment, Inc. + */ + +#include +#include +#include +#include +#include +#include "ExtractorCommon.h" + +#ifdef WIN32 +#include +#else +#include +#endif + +#include + +#ifndef WIN32 +#include + /* This isn't the nicest way to do things.. + * TODO: Fix this with snprintf instead and check that it still works + */ +#define sprintf_s sprintf +#endif + +#if defined( __GNUC__ ) +#define _open open +#define _close close +#ifndef O_BINARY +#define O_BINARY 0 +#endif +#else +#include +#endif + +#ifdef O_LARGEFILE +#define OPEN_FLAGS (O_RDONLY | O_BINARY | O_LARGEFILE) +#else +#define OPEN_FLAGS (O_RDONLY | O_BINARY) +#endif + +/** +* This function searches for and opens the WoW exe file, using all known variations on its spelling +* +* @RETURN pFile the pointer to the file, so that it can be worked on +*/ +FILE* openWoWExe() +{ + FILE *pFile; + const char* ExeFileName[] = { "WoW.exe", "Wow.exe", "wow.exe" ,"World of Warcraft.exe", "World of Warcraft.app/Contents/MacOS/World of Warcraft"}; + int iExeSpelling = 5; ///> WoW.exe (Classic, CATA), Wow.exe (TBC, MoP, WoD), wow.exe (WOTLK) and a variant + + /// loop through all possible file names + for (int iFileCount = 0; iFileCount < iExeSpelling; iFileCount++) + { +#ifdef WIN32 + if (fopen_s(&pFile, ExeFileName[iFileCount], "rb") == 0) + return pFile; ///< successfully located the WoW executable +#else + if ((pFile = fopen(ExeFileName[iFileCount], "rb"))) + return pFile; ///< successfully located the WoW executable +#endif + } + + return 0; ///< failed to locate WoW executable +} + +/** +* This function loads up a binary file (WoW executable), then searches for a specified +* group of hex values in order to locate and return the Build # of the file +* +* @PARAM sFilename is the filename of the WoW executable to be loaded +* @RETURN iBuild the build number of the WoW executable, or 0 if failed +*/ +int getBuildNumber() +{ + int iBuild = -1; ///< build version # of the WoW executable (returned value) + + bool bBuildFound = false; + + /// hex values of the text/bytes we need to search for: + /// WoW [ + int iHexValue_W = 0x57; + int iHexValue_o = 0x6F; + int iHexValue_space = 0x20; + int iHexValue_OpeningBracket = 0x5B; // [ + + /// buffers used for working on the file's bytes + unsigned char byteSearchBuffer[1]; ///< used for reading in a single character, ready to be + ///< tested for the required text we are searching for: "WoW [Rel" + unsigned char jumpBytesBuffer[128]; ///< used for skipping past the bytes from the file's start + ///< to the base # area, before we start searching for the base #, for faster processing + unsigned char jumpNonAssertionBytesBuffer[7]; ///< used for skipping past the bytes between the text being + ///< searched for and the Base #, so that we can then get at the Base # + unsigned char jumpAssertionBytesBuffer[26]; ///< skip the 'assertions enabled' part of the version string in an OS X based + ///< version of the game. + unsigned char buildNumber[6]; ///< stored here prior to conversion to an integer + + FILE *pFile; + if (!(pFile = openWoWExe())) + return 0; ///> failed to locate exe file + + /// jump over as much of the file as possible, before we start searching for the base # + for (int i = 0; i < 3300; i++) + fread(jumpBytesBuffer, sizeof(jumpBytesBuffer), 1, pFile); + + /// Search for the build # + while (!bBuildFound && fread(byteSearchBuffer, 1, 1, pFile)) + { + /// find W + if (byteSearchBuffer[0] == 0x57) + { + /// is the next byte an o + fread(byteSearchBuffer, 1, 1, pFile); + if (byteSearchBuffer[0] == iHexValue_o) + { + /// is the next byte a W + fread(byteSearchBuffer, 1, 1, pFile); + if (byteSearchBuffer[0] == iHexValue_W) + { + /// is the next byte a space + fread(byteSearchBuffer, 1, 1, pFile); + if (byteSearchBuffer[0] == iHexValue_space) + { + /// is the next byte an open square bracket + fread(byteSearchBuffer, 1, 1, pFile); + if (byteSearchBuffer[0] == iHexValue_OpeningBracket) + { + // Check for assertions + unsigned char releaseBuffer[7]; + fread(releaseBuffer, sizeof(releaseBuffer), 1, pFile); + + fread(byteSearchBuffer, 1, 1, pFile); + if (byteSearchBuffer[0] == iHexValue_space) + { + /* + * Longer version name found. E.g.; + * WoW [Release Assertions Enabled] Build 5875 + */ + fread(jumpAssertionBytesBuffer, sizeof(jumpAssertionBytesBuffer), 1, pFile); + } else { + /** + * Regular build version found. E.g.; + * WoW [Release] Build 5875 + */ + /// grab data leading up to the build # + fread(jumpNonAssertionBytesBuffer, sizeof(jumpNonAssertionBytesBuffer), 1, pFile); + } + + bBuildFound = true; + } + } + } + } + } + } + + if (!bBuildFound) + { + /// close the file + fclose(pFile); ///< housekeping + return 0; ///< we reached the end of the file without locating the build #, exit funcion + } + + /// grab the bytes containing the number + fread(buildNumber, sizeof(buildNumber), 1, pFile); + + /// place the build number into a string (easy conversion to int) + std::stringstream ss; + std::string sbuildNumber; + ss << buildNumber[0] << buildNumber[1] << buildNumber[2] << buildNumber[3] << buildNumber[4]; + ss >> sbuildNumber; + + fclose(pFile); ///< housekeping + + /// convert build number into an int + iBuild = atoi(sbuildNumber.c_str()); + + return iBuild; ///< build # found +} + +/** +* This function looks up the Core Version based in the found build Number +* +* @RETURN iCoreNumber the build number of the WoW executable, or -1 if failed +*/ +int getCoreNumber() +{ + return getCoreNumberFromBuild(getBuildNumber()); +} + +/** +* This function looks up the Core Version based in the found build Number +* +* @PARAM iBuildNumber is the build number of the WoW executable +* @RETURN iCoreNumber the build number of the WoW executable, or -1 if failed +*/ +int getCoreNumberFromBuild(int iBuildNumber) +{ + switch (iBuildNumber) + { + case 5875: //CLASSIC + case 6005: //CLASSIC + case 6141: //CLASSIC + return CLIENT_CLASSIC; + break; + case 8606: //TBC + return CLIENT_TBC; + break; + case 12340: //WOTLK + return CLIENT_WOTLK; + break; + case 15595: //CATA + return CLIENT_CATA; + break; + case 18414: //MOP + return CLIENT_MOP; + break; + case 21355: //WOD + return CLIENT_WOD; + break; + case 20740: //LEGION ALPHA + return CLIENT_LEGION; + break; + + default: + return -1; + break; + } +} + +/** +* This function displays the standard mangos banner to the console +* +* @PARAM sTitle is the Title text (directly under the MaNGOS logo) +* @PARAM iCoreNumber is the Core Number +*/ +void showBanner(const std::string& sTitle, int iCoreNumber) +{ + printf( + " __ __ _ _ ___ ___ ___ \n" + " | \\/ |__ _| \\| |/ __|/ _ \\/ __| \n" + " | |\\/| / _` | .` | (_ | (_) \\__ \\ \n" + " |_| |_\\__,_|_|\\_|\\___|\\___/|___/ \n" + " %s for ", sTitle.c_str()); + + switch (iCoreNumber) + { + case CLIENT_CLASSIC: + printf("MaNGOSZero\n"); + break; + case CLIENT_TBC: + printf("MaNGOSOne\n"); + break; + case CLIENT_WOTLK: + printf("MaNGOSTwo\n"); + break; + case CLIENT_CATA: + printf("MaNGOSThree\n"); + break; + case CLIENT_MOP: + printf("MaNGOSFour\n"); + break; + case CLIENT_WOD: + printf("MaNGOSFive\n"); + break; + case CLIENT_LEGION: + printf("MaNGOSSix\n"); + break; + default: + printf("Unknown Version\n"); + break; + } + printf(" ________________________________________________\n"); + +} + +/** +* This function displays the standard mangos help banner to the console +*/ +void showWebsiteBanner() +{ + printf( + " ________________________________________________\n\n" + " For help and support please visit: \n" + " Website / Forum / Wiki: https://getmangos.eu \n" + " ________________________________________________\n" + ); +} + + +/** +* This function returns the .map file 'magic' number based on the core number +* +* @PARAM iCoreNumber is the Core Number +*/ +void setMapMagicVersion(int iCoreNumber, char* magic) +{ + switch (iCoreNumber) + { + case CLIENT_CLASSIC: + std::strcpy(magic,"z1.4"); + break; + case CLIENT_TBC: + std::strcpy(magic,"s1.4"); + break; + case CLIENT_WOTLK: + std::strcpy(magic,"v1.4"); + break; + case CLIENT_CATA: + std::strcpy(magic,"c1.4"); + break; + case CLIENT_MOP: + std::strcpy(magic,"p1.4"); + break; + case CLIENT_WOD: + std::strcpy(magic,"w1.4"); + break; + case CLIENT_LEGION: + std::strcpy(magic,"l1.4"); + break; + default: + std::strcpy(magic,"UNKN"); + break; + } +} + +/** +* This function returns the .vmap file 'magic' number based on the core number +* +* @PARAM iCoreNumber is the Core Number +*/ +void setVMapMagicVersion(int iCoreNumber, char* magic) +{ + switch (iCoreNumber) + { + case CLIENT_CLASSIC: + std::strcpy(magic,"VMAPz06"); + break; + case CLIENT_TBC: + std::strcpy(magic,"VMAPs06"); + break; + case CLIENT_WOTLK: + std::strcpy(magic,"VMAPt06"); + break; + case CLIENT_CATA: + std::strcpy(magic,"VMAPc06"); + break; + case CLIENT_MOP: + std::strcpy(magic,"VMAPp06"); + break; + case CLIENT_WOD: + std::strcpy(magic,"VMAPw06"); + break; + case CLIENT_LEGION: + std::strcpy(magic,"VMAPl06"); + break; + default: + std::strcpy(magic,"VMAPUNK"); + break; + } +} + +/** +* @Create Folders based on the path provided +* +* @param sPath +*/ +void CreateDir(const std::string& sPath) +{ +#ifdef WIN32 + _mkdir(sPath.c_str()); +#else + mkdir(sPath.c_str(), 0777); +#endif +} + +/** +* @Checks whether the Filename in the client exists +* +* @param sFileName +* @return bool +*/ +bool ClientFileExists(const char* sFileName) +{ + int fp = _open(sFileName, OPEN_FLAGS); + if (fp != -1) + { + _close(fp); + return true; + } + + return false; +} + +/**************************************************************************/ +bool isTransportMap(int mapID) +{ + switch (mapID) + { + // transport maps + case 582: // Transport: Rut'theran to Auberdine + case 584: // Transport: Menethil to Theramore + case 586: // Transport: Exodar to Auberdine + case 587: // Transport: Feathermoon Ferry - (TBC / WOTLK / CATA / MOP) + case 588: // Transport: Menethil to Auberdine - (TBC / WOTLK / CATA / MOP) + case 589: // Transport: Orgrimmar to Grom'Gol - (TBC / WOTLK / CATA / MOP) + case 590: // Transport: Grom'Gol to Undercity - (TBC / WOTLK / CATA / MOP) + case 591: // Transport: Undercity to Orgrimmar - (TBC / WOTLK / CATA / MOP) + case 592: // Transport: Borean Tundra Test - (WOTLK / CATA / MOP) + case 593: // Transport: Booty Bay to Ratchet - (TBC / WOTLK / CATA / MOP) + case 594: // Transport: Howling Fjord Sister Mercy (Quest) - (WOTLK / CATA / MOP) + case 596: // Transport: Naglfar - (WOTLK / CATA / MOP) + case 610: // Transport: Tirisfal to Vengeance Landing - (WOTLK / CATA / MOP) + case 612: // Transport: Menethil to Valgarde - (WOTLK / CATA / MOP) + case 613: // Transport: Orgrimmar to Warsong Hold - (WOTLK / CATA / MOP) + case 614: // Transport: Stormwind to Valiance Keep - (WOTLK / CATA / MOP) + case 620: // Transport: Moa'ki to Unu'pe - (WOTLK / CATA / MOP) + case 621: // Transport: Moa'ki to Kamagua - (WOTLK / CATA / MOP) + case 622: // Transport: Orgrim's Hammer - (WOTLK / CATA / MOP) + case 623: // Transport: The Skybreaker - (WOTLK / CATA / MOP) + case 641: // Transport: Alliance Airship BG - (WOTLK / CATA / MOP) + case 642: // Transport: HordeAirshipBG - (WOTLK / CATA / MOP) + case 647: // Transport: Orgrimmar to Thunder Bluff - (WOTLK / CATA / MOP) + case 662: // Transport: Alliance Vashj'ir Ship - (WOTLK / CATA / MOP) + case 672: // Transport: The Skybreaker (Icecrown Citadel Raid) - (WOTLK / CATA / MOP) + case 673: // Transport: Orgrim's Hammer (Icecrown Citadel Raid) - (WOTLK / CATA / MOP) + case 674: // Transport: Ship to Vashj'ir - (WOTLK / CATA / MOP) + case 712: // Transport: The Skybreaker (IC Dungeon) - (WOTLK / CATA / MOP) + case 713: // Transport: Orgrim's Hammer (IC Dungeon) - (WOTLK / CATA / MOP) + case 718: // Transport: The Mighty Wind (Icecrown Citadel Raid) - (WOTLK / CATA / MOP) + case 738: // Ship to Vashj'ir (Orgrimmar -> Vashj'ir) - (CATA / MOP) + case 739: // Vashj'ir Sub - Horde - (CATA / MOP) + case 740: // Vashj'ir Sub - Alliance - (CATA / MOP) + case 741: // Twilight Highlands Horde Transport - (CATA / MOP) + case 742: // Vashj'ir Sub - Horde - Circling Abyssal Maw - (CATA / MOP) + case 743: // Vashj'ir Sub - Alliance circling Abyssal Maw - (CATA / MOP) + case 746: // Uldum Phase Oasis - (CATA / MOP) + case 747: // Transport: Deepholm Gunship - (CATA / MOP) + case 748: // Transport: Onyxia/Nefarian Elevator - (CATA / MOP) + case 749: // Transport: Gilneas Moving Gunship - (CATA / MOP) + case 750: // Transport: Gilneas Static Gunship - (CATA / MOP) + case 762: // Twilight Highlands Zeppelin 1 - (CATA / MOP) + case 763: // Twilight Highlands Zeppelin 2 - (CATA / MOP) + case 765: // Krazzworks Attack Zeppelin - (CATA / MOP) + case 766: // Transport: Gilneas Moving Gunship 02 - (CATA / MOP) + case 767: // Transport: Gilneas Moving Gunship 03 - (CATA / MOP) + case 1113: // Transport: DarkmoonCarousel - (MOP) + case 1132: // Transport218599 - The Skybag (Brawl'gar Arena) - (MOP) + case 1133: // Transport218600 - Zandalari Ship (Mogu Island) - (MOP) + case 1172: // Transport: Siege of Orgrimmar (Alliance) - (MOP) + case 1173: // Transport: Siege of Orgrimmar (Horde) - (MOP) + case 1192: // Transport: Iron_Horde_Gorgrond_Train - (WOD) + case 1231: // Transport: Wavemurder Barge - (WOD) + return true; + default: // no transport maps + return false; + } +} + +/**************************************************************************/ +bool shouldSkipMap(int mapID,bool m_skipContinents, bool m_skipJunkMaps, bool m_skipBattlegrounds) +{ + if (m_skipContinents) + switch (mapID) + { + case 0: // Eastern Kingdoms - (CLASSIC / TBC / WOTLK / CATA / MOP) + case 1: // Kalimdor - (CLASSIC - TBC / WOTLK / CATA / MOP) + case 530: // Outland - (TBC / WOTLK / CATA / MOP) + case 571: // Northrend - (WOTLK / CATA / MOP) + case 870: // Pandaria - (MOP) + case 1116: // Draenor - (WOD) + return true; + default: + break; + } + + if (m_skipJunkMaps) + switch (mapID) + { + case 13: // test.wdt + case 25: // ScottTest.wdt + case 29: // Test.wdt + case 35: // StornWind Crypt (Unused Instance) + case 37: // Ashara.wdt (Unused Raid Area) + case 42: // Colin.wdt + case 44: // Monastry.wdt (Unused Old SM) + case 169: // EmeraldDream.wdt (unused, and very large) + case 451: // development.wdt + case 573: // ExteriorTest.wdt - (WOTLK / CATA / MOP) + case 597: // CraigTest.wdt - (WOTLK / CATA / MOP) + case 605: // development_nonweighted.wdt - (WOTLK / CATA / MOP) + case 606: // QA_DVD.wdt - (WOTLK / CATA / MOP) + case 627: // unused.wdt - (CATA / MOP) + case 930: // (UNUSED) Scenario: Alcaz Island - (MOP) + case 995: // The Depths [UNUSED] - (MOP) + case 1010: // MistsCTF3 + case 1014: // (UNUSED) Peak of Serenity Scenario - (MOP) + case 1028: // (UNUSED) Scenario: Mogu Ruins - (MOP) + case 1029: // (UNUSED) Scenario: Mogu Crypt - (MOP) + case 1049: // (UNUSED) Scenario: Black Ox Temple - (MOP) + case 1060: // Level Design Land - Dev Only - (MOP) + case 1181: // PattyMack Test Garrison Bldg Map - (WOD) + case 1250: // Alliance - Garrison - Herb Garden 1 (UNUSED) - (WOD) + case 1251: // Alliance - Garrison - Inn 1 DONT USE - (WOD) + case 1264: // Propland - Dev Only - (WOD) + case 1270: // Development Land 3 - (WOD) + case 1310: // Expansion 5 QA Model Map - (WOD) + case 1407: // GorgrondFinaleScenarioMap(zzzOld) - (WOD) + case 1427: // PattyMack Test Garrison Bld Map2 - (WOD) + + return true; + default: + if (isTransportMap(mapID)) + { + return true; + } + break; + } + + if (m_skipBattlegrounds) + switch (mapID) + { + case 30: // AV + case 37: // AC + case 489: // WSG + case 529: // AB + case 566: // EotS - (TBC / WOTLK / CATA / MOP) + case 607: // SotA - (WOTLK / CATA / MOP) + case 628: // IoC - (WOTLK / CATA / MOP) + case 726: // TP - (CATA / MOP) + case 727: // SM - (CATA / MOP) + case 728: // BfG - (CATA / MOP) + case 761: // BfG2 - (CATA / MOP) + case 968: // EotS2 - (CATA / MOP) + case 998: // VOP - (MOP) + case 1010: // CTF3 - (MOP) + case 1101: // DOTA - (MOP) + case 1105: // GR - (MOP) + case 1166: // Small Battleground - (WOD) + case 1431: // SparringArenaLevel3Stadium 'The Coliseum' - (WOD) + + return true; + default: + break; + } + + return false; +} + diff --git a/src/tools/Extractor_projects/shared/ExtractorCommon.h b/src/tools/Extractor_projects/shared/ExtractorCommon.h new file mode 100644 index 000000000..c923cd608 --- /dev/null +++ b/src/tools/Extractor_projects/shared/ExtractorCommon.h @@ -0,0 +1,56 @@ +/** + * MaNGOS is a full featured server for World of Warcraft, supporting + * the following clients: 1.12.x, 2.4.3, 3.3.5a, 4.3.4a and 5.4.8 + * + * Copyright (C) 2005-2016 MaNGOS project + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * World of Warcraft, and all World of Warcraft or Warcraft art, images, + * and lore are copyrighted by Blizzard Entertainment, Inc. + */ + +#include +#include +#include +#include + +FILE* openWoWExe(); +int getBuildNumber(); +int getCoreNumber(); +int getCoreNumberFromBuild(int iBuildNumber); +void showBanner(const std::string& title, int iCoreNumber); +void showWebsiteBanner(); +void setMapMagicVersion(int iCoreNumber, char* magic); +void setVMapMagicVersion(int iCoreNumber, char* magic); +void CreateDir(const std::string& sPath); +bool ClientFileExists(const char* sFileName); +bool isTransportMap(int mapID); +bool shouldSkipMap(int mapID, bool m_skipContinents, bool m_skipJunkMaps, bool m_skipBattlegrounds); + + +static const char *langs[12] = { "enGB", "enUS", "deDE", "esES", "frFR", "koKR", "zhCN", "zhTW", "enCN", "enTW", "esMX", "ruRU" }; + +/// Enumerated Core Numbers +enum CoreNumber +{ + CLIENT_CLASSIC = 0, + CLIENT_TBC = 1, + CLIENT_WOTLK = 2, + CLIENT_CATA = 3, + CLIENT_MOP = 4, + CLIENT_WOD = 5, + CLIENT_LEGION = 6 +}; \ No newline at end of file diff --git a/src/tools/Extractor_projects/tools.ico b/src/tools/Extractor_projects/tools.ico new file mode 100644 index 000000000..82e3b2657 Binary files /dev/null and b/src/tools/Extractor_projects/tools.ico differ diff --git a/src/tools/vmap-assembler/.gitignore b/src/tools/Extractor_projects/vmap-assembler/.gitignore similarity index 100% rename from src/tools/vmap-assembler/.gitignore rename to src/tools/Extractor_projects/vmap-assembler/.gitignore diff --git a/src/tools/vmap-assembler/CMakeLists.txt b/src/tools/Extractor_projects/vmap-assembler/CMakeLists.txt similarity index 100% rename from src/tools/vmap-assembler/CMakeLists.txt rename to src/tools/Extractor_projects/vmap-assembler/CMakeLists.txt diff --git a/src/tools/vmap-assembler/README b/src/tools/Extractor_projects/vmap-assembler/README similarity index 100% rename from src/tools/vmap-assembler/README rename to src/tools/Extractor_projects/vmap-assembler/README diff --git a/src/tools/vmap-assembler/vmap-assembler.rc b/src/tools/Extractor_projects/vmap-assembler/vmap-assembler.rc similarity index 100% rename from src/tools/vmap-assembler/vmap-assembler.rc rename to src/tools/Extractor_projects/vmap-assembler/vmap-assembler.rc diff --git a/src/tools/vmap-assembler/vmap_assembler.cpp b/src/tools/Extractor_projects/vmap-assembler/vmap_assembler.cpp similarity index 100% rename from src/tools/vmap-assembler/vmap_assembler.cpp rename to src/tools/Extractor_projects/vmap-assembler/vmap_assembler.cpp diff --git a/src/tools/vmap-extractor/.gitignore b/src/tools/Extractor_projects/vmap-extractor/.gitignore similarity index 100% rename from src/tools/vmap-extractor/.gitignore rename to src/tools/Extractor_projects/vmap-extractor/.gitignore diff --git a/src/tools/vmap-extractor/CMakeLists.txt b/src/tools/Extractor_projects/vmap-extractor/CMakeLists.txt similarity index 92% rename from src/tools/vmap-extractor/CMakeLists.txt rename to src/tools/Extractor_projects/vmap-extractor/CMakeLists.txt index 30df59573..db3be8eae 100644 --- a/src/tools/vmap-extractor/CMakeLists.txt +++ b/src/tools/Extractor_projects/vmap-extractor/CMakeLists.txt @@ -25,9 +25,11 @@ if(WIN32) endif() include_directories( + ${CMAKE_SOURCE_DIR}/src/shared #${CMAKE_SOURCE_DIR}/dep/libmpq ${CMAKE_SOURCE_DIR}/dep/StormLib/src ${CMAKE_SOURCE_DIR}/dep/loadlib + ${CMAKE_SOURCE_DIR}/src/tools/Extractor_projects/shared ) add_executable(${EXECUTABLE_NAME} ${EXECUTABLE_SRCS} @@ -38,6 +40,7 @@ add_executable(${EXECUTABLE_NAME} ${EXECUTABLE_SRCS} vmapexport.cpp wdtfile.cpp wmo.cpp + ${CMAKE_SOURCE_DIR}/src/tools/Extractor_projects/shared/ExtractorCommon.cpp ) target_link_libraries(${EXECUTABLE_NAME} StormLib loadlib bzip2 zlib) diff --git a/src/tools/vmap-extractor/README.md b/src/tools/Extractor_projects/vmap-extractor/README.md similarity index 100% rename from src/tools/vmap-extractor/README.md rename to src/tools/Extractor_projects/vmap-extractor/README.md diff --git a/src/tools/vmap-extractor/adtfile.cpp b/src/tools/Extractor_projects/vmap-extractor/adtfile.cpp similarity index 100% rename from src/tools/vmap-extractor/adtfile.cpp rename to src/tools/Extractor_projects/vmap-extractor/adtfile.cpp diff --git a/src/tools/vmap-extractor/adtfile.h b/src/tools/Extractor_projects/vmap-extractor/adtfile.h similarity index 100% rename from src/tools/vmap-extractor/adtfile.h rename to src/tools/Extractor_projects/vmap-extractor/adtfile.h diff --git a/src/tools/vmap-extractor/dbcfile.cpp b/src/tools/Extractor_projects/vmap-extractor/dbcfile.cpp similarity index 100% rename from src/tools/vmap-extractor/dbcfile.cpp rename to src/tools/Extractor_projects/vmap-extractor/dbcfile.cpp diff --git a/src/tools/vmap-extractor/dbcfile.h b/src/tools/Extractor_projects/vmap-extractor/dbcfile.h similarity index 100% rename from src/tools/vmap-extractor/dbcfile.h rename to src/tools/Extractor_projects/vmap-extractor/dbcfile.h diff --git a/src/tools/vmap-extractor/gameobject_extract.cpp b/src/tools/Extractor_projects/vmap-extractor/gameobject_extract.cpp similarity index 100% rename from src/tools/vmap-extractor/gameobject_extract.cpp rename to src/tools/Extractor_projects/vmap-extractor/gameobject_extract.cpp diff --git a/src/tools/vmap-extractor/loadlib/loadlib.h b/src/tools/Extractor_projects/vmap-extractor/loadlib/loadlib.h similarity index 100% rename from src/tools/vmap-extractor/loadlib/loadlib.h rename to src/tools/Extractor_projects/vmap-extractor/loadlib/loadlib.h diff --git a/src/tools/vmap-extractor/make_vmaps.bat b/src/tools/Extractor_projects/vmap-extractor/make_vmaps.bat similarity index 100% rename from src/tools/vmap-extractor/make_vmaps.bat rename to src/tools/Extractor_projects/vmap-extractor/make_vmaps.bat diff --git a/src/tools/vmap-extractor/model.cpp b/src/tools/Extractor_projects/vmap-extractor/model.cpp similarity index 100% rename from src/tools/vmap-extractor/model.cpp rename to src/tools/Extractor_projects/vmap-extractor/model.cpp diff --git a/src/tools/vmap-extractor/model.h b/src/tools/Extractor_projects/vmap-extractor/model.h similarity index 100% rename from src/tools/vmap-extractor/model.h rename to src/tools/Extractor_projects/vmap-extractor/model.h diff --git a/src/tools/vmap-extractor/modelheaders.h b/src/tools/Extractor_projects/vmap-extractor/modelheaders.h similarity index 100% rename from src/tools/vmap-extractor/modelheaders.h rename to src/tools/Extractor_projects/vmap-extractor/modelheaders.h diff --git a/src/tools/vmap-extractor/mpqfile.cpp b/src/tools/Extractor_projects/vmap-extractor/mpqfile.cpp similarity index 100% rename from src/tools/vmap-extractor/mpqfile.cpp rename to src/tools/Extractor_projects/vmap-extractor/mpqfile.cpp diff --git a/src/tools/vmap-extractor/mpqfile.h b/src/tools/Extractor_projects/vmap-extractor/mpqfile.h similarity index 100% rename from src/tools/vmap-extractor/mpqfile.h rename to src/tools/Extractor_projects/vmap-extractor/mpqfile.h diff --git a/src/tools/vmap-extractor/vec3d.h b/src/tools/Extractor_projects/vmap-extractor/vec3d.h similarity index 100% rename from src/tools/vmap-extractor/vec3d.h rename to src/tools/Extractor_projects/vmap-extractor/vec3d.h diff --git a/src/tools/vmap-extractor/vmap-extractor.rc b/src/tools/Extractor_projects/vmap-extractor/vmap-extractor.rc similarity index 100% rename from src/tools/vmap-extractor/vmap-extractor.rc rename to src/tools/Extractor_projects/vmap-extractor/vmap-extractor.rc diff --git a/src/tools/vmap-extractor/vmapexport.cpp b/src/tools/Extractor_projects/vmap-extractor/vmapexport.cpp similarity index 99% rename from src/tools/vmap-extractor/vmapexport.cpp rename to src/tools/Extractor_projects/vmap-extractor/vmapexport.cpp index b2a29b939..13d484103 100644 --- a/src/tools/vmap-extractor/vmapexport.cpp +++ b/src/tools/Extractor_projects/vmap-extractor/vmapexport.cpp @@ -55,7 +55,7 @@ #include "vmapexport.h" -#include "vmapexport.h" +#include "../shared/ExtractorCommon.h" //------------------------------------------------------------------------------ // Defines @@ -547,7 +547,6 @@ bool processArgv(int argc, char** argv) return result; } - //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx // Main // @@ -559,7 +558,7 @@ bool processArgv(int argc, char** argv) int main(int argc, char** argv) { - bool success = true; + bool success = true; std::string outDir = std::string(output_path) + "/vmaps"; // Use command line arguments, when some @@ -598,12 +597,17 @@ int main(int argc, char** argv) printf("Extract for %s. Beginning work ....\n", szRawVMAPMagic); //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx // Create the working directory + CreateDir(std::string(szWorkDirWmo)); + CreateDir(outDir); + + /* if (mkdir(szWorkDirWmo #ifdef __linux__ , 0711 #endif )) success = (errno == EEXIST); + */ LoadCommonMPQFiles(CONF_TargetBuild); diff --git a/src/tools/vmap-extractor/vmapexport.h b/src/tools/Extractor_projects/vmap-extractor/vmapexport.h similarity index 100% rename from src/tools/vmap-extractor/vmapexport.h rename to src/tools/Extractor_projects/vmap-extractor/vmapexport.h diff --git a/src/tools/vmap-extractor/wdtfile.cpp b/src/tools/Extractor_projects/vmap-extractor/wdtfile.cpp similarity index 100% rename from src/tools/vmap-extractor/wdtfile.cpp rename to src/tools/Extractor_projects/vmap-extractor/wdtfile.cpp diff --git a/src/tools/vmap-extractor/wdtfile.h b/src/tools/Extractor_projects/vmap-extractor/wdtfile.h similarity index 100% rename from src/tools/vmap-extractor/wdtfile.h rename to src/tools/Extractor_projects/vmap-extractor/wdtfile.h diff --git a/src/tools/vmap-extractor/wmo.cpp b/src/tools/Extractor_projects/vmap-extractor/wmo.cpp similarity index 100% rename from src/tools/vmap-extractor/wmo.cpp rename to src/tools/Extractor_projects/vmap-extractor/wmo.cpp diff --git a/src/tools/vmap-extractor/wmo.h b/src/tools/Extractor_projects/vmap-extractor/wmo.h similarity index 100% rename from src/tools/vmap-extractor/wmo.h rename to src/tools/Extractor_projects/vmap-extractor/wmo.h diff --git a/src/tools/tools.ico b/src/tools/tools.ico deleted file mode 100644 index 052553e46..000000000 Binary files a/src/tools/tools.ico and /dev/null differ