aboutsummaryrefslogtreecommitdiff
path: root/src/SFileOpenArchive.cpp
diff options
context:
space:
mode:
authorLadislav Zezula <zezula@volny.cz>2025-10-25 09:01:18 +0200
committerLadislav Zezula <zezula@volny.cz>2025-10-25 09:01:18 +0200
commit07559b322064d7c1fe75f23195744c0c2863f86a (patch)
tree2174c18cde38dfd79d67bb7a08aab370f144d781 /src/SFileOpenArchive.cpp
parentb62de3c83fc146c4e8a05bde15d39e19588c28a4 (diff)
Fixed opening of Warcraft III maps that don't have W3M header
Diffstat (limited to 'src/SFileOpenArchive.cpp')
-rw-r--r--src/SFileOpenArchive.cpp15
1 files changed, 11 insertions, 4 deletions
diff --git a/src/SFileOpenArchive.cpp b/src/SFileOpenArchive.cpp
index 47136fe..58f4d01 100644
--- a/src/SFileOpenArchive.cpp
+++ b/src/SFileOpenArchive.cpp
@@ -51,6 +51,7 @@ static MTYPE CheckMapType(LPCTSTR szFileName, LPBYTE pbHeaderBuffer, size_t cbHe
{
LPDWORD HeaderInt32 = (LPDWORD)pbHeaderBuffer;
LPCTSTR szExtension;
+ MTYPE TypeByExtension = MapTypeNotRecognized;
// Don't do any checks if there is not at least 16 bytes
if(cbHeaderBuffer > 0x10)
@@ -65,16 +66,22 @@ static MTYPE CheckMapType(LPCTSTR szFileName, LPBYTE pbHeaderBuffer, size_t cbHe
// fake Warcraft III header into the Starcraft II maps
if((szExtension = _tcsrchr(szFileName, _T('.'))) != NULL)
{
+ // Check for Starcraft I maps by extension
+ if(!_tcsicmp(szExtension, _T(".scm")) || !_tcsicmp(szExtension, _T(".scx")))
+ {
+ return MapTypeStarcraft;
+ }
+
// Check for Starcraft II maps by extension
if(!_tcsicmp(szExtension, _T(".s2ma")) || !_tcsicmp(szExtension, _T(".SC2Map")) || !_tcsicmp(szExtension, _T(".SC2Mod")))
{
return MapTypeStarcraft2;
}
- // Check for Starcraft I maps by extension
- if(!_tcsicmp(szExtension, _T(".scm")) || !_tcsicmp(szExtension, _T(".scx")))
+ // Check for Warcraft III maps by extension
+ if(!_tcsicmp(szExtension, _T(".w3m")) || !_tcsicmp(szExtension, _T(".w3x")))
{
- return MapTypeStarcraft;
+ TypeByExtension = MapTypeWarcraft3;
}
}
@@ -112,7 +119,7 @@ static MTYPE CheckMapType(LPCTSTR szFileName, LPBYTE pbHeaderBuffer, size_t cbHe
}
// No special map type recognized
- return MapTypeNotRecognized;
+ return TypeByExtension;
}
static bool IsStarcraftBetaArchive(TMPQHeader * pHeader)