MimialPrimarySkill.cpp 1.1 KB

12345678910111213141516171819202122232425262728293031323334
  1. /*
  2. * MinimalPrimarySkill.cpp, part of VCMI engine
  3. *
  4. * Authors: listed in file AUTHORS in main folder
  5. *
  6. * License: GNU General Public License v2.0 or later
  7. * Full text of license available in license.txt file, in main folder
  8. *
  9. */
  10. #include "StdInc.h"
  11. #include "MinimalPrimarySkill.h"
  12. #include "VCMI_Lib.h"
  13. #include "GameSettings.h"
  14. VCMI_LIB_NAMESPACE_BEGIN
  15. const std::vector<int> DEFAULT_MINIMAL_PSKILLS= {0, 0, 1, 1};
  16. const std::map<PrimarySkill, int> PSKILL_INDEX_MAP = {
  17. {PrimarySkill::ATTACK, 0},
  18. {PrimarySkill::DEFENSE, 1},
  19. {PrimarySkill::SPELL_POWER, 2},
  20. {PrimarySkill::KNOWLEDGE, 3}
  21. };
  22. int getPrimarySkillMinimum(PrimarySkill pSkill)
  23. {
  24. auto minialPSkills = VLC->settings()->getVector(EGameSettings::HEROES_MINIMAL_PRIMARY_SKILLS);
  25. if(minialPSkills.size() != DEFAULT_MINIMAL_PSKILLS.size())
  26. logGlobal->error("gameConfig.json: heroes/minimalPrimarySkills format error. need a vector with 4 elements.");
  27. int index = PSKILL_INDEX_MAP.at(pSkill);
  28. return minialPSkills.size() > index ? minialPSkills[index] : DEFAULT_MINIMAL_PSKILLS[index];
  29. }
  30. VCMI_LIB_NAMESPACE_END