aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/tools/map_extractor/System.cpp38
1 files changed, 38 insertions, 0 deletions
diff --git a/src/tools/map_extractor/System.cpp b/src/tools/map_extractor/System.cpp
index 8db9599ef2e..94639e5ba06 100644
--- a/src/tools/map_extractor/System.cpp
+++ b/src/tools/map_extractor/System.cpp
@@ -1031,6 +1031,43 @@ void ExtractDBCFiles(int l, bool basicLocale)
printf("Extracted %u DBC files\n\n", count);
}
+void ExtractDB2Files(int l, bool basicLocale)
+{
+ printf("Extracting db2 files...\n");
+
+ SFILE_FIND_DATA foundFile;
+ memset(&foundFile, 0, sizeof(foundFile));
+ HANDLE listFile = SListFileFindFirstFile(LocaleMpq, NULL, "DBFilesClient\\*db2", &foundFile);
+ HANDLE dbcFile = NULL;
+ uint32 count = 0;
+ if (listFile)
+ {
+ std::string outputPath = "./dbc/";
+ if (!basicLocale)
+ {
+ outputPath += Locales[l];
+ outputPath += "/";
+ }
+
+ std::string filename;
+
+ do
+ {
+ if (!SFileOpenFileEx(LocaleMpq, foundFile.cFileName, SFILE_OPEN_PATCHED_FILE, &dbcFile))
+ continue;
+
+ filename = foundFile.cFileName;
+ filename = outputPath + filename.substr(filename.rfind('\\'));
+ if (ExtractFile(dbcFile, filename.c_str()))
+ ++count;
+
+ SFileCloseFile(dbcFile);
+ } while (SListFileFindNextFile(listFile, &foundFile));
+ }
+
+ printf("Extracted %u DB2 files\n\n", count);
+}
+
bool LoadLocaleMPQFile(int locale)
{
TCHAR buff[512];
@@ -1165,6 +1202,7 @@ int main(int argc, char * arg[])
}
ExtractDBCFiles(i, FirstLocale < 0);
+ ExtractDB2Files(i, FirstLocale < 0);
if (FirstLocale < 0)
{