Răsfoiți Sursa

moved to gameconfig

Laserlicht 1 an în urmă
părinte
comite
883ea23495

+ 0 - 12
client/lobby/OptionsTabBase.cpp

@@ -110,12 +110,6 @@ OptionsTabBase::OptionsTabBase(const JsonPath & configPath)
 		CSH->setExtraOptionsInfo(info);
 	});
 
-	addCallback("setInviteHero", [&](int index){
-		ExtraOptionsInfo info = SEL->getStartInfo()->extraOptionsInfo;
-		info.inviteHero = index;
-		CSH->setExtraOptionsInfo(info);
-	});
-
 	addCallback("setTurnTimerAccumulate", [&](int index){
 		TurnTimerInfo info = SEL->getStartInfo()->turnTimerInfo;
 		info.accumulatingTurnTimer = index;
@@ -423,10 +417,4 @@ void OptionsTabBase::recreate()
 		buttonUnlimitedReplay->setSelectedSilent(SEL->getStartInfo()->extraOptionsInfo.unlimitedReplay);
 		buttonUnlimitedReplay->setInputEnabled(SEL->screenType != ESelectionScreen::loadGame);
 	}
-
-	if(auto buttonInviteHero = widget<CToggleButton>("buttonInviteHero"))
-	{
-		buttonInviteHero->setSelectedSilent(SEL->getStartInfo()->extraOptionsInfo.inviteHero);
-		buttonInviteHero->setInputEnabled(SEL->screenType != ESelectionScreen::loadGame);
-	}
 }

+ 1 - 1
client/windows/GUIClasses.cpp

@@ -519,7 +519,7 @@ void CTavernWindow::addInvite()
 {
 	OBJECT_CONSTRUCTION_CAPTURING(255-DISPOSE);
 
-	if(CSH->client->getStartInfo()->extraOptionsInfo.inviteHero)
+	if(VLC->settings()->getBoolean(EGameSettings::HEROES_INVITE))
 	{
 		const auto & heroesPool = CSH->client->gameState()->heroesPool;
 		for(auto & elem : heroesPool->unusedHeroesFromPool())

+ 3 - 1
config/gameConfig.json

@@ -289,7 +289,9 @@
 			// Chances for a hero with default army to receive corresponding stack out of his predefined starting troops
 			"startingStackChances": [ 100, 88, 25],
 			// number of artifacts that can fit in a backpack. -1 is unlimited.
-			"backpackSize"		: -1
+			"backpackSize"		: -1,
+			// if heroes are invitable in tavern
+			"invite"            : false
 		},
 
 		"towns":

+ 0 - 14
config/widgets/extraOptionsTab.json

@@ -73,13 +73,6 @@
 					"callback" : "setUnlimitedReplay",
 					"help" : "vcmi.optionsTab.unlimitedReplay",
 					"selected" : true
-				},
-				{
-					"name": "buttonInviteHero",
-					"image": "lobby/checkbox",
-					"callback" : "setInviteHero",
-					"help" : "vcmi.optionsTab.inviteHero",
-					"selected" : true
 				}
 			]
 		},
@@ -103,13 +96,6 @@
 					"alignment": "left",
 					"color": "yellow",
 					"text": "vcmi.optionsTab.unlimitedReplay.hover"
-				},
-				{
-					"name": "labelInviteHero",
-					"font": "small",
-					"alignment": "left",
-					"color": "yellow",
-					"text": "vcmi.optionsTab.inviteHero.hover"
 				}
 			]
 		}

+ 1 - 2
lib/ExtraOptionsInfo.cpp

@@ -15,8 +15,7 @@ VCMI_LIB_NAMESPACE_BEGIN
 bool ExtraOptionsInfo::operator == (const ExtraOptionsInfo & other) const
 {
 	return cheatsAllowed == other.cheatsAllowed &&
-			unlimitedReplay == other.unlimitedReplay &&
-			inviteHero == other.inviteHero;
+			unlimitedReplay == other.unlimitedReplay;
 }
 
 VCMI_LIB_NAMESPACE_END

+ 0 - 2
lib/ExtraOptionsInfo.h

@@ -16,7 +16,6 @@ struct DLL_LINKAGE ExtraOptionsInfo
 {
 	bool cheatsAllowed = true;
 	bool unlimitedReplay = false;
-	bool inviteHero = false;
 
 	bool operator == (const ExtraOptionsInfo & other) const;
 
@@ -25,7 +24,6 @@ struct DLL_LINKAGE ExtraOptionsInfo
 	{
 		h & cheatsAllowed;
 		h & unlimitedReplay;
-		h & inviteHero;
 	}
 };
 

+ 1 - 0
lib/GameSettings.cpp

@@ -74,6 +74,7 @@ void GameSettings::load(const JsonNode & input)
 		{EGameSettings::HEROES_RETREAT_ON_WIN_WITHOUT_TROOPS,   "heroes",    "retreatOnWinWithoutTroops"  },
 		{EGameSettings::HEROES_STARTING_STACKS_CHANCES,         "heroes",    "startingStackChances"       },
 		{EGameSettings::HEROES_BACKPACK_CAP,                    "heroes",    "backpackSize"               },
+		{EGameSettings::HEROES_INVITE,                          "heroes",    "invite"                     },
 		{EGameSettings::MAP_FORMAT_RESTORATION_OF_ERATHIA,      "mapFormat", "restorationOfErathia"       },
 		{EGameSettings::MAP_FORMAT_ARMAGEDDONS_BLADE,           "mapFormat", "armageddonsBlade"           },
 		{EGameSettings::MAP_FORMAT_SHADOW_OF_DEATH,             "mapFormat", "shadowOfDeath"              },

+ 1 - 0
lib/GameSettings.h

@@ -38,6 +38,7 @@ enum class EGameSettings
 	HEROES_RETREAT_ON_WIN_WITHOUT_TROOPS,
 	HEROES_STARTING_STACKS_CHANCES,
 	HEROES_BACKPACK_CAP,
+	HEROES_INVITE,
 	MARKETS_BLACK_MARKET_RESTOCK_PERIOD,
 	BANKS_SHOW_GUARDS_COMPOSITION,
 	MODULE_COMMANDERS,

+ 2 - 1
server/processors/HeroPoolProcessor.cpp

@@ -23,6 +23,7 @@
 #include "../../lib/gameState/CGameState.h"
 #include "../../lib/gameState/TavernHeroesPool.h"
 #include "../../lib/gameState/TavernSlot.h"
+#include "../../lib/GameSettings.h"
 
 HeroPoolProcessor::HeroPoolProcessor()
 	: gameHandler(nullptr)
@@ -114,7 +115,7 @@ void HeroPoolProcessor::selectNewHeroForSlot(const PlayerColor & color, TavernHe
 	CGHeroInstance *newHero = pickHeroFor(needNativeHero, color);
 
 	const auto & heroesPool = gameHandler->gameState()->heroesPool;
-	if(gameHandler->getStartInfo()->extraOptionsInfo.inviteHero && heroesPool->unusedHeroesFromPool().count(nextHero) && heroesPool->isHeroAvailableFor(nextHero, color))
+	if(VLC->settings()->getBoolean(EGameSettings::HEROES_INVITE) && heroesPool->unusedHeroesFromPool().count(nextHero) && heroesPool->isHeroAvailableFor(nextHero, color))
 		newHero = heroesPool->unusedHeroesFromPool()[nextHero];
 
 	if (newHero)