浏览代码

- ignore wog maps if wog is not present

Ivan Savenko 12 年之前
父节点
当前提交
b3bbe27089
共有 4 个文件被更改,包括 14 次插入6 次删除
  1. 2 3
      Mods/WoG/config/defaultMods.json
  2. 4 1
      client/CPreGame.cpp
  3. 2 1
      config/defaultMods.json
  4. 6 1
      lib/mapping/CMap.h

+ 2 - 3
Mods/WoG/config/defaultMods.json

@@ -1,5 +1,3 @@
-// default configuration for mod system loaded at launch
-
 {
 	"textData" :
 	{
@@ -7,7 +5,8 @@
 		"artifact"   : 171,
 		"creature"   : 197,
 		"faction"    : 9,
-		"hero"       : 156
+		"hero"       : 156,
+		"mapVersion" : 33 // WoG
 	},
 
 	"modules":

+ 4 - 1
client/CPreGame.cpp

@@ -1108,7 +1108,10 @@ void SelectionTab::parseMaps(const std::vector<ResourceID> & files)
 		{
 			CMapInfo mapInfo;
 			mapInfo.mapInit(files[i].getName());
-			allItems.push_back(mapInfo);
+
+			// ignore unsupported map versions (e.g. WoG maps without WoG
+			if (mapInfo.mapHeader->version <= CGI->modh->settings.data["textData"]["mapVersion"].Float())
+				allItems.push_back(mapInfo);
 		}
 		catch(std::exception & e)
 		{

+ 2 - 1
config/defaultMods.json

@@ -7,7 +7,8 @@
 		"artifact"   : 144,
 		"creature"   : 150,
 		"faction"    : 9,
-		"hero"       : 156
+		"hero"       : 156,
+		"mapVersion" : 28 // max supported version, SoD
 	},
 
 	"hardcodedFeatures" :

+ 6 - 1
lib/mapping/CMap.h

@@ -278,7 +278,12 @@ namespace EMapFormat
 {
 enum EMapFormat
 {
-	INVALID, WOG=0x33, AB=0x15, ROE=0x0e, SOD=0x1c
+	INVALID = 0,
+	//    HEX     DEC
+	ROE = 0x0e, // 14
+	AB  = 0x15, // 21
+	SOD = 0x1c, // 28
+	WOG = 0x33  // 51
 };
 }