diff --git a/client/mainmenu/CCampaignScreen.cpp b/client/mainmenu/CCampaignScreen.cpp index 2f3c0e6af..c07f81cc4 100644 --- a/client/mainmenu/CCampaignScreen.cpp +++ b/client/mainmenu/CCampaignScreen.cpp @@ -33,6 +33,7 @@ #include "../../lib/CCreatureHandler.h" #include "../../lib/CSkillHandler.h" #include "../../lib/GameLibrary.h" +#include "../../lib/IGameSettings.h" #include "../../lib/campaign/CampaignHandler.h" #include "../../lib/filesystem/Filesystem.h" #include "../../lib/mapObjects/CGHeroInstance.h" @@ -177,7 +178,7 @@ CCampaignScreen::CCampaignButton::CCampaignButton(const JsonNode & config, const } } - if(persistentStorage["unlockAllCampaigns"].Bool()) + if(LIBRARY->engineSettings()->getBoolean(EGameSettings::CAMPAIGN_UNLOCK_ALL)) status = CCampaignScreen::ENABLED; if(status != CCampaignScreen::DISABLED) diff --git a/config/gameConfig.json b/config/gameConfig.json index 769a748c9..6c083d9e0 100644 --- a/config/gameConfig.json +++ b/config/gameConfig.json @@ -823,6 +823,12 @@ "teal" : [ -0.13, 0.23, 0.23, 0.90, 1.20, 2.20 ], "pink" : [ 0.44, 0.15, 0.25, 1.00, 1.00, 1.75 ] } + }, + + "campaign" : + { + // Unlock all campaigns + "unlockAll" : false } } } diff --git a/config/schemas/gameSettings.json b/config/schemas/gameSettings.json index 0b1b093a8..04e06f1ce 100644 --- a/config/schemas/gameSettings.json +++ b/config/schemas/gameSettings.json @@ -67,6 +67,13 @@ "baseScoutingRange" : { "type" : "number" } } }, + "campaign": { + "type" : "object", + "additionalProperties" : false, + "properties" : { + "unlockAll" : { "type" : "boolean" } + } + }, "combat": { "type" : "object", "additionalProperties" : false, diff --git a/lib/GameSettings.cpp b/lib/GameSettings.cpp index 0986d11f1..4f027be2e 100644 --- a/lib/GameSettings.cpp +++ b/lib/GameSettings.cpp @@ -45,6 +45,7 @@ const std::vector GameSettings::settingProperties = {EGameSettings::BANKS_SHOW_GUARDS_COMPOSITION, "banks", "showGuardsComposition" }, {EGameSettings::BONUSES_GLOBAL, "bonuses", "global" }, {EGameSettings::BONUSES_PER_HERO, "bonuses", "perHero" }, + {EGameSettings::CAMPAIGN_UNLOCK_ALL, "campaign", "unlockAll" }, {EGameSettings::COMBAT_ABILITY_BIAS, "combat", "abilityBias" }, {EGameSettings::COMBAT_AREA_SHOT_CAN_TARGET_EMPTY_HEX, "combat", "areaShotCanTargetEmptyHex" }, {EGameSettings::COMBAT_ATTACK_POINT_DAMAGE_FACTOR, "combat", "attackPointDamageFactor" }, diff --git a/lib/IGameSettings.h b/lib/IGameSettings.h index 40e0561d3..ffec5dd19 100644 --- a/lib/IGameSettings.h +++ b/lib/IGameSettings.h @@ -18,6 +18,7 @@ enum class EGameSettings BANKS_SHOW_GUARDS_COMPOSITION, BONUSES_GLOBAL, BONUSES_PER_HERO, + CAMPAIGN_UNLOCK_ALL, COMBAT_ABILITY_BIAS, COMBAT_AREA_SHOT_CAN_TARGET_EMPTY_HEX, COMBAT_ATTACK_POINT_DAMAGE_FACTOR,