IGameSettings.h 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. /*
  2. * IIGameSettings.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. DWELLINGS_MERGE_ON_RECRUIT,
  33. HEROES_PER_PLAYER_ON_MAP_CAP,
  34. HEROES_PER_PLAYER_TOTAL_CAP,
  35. HEROES_RETREAT_ON_WIN_WITHOUT_TROOPS,
  36. HEROES_STARTING_STACKS_CHANCES,
  37. HEROES_BACKPACK_CAP,
  38. HEROES_TAVERN_INVITE,
  39. HEROES_MINIMAL_PRIMARY_SKILLS,
  40. MARKETS_BLACK_MARKET_RESTOCK_PERIOD,
  41. BANKS_SHOW_GUARDS_COMPOSITION,
  42. MODULE_COMMANDERS,
  43. MODULE_STACK_ARTIFACT,
  44. MODULE_STACK_EXPERIENCE,
  45. TEXTS_ARTIFACT,
  46. TEXTS_CREATURE,
  47. TEXTS_FACTION,
  48. TEXTS_HERO,
  49. TEXTS_HERO_CLASS,
  50. TEXTS_OBJECT,
  51. TEXTS_RIVER,
  52. TEXTS_ROAD,
  53. TEXTS_SPELL,
  54. TEXTS_TERRAIN,
  55. MAP_FORMAT_RESTORATION_OF_ERATHIA,
  56. MAP_FORMAT_ARMAGEDDONS_BLADE,
  57. MAP_FORMAT_SHADOW_OF_DEATH,
  58. MAP_FORMAT_CHRONICLES,
  59. MAP_FORMAT_HORN_OF_THE_ABYSS,
  60. MAP_FORMAT_JSON_VCMI,
  61. MAP_FORMAT_IN_THE_WAKE_OF_GODS,
  62. PATHFINDER_USE_BOAT,
  63. PATHFINDER_IGNORE_GUARDS,
  64. PATHFINDER_USE_MONOLITH_TWO_WAY,
  65. PATHFINDER_USE_MONOLITH_ONE_WAY_UNIQUE,
  66. PATHFINDER_USE_MONOLITH_ONE_WAY_RANDOM,
  67. PATHFINDER_USE_WHIRLPOOL,
  68. PATHFINDER_ORIGINAL_FLY_RULES,
  69. TOWNS_BUILDINGS_PER_TURN_CAP,
  70. TOWNS_STARTING_DWELLING_CHANCES,
  71. COMBAT_ONE_HEX_TRIGGERS_OBSTACLES,
  72. DIMENSION_DOOR_ONLY_TO_UNCOVERED_TILES,
  73. DIMENSION_DOOR_EXPOSES_TERRAIN_TYPE,
  74. DIMENSION_DOOR_FAILURE_SPENDS_POINTS,
  75. DIMENSION_DOOR_TRIGGERS_GUARDS,
  76. DIMENSION_DOOR_TOURNAMENT_RULES_LIMIT,
  77. OPTIONS_COUNT,
  78. OPTIONS_BEGIN = BONUSES_GLOBAL
  79. };
  80. class DLL_LINKAGE IGameSettings
  81. {
  82. public:
  83. virtual JsonNode getFullConfig() const = 0;
  84. virtual const JsonNode & getValue(EGameSettings option) const = 0;
  85. virtual ~IGameSettings() = default;
  86. bool getBoolean(EGameSettings option) const;
  87. int64_t getInteger(EGameSettings option) const;
  88. double getDouble(EGameSettings option) const;
  89. std::vector<int> getVector(EGameSettings option) const;
  90. };
  91. VCMI_LIB_NAMESPACE_END