Просмотр исходного кода

Added 'useTroopsFromGarrisons' option to NKAI

Ivan Savenko 1 год назад
Родитель
Сommit
20f323d83c

+ 1 - 1
AI/Nullkiller/AIGateway.cpp

@@ -750,7 +750,7 @@ void AIGateway::showGarrisonDialog(const CArmedInstance * up, const CGHeroInstan
 	//you can't request action from action-response thread
 	requestActionASAP([=]()
 	{
-		if(removableUnits && up->tempOwner == down->tempOwner)
+		if(removableUnits && up->tempOwner == down->tempOwner && nullkiller->settings->isGarrisonTroopsUsageAllowed())
 		{
 			pickBestCreatures(down, up);
 		}

+ 8 - 2
AI/Nullkiller/Engine/Settings.cpp

@@ -28,7 +28,8 @@ namespace NKAI
 		scoutHeroTurnDistanceLimit(5),
 		maxGoldPressure(0.3f), 
 		maxpass(10),
-		allowObjectGraph(false)
+		allowObjectGraph(false),
+		useTroopsFromGarrisons(false)
 	{
 		ResourcePath resource("config/ai/nkai/nkai-settings", EResType::JSON);
 
@@ -80,5 +81,10 @@ namespace NKAI
 		{
 			allowObjectGraph = node.Struct()["allowObjectGraph"].Bool();
 		}
+
+		if(!node.Struct()["useTroopsFromGarrisons"].isNull())
+		{
+			useTroopsFromGarrisons = node.Struct()["useTroopsFromGarrisons"].Bool();
+		}
 	}
-}
+}

+ 3 - 4
AI/Nullkiller/Engine/Settings.h

@@ -27,6 +27,7 @@ namespace NKAI
 		int maxpass;
 		float maxGoldPressure;
 		bool allowObjectGraph;
+		bool useTroopsFromGarrisons;
 
 	public:
 		Settings();
@@ -37,8 +38,6 @@ namespace NKAI
 		int getMainHeroTurnDistanceLimit() const { return mainHeroTurnDistanceLimit; }
 		int getScoutHeroTurnDistanceLimit() const { return scoutHeroTurnDistanceLimit; }
 		bool isObjectGraphAllowed() const { return allowObjectGraph; }
-
-	private:
-		void loadFromMod(const std::string & modName, const ResourcePath & resource);
+		bool isGarrisonTroopsUsageAllowed() const { return useTroopsFromGarrisons; }
 	};
-}
+}

+ 2 - 1
config/ai/nkai/nkai-settings.json

@@ -3,5 +3,6 @@
 	"maxpass" : 30,
 	"mainHeroTurnDistanceLimit" : 10,
 	"scoutHeroTurnDistanceLimit" : 5,
-	"maxGoldPressure" : 0.3
+	"maxGoldPressure" : 0.3,
+	"useTroopsFromGarrisons" : false
 }