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
"tavernInvite" : false,
// minimai primary skills for heroes
"minimalAttack": 0,
"minimalDefence": 0,
"minimalKnowledge": 1,
"minimalSpellPower": 1
"minimalPrimarySkills": [ 0, 0, 1, 1]
},
"towns":

View File

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

View File

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

View File

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