GameSettings.h 1.9 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. TEXTS_HERO_CLASS,
  16. TEXTS_ARTIFACT,
  17. TEXTS_CREATURE,
  18. TEXTS_FACTION,
  19. TEXTS_HERO,
  20. TEXTS_SPELL,
  21. TEXTS_OBJECT,
  22. TEXTS_TERRAIN,
  23. TEXTS_RIVER,
  24. TEXTS_ROAD,
  25. TEXTS_MAP_VERSION,
  26. MODULE_STACK_EXPERIENCE,
  27. MODULE_STACK_ARTIFACT,
  28. MODULE_COMMANDERS,
  29. BOOL_WINNING_HERO_WITH_NO_TROOPS_RETREATS,
  30. BOOL_BLACK_MARKET_MONTHLY_ARTIFACTS_CHANGE,
  31. BOOL_NO_RANDOM_SPECIAL_WEEKS_AND_MONTHS,
  32. BOOL_DWELLINGS_ACCUMULATE_CREATURES,
  33. BOOL_ALL_CREATURES_GET_DOUBLE_MONTHS,
  34. BOOL_NEGATIVE_LUCK,
  35. INT_CREEP_SIZE,
  36. INT_WEEKLY_GROWTH,
  37. INT_NEUTRAL_STACK_EXP,
  38. INT_MAX_BUILDING_PER_TURN,
  39. INT_MAX_HEROES_AVAILABLE_PER_PLAYER,
  40. INT_MAX_HEROES_ON_MAP_PER_PLAYER,
  41. DOUBLE_ATTACK_POINT_DMG_MULTIPLIER,
  42. DOUBLE_ATTACK_POINTS_DMG_MULTIPLIER_CAP,
  43. DOUBLE_DEFENSE_POINT_DMG_MULTIPLIER,
  44. DOUBLE_DEFENSE_POINTS_DMG_MULTIPLIER_CAP,
  45. VECTOR_HERO_STARTING_ARMY_STACKS_COUNT_CHANCES,
  46. VECTOR_DEFAULT_BUILDING_SET_DWELLING_CHANCES,
  47. BONUSES_LIST_GLOBAL,
  48. BONUSES_LIST_HERO,
  49. OPTIONS_COUNT
  50. };
  51. class DLL_LINKAGE IGameSettings
  52. {
  53. public:
  54. virtual const JsonNode & getValue(EGameSettings option) const = 0;
  55. bool getBoolean(EGameSettings option) const;
  56. int64_t getInteger(EGameSettings option) const;
  57. double getDouble(EGameSettings option) const;
  58. };
  59. class DLL_LINKAGE GameSettings final : public IGameSettings
  60. {
  61. std::vector<JsonNode> gameSettings;
  62. public:
  63. GameSettings();
  64. void load(const JsonNode & input);
  65. const JsonNode & getValue(EGameSettings option) const override;
  66. template<typename Handler>
  67. void serialize(Handler & h, const int version)
  68. {
  69. h & gameSettings;
  70. }
  71. };
  72. VCMI_LIB_NAMESPACE_END