1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-03-19 21:10:12 +02:00

use primary skill array

This commit is contained in:
kdmcser 2024-08-08 20:43:20 +08:00
parent 87eb026184
commit 79f5d260a4
4 changed files with 16 additions and 20 deletions

View File

@ -298,10 +298,7 @@
// if heroes are invitable in tavern // if heroes are invitable in tavern
"tavernInvite" : false, "tavernInvite" : false,
// minimai primary skills for heroes // minimai primary skills for heroes
"minimalAttack": 0, "minimalPrimarySkills": [ 0, 0, 1, 1]
"minimalDefence": 0,
"minimalKnowledge": 1,
"minimalSpellPower": 1
}, },
"towns": "towns":

View File

@ -75,10 +75,7 @@ void GameSettings::load(const JsonNode & input)
{EGameSettings::HEROES_STARTING_STACKS_CHANCES, "heroes", "startingStackChances" }, {EGameSettings::HEROES_STARTING_STACKS_CHANCES, "heroes", "startingStackChances" },
{EGameSettings::HEROES_BACKPACK_CAP, "heroes", "backpackSize" }, {EGameSettings::HEROES_BACKPACK_CAP, "heroes", "backpackSize" },
{EGameSettings::HEROES_TAVERN_INVITE, "heroes", "tavernInvite" }, {EGameSettings::HEROES_TAVERN_INVITE, "heroes", "tavernInvite" },
{EGameSettings::HEROES_MINIMAL_ATTACK, "heroes", "minimalAttack" }, {EGameSettings::HEROES_MINIMAL_PRIMARY_SKILLS, "heroes", "minimalPrimarySkills" },
{EGameSettings::HEROES_MINIMAL_DEFENCE, "heroes", "minimalDefence" },
{EGameSettings::HEROES_MINIMAL_KNOWLEDGE, "heroes", "minimalKnowledge" },
{EGameSettings::HEROES_MINIMAL_SPELL_POWER, "heroes", "minimalSpellPower" },
{EGameSettings::MAP_FORMAT_RESTORATION_OF_ERATHIA, "mapFormat", "restorationOfErathia" }, {EGameSettings::MAP_FORMAT_RESTORATION_OF_ERATHIA, "mapFormat", "restorationOfErathia" },
{EGameSettings::MAP_FORMAT_ARMAGEDDONS_BLADE, "mapFormat", "armageddonsBlade" }, {EGameSettings::MAP_FORMAT_ARMAGEDDONS_BLADE, "mapFormat", "armageddonsBlade" },
{EGameSettings::MAP_FORMAT_SHADOW_OF_DEATH, "mapFormat", "shadowOfDeath" }, {EGameSettings::MAP_FORMAT_SHADOW_OF_DEATH, "mapFormat", "shadowOfDeath" },

View File

@ -39,10 +39,7 @@ enum class EGameSettings
HEROES_STARTING_STACKS_CHANCES, HEROES_STARTING_STACKS_CHANCES,
HEROES_BACKPACK_CAP, HEROES_BACKPACK_CAP,
HEROES_TAVERN_INVITE, HEROES_TAVERN_INVITE,
HEROES_MINIMAL_ATTACK, HEROES_MINIMAL_PRIMARY_SKILLS,
HEROES_MINIMAL_DEFENCE,
HEROES_MINIMAL_KNOWLEDGE,
HEROES_MINIMAL_SPELL_POWER,
MARKETS_BLACK_MARKET_RESTOCK_PERIOD, MARKETS_BLACK_MARKET_RESTOCK_PERIOD,
BANKS_SHOW_GUARDS_COMPOSITION, BANKS_SHOW_GUARDS_COMPOSITION,
MODULE_COMMANDERS, MODULE_COMMANDERS,

View File

@ -14,16 +14,21 @@
VCMI_LIB_NAMESPACE_BEGIN VCMI_LIB_NAMESPACE_BEGIN
const std::vector<int> DEFAULT_MINIMAL_PSKILLS= {0, 0, 1, 1};
const std::map<PrimarySkill, int> PSKILL_INDEX_MAP = {
{PrimarySkill::ATTACK, 0},
{PrimarySkill::DEFENSE, 1},
{PrimarySkill::SPELL_POWER, 2},
{PrimarySkill::KNOWLEDGE, 3}
};
int getPrimarySkillMinimum(PrimarySkill pSkill) int getPrimarySkillMinimum(PrimarySkill pSkill)
{ {
if (pSkill == PrimarySkill::ATTACK) auto minialPSkills = VLC->settings()->getVector(EGameSettings::HEROES_MINIMAL_PRIMARY_SKILLS);
return VLC->settings()->getInteger(EGameSettings::HEROES_MINIMAL_ATTACK); if(minialPSkills.size() != DEFAULT_MINIMAL_PSKILLS.size())
else if (pSkill == PrimarySkill::DEFENSE) logGlobal->error("gameConfig.json: heroes/minimalPrimarySkills format error. need a vector with 4 elements.");
return VLC->settings()->getInteger(EGameSettings::HEROES_MINIMAL_DEFENCE); int index = PSKILL_INDEX_MAP.at(pSkill);
else if (pSkill == PrimarySkill::SPELL_POWER) return minialPSkills.size() > index ? minialPSkills[index] : DEFAULT_MINIMAL_PSKILLS[index];
return VLC->settings()->getInteger(EGameSettings::HEROES_MINIMAL_SPELL_POWER);
else
return VLC->settings()->getInteger(EGameSettings::HEROES_MINIMAL_KNOWLEDGE);
} }
VCMI_LIB_NAMESPACE_END VCMI_LIB_NAMESPACE_END