GameSettings.h 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. /*
  2. * GameSettings.h, 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. #pragma once
  11. VCMI_LIB_NAMESPACE_BEGIN
  12. class JsonNode;
  13. enum class EGameSettings
  14. {
  15. BONUSES_GLOBAL,
  16. BONUSES_PER_HERO,
  17. COMBAT_ATTACK_POINT_DAMAGE_FACTOR,
  18. COMBAT_ATTACK_POINT_DAMAGE_FACTOR_CAP,
  19. COMBAT_BAD_LUCK_DICE,
  20. COMBAT_BAD_MORALE_DICE,
  21. COMBAT_DEFENSE_POINT_DAMAGE_FACTOR,
  22. COMBAT_DEFENSE_POINT_DAMAGE_FACTOR_CAP,
  23. COMBAT_GOOD_LUCK_DICE,
  24. COMBAT_GOOD_MORALE_DICE,
  25. CREATURES_ALLOW_ALL_FOR_DOUBLE_MONTH,
  26. CREATURES_ALLOW_RANDOM_SPECIAL_WEEKS,
  27. CREATURES_DAILY_STACK_EXPERIENCE,
  28. CREATURES_WEEKLY_GROWTH_CAP,
  29. CREATURES_WEEKLY_GROWTH_PERCENT,
  30. DWELLINGS_ACCUMULATE_WHEN_NEUTRAL,
  31. DWELLINGS_ACCUMULATE_WHEN_OWNED,
  32. HEROES_PER_PLAYER_ON_MAP_CAP,
  33. HEROES_PER_PLAYER_TOTAL_CAP,
  34. HEROES_RETREAT_ON_WIN_WITHOUT_TROOPS,
  35. HEROES_STARTING_STACKS_CHANCES,
  36. HEROES_BACKPACK_CAP,
  37. MARKETS_BLACK_MARKET_RESTOCK_PERIOD,
  38. MODULE_COMMANDERS,
  39. MODULE_STACK_ARTIFACT,
  40. MODULE_STACK_EXPERIENCE,
  41. TEXTS_ARTIFACT,
  42. TEXTS_CREATURE,
  43. TEXTS_FACTION,
  44. TEXTS_HERO,
  45. TEXTS_HERO_CLASS,
  46. TEXTS_MAP_VERSION,
  47. TEXTS_OBJECT,
  48. TEXTS_RIVER,
  49. TEXTS_ROAD,
  50. TEXTS_SPELL,
  51. TEXTS_TERRAIN,
  52. TOWNS_BUILDINGS_PER_TURN_CAP,
  53. TOWNS_STARTING_DWELLING_CHANCES,
  54. OPTIONS_COUNT
  55. };
  56. class DLL_LINKAGE IGameSettings
  57. {
  58. public:
  59. virtual const JsonNode & getValue(EGameSettings option) const = 0;
  60. bool getBoolean(EGameSettings option) const;
  61. int64_t getInteger(EGameSettings option) const;
  62. double getDouble(EGameSettings option) const;
  63. std::vector<int> getVector(EGameSettings option) const;
  64. };
  65. class DLL_LINKAGE GameSettings final : public IGameSettings
  66. {
  67. std::vector<JsonNode> gameSettings;
  68. public:
  69. GameSettings();
  70. void load(const JsonNode & input);
  71. const JsonNode & getValue(EGameSettings option) const override;
  72. template<typename Handler>
  73. void serialize(Handler & h, const int version)
  74. {
  75. h & gameSettings;
  76. }
  77. };
  78. VCMI_LIB_NAMESPACE_END