Преглед на файлове

PathfinderOptions: use settings and move all defaults into schema

ArseniyShestakov преди 10 години
родител
ревизия
e91d79414b
променени са 2 файла, в които са добавени 83 реда и са изтрити 14 реда
  1. 69 1
      config/schemas/settings.json
  2. 14 13
      lib/CPathfinder.cpp

+ 69 - 1
config/schemas/settings.json

@@ -3,7 +3,7 @@
 {
 	"type" : "object",
 	"$schema": "http://json-schema.org/draft-04/schema",
-	"required" : [ "general", "video", "adventure", "battle", "server", "logging", "launcher" ],
+	"required" : [ "general", "video", "adventure", "pathfinder", "battle", "server", "logging", "launcher" ],
 	"definitions" : {
 		"logLevelEnum" : { 
 			"type" : "string", 
@@ -108,6 +108,74 @@
 				}
 			}
 		},
+		"pathfinder" : {
+			"type" : "object",
+			"additionalProperties" : false,
+			"default": {},
+			"required" : [ "teleports", "layers", "oneTurnSpecialLayersLimit", "originalMovementRules", "lightweightFlyingMode" ],
+			"properties" : {
+				"layers" : {
+					"type" : "object",
+					"additionalProperties" : false,
+					"default": {},
+					"required" : [ "sailing", "waterWalking", "flying" ],
+					"properties" : {
+						"sailing" : {
+							"type" : "boolean",
+							"default" : true
+						},
+						"waterWalking" : {
+							"type" : "boolean",
+							"default" : true
+						},
+						"flying" : {
+							"type" : "boolean",
+							"default" : true
+						}
+					}
+				},
+				"teleports" : {
+					"type" : "object",
+					"additionalProperties" : false,
+					"default": {},
+					"required" : [ "twoWay", "oneWay", "oneWayRandom", "whirlpool", "castleGate" ],
+					"properties" : {
+						"twoWay" : {
+							"type" : "boolean",
+							"default" : true
+						},
+						"oneWay" : {
+							"type" : "boolean",
+							"default" : true
+						},
+						"oneWayRandom" : {
+							"type" : "boolean",
+							"default" : false
+						},
+						"whirlpool" : {
+							"type" : "boolean",
+							"default" : true
+						},
+						"castleGate" : {
+							"type" : "boolean",
+							"default" : false
+						}
+					}
+				},
+				"oneTurnSpecialLayersLimit" : {
+					"type" : "boolean",
+					"default" : true
+				},
+				"originalMovementRules" : {
+					"type" : "boolean",
+					"default" : false
+				},
+				"lightweightFlyingMode" : {
+					"type" : "boolean",
+					"default" : false
+				}
+			}
+		},
 		"battle" : {
 			"type" : "object",
 			"additionalProperties" : false,

+ 14 - 13
lib/CPathfinder.cpp

@@ -7,6 +7,7 @@
 #include "mapObjects/CGHeroInstance.h"
 #include "GameConstants.h"
 #include "CStopWatch.h"
+#include "CConfigHandler.h"
 
 /*
  * CPathfinder.cpp, part of VCMI engine
@@ -20,19 +21,19 @@
 
 CPathfinder::PathfinderOptions::PathfinderOptions()
 {
-	useFlying = true;
-	useWaterWalking = true;
-	useEmbarkAndDisembark = true;
-	useTeleportTwoWay = true;
-	useTeleportOneWay = true;
-	useTeleportOneWayRandom = false;
-	useTeleportWhirlpool = true;
-
-	useCastleGate = false;
-
-	lightweightFlyingMode = false;
-	oneTurnSpecialLayersLimit = true;
-	originalMovementRules = true;
+	useFlying = settings["pathfinder"]["layers"]["flying"].Bool();
+	useWaterWalking = settings["pathfinder"]["layers"]["waterWalking"].Bool();
+	useEmbarkAndDisembark = settings["pathfinder"]["layers"]["sailing"].Bool();
+	useTeleportTwoWay = settings["pathfinder"]["teleports"]["twoWay"].Bool();
+	useTeleportOneWay = settings["pathfinder"]["teleports"]["oneWay"].Bool();
+	useTeleportOneWayRandom = settings["pathfinder"]["teleports"]["oneWayRandom"].Bool();
+	useTeleportWhirlpool = settings["pathfinder"]["teleports"]["whirlpool"].Bool();
+
+	useCastleGate = settings["pathfinder"]["teleports"]["castleGate"].Bool();
+
+	lightweightFlyingMode = settings["pathfinder"]["lightweightFlyingMode"].Bool();
+	oneTurnSpecialLayersLimit = settings["pathfinder"]["oneTurnSpecialLayersLimit"].Bool();
+	originalMovementRules = settings["pathfinder"]["originalMovementRules"].Bool();
 }
 
 CPathfinder::CPathfinder(CPathsInfo & _out, CGameState * _gs, const CGHeroInstance * _hero)