IGameSettings.h 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  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. BANKS_SHOW_GUARDS_COMPOSITION,
  16. BONUSES_GLOBAL,
  17. BONUSES_PER_HERO,
  18. CAMPAIGN_UNLOCK_ALL,
  19. CHEATS_BUILD_WITHOUT_GRAIL,
  20. COMBAT_ABILITY_BIAS,
  21. COMBAT_AREA_SHOT_CAN_TARGET_EMPTY_HEX,
  22. COMBAT_ATTACK_POINT_DAMAGE_FACTOR,
  23. COMBAT_ATTACK_POINT_DAMAGE_FACTOR_CAP,
  24. COMBAT_DEFENSE_POINT_DAMAGE_FACTOR,
  25. COMBAT_DEFENSE_POINT_DAMAGE_FACTOR_CAP,
  26. COMBAT_GOOD_MORALE_CHANCE,
  27. COMBAT_BAD_MORALE_CHANCE,
  28. COMBAT_MORALE_DICE_SIZE,
  29. COMBAT_MORALE_BIAS,
  30. COMBAT_GOOD_LUCK_CHANCE,
  31. COMBAT_BAD_LUCK_CHANCE,
  32. COMBAT_LUCK_DICE_SIZE,
  33. COMBAT_LUCK_BIAS,
  34. COMBAT_LAYOUTS,
  35. COMBAT_ONE_HEX_TRIGGERS_OBSTACLES,
  36. COMBAT_NO_SPELL_HIT_AND_RUN_ROUNDS,
  37. CREATURES_ALLOW_ALL_FOR_DOUBLE_MONTH,
  38. CREATURES_ALLOW_RANDOM_SPECIAL_WEEKS,
  39. CREATURES_DAILY_STACK_EXPERIENCE,
  40. CREATURES_ALLOW_JOINING_FOR_FREE,
  41. CREATURES_JOINING_PERCENTAGE,
  42. CREATURES_WEEKLY_GROWTH_CAP,
  43. CREATURES_WEEKLY_GROWTH_PERCENT,
  44. CREATURES_ADDITIONAL_WEEKLY_GROWTH_SPECIAL_WEEK,
  45. CREATURES_MONTH_DOUBLE_GROWTH_PROBABILITY,
  46. CREATURES_MONTH_PLAGUE_PROBABILITY,
  47. CREATURES_WEEK_SPECIAL_PROBABILITY,
  48. DWELLINGS_ACCUMULATE_WHEN_NEUTRAL,
  49. DWELLINGS_ACCUMULATE_WHEN_OWNED,
  50. DWELLINGS_MERGE_ON_RECRUIT,
  51. GENERAL_DAYS_PER_WEEK,
  52. GENERAL_WEEKS_PER_MONTH,
  53. HEROES_BACKPACK_CAP,
  54. HEROES_BASE_SCOUNTING_RANGE,
  55. HEROES_MINIMAL_PRIMARY_SKILLS,
  56. HEROES_PER_PLAYER_ON_MAP_CAP,
  57. HEROES_PER_PLAYER_TOTAL_CAP,
  58. HEROES_RETREAT_ON_WIN_WITHOUT_TROOPS,
  59. HEROES_STARTING_STACKS_CHANCES,
  60. HEROES_TAVERN_INVITE,
  61. HEROES_MOVEMENT_COST_BASE,
  62. HEROES_MOVEMENT_POINTS_LAND,
  63. HEROES_MOVEMENT_POINTS_SEA,
  64. HEROES_SKILL_PER_HERO,
  65. HEROES_SPECIALTY_CREATURE_GROWTH,
  66. HEROES_SPECIALTY_SECONDARY_SKILL_GROWTH,
  67. LEVEL_UP_TOTAL_SKILLS_AMOUNT,
  68. LEVEL_UP_UPGRADED_SKILLS_AMOUNT,
  69. INTERFACE_PLAYER_COLORED_BACKGROUND,
  70. MAP_FORMAT_ARMAGEDDONS_BLADE,
  71. MAP_FORMAT_CHRONICLES,
  72. MAP_FORMAT_HORN_OF_THE_ABYSS,
  73. MAP_FORMAT_IN_THE_WAKE_OF_GODS,
  74. MAP_FORMAT_JSON_VCMI,
  75. MAP_FORMAT_RESTORATION_OF_ERATHIA,
  76. MAP_FORMAT_SHADOW_OF_DEATH,
  77. MAP_OBJECTS_H3_BUG_QUEST_TAKES_ENTIRE_ARMY,
  78. MARKETS_BLACK_MARKET_RESTOCK_PERIOD,
  79. MARKETS_UNIVERSITY_GOLD_COST,
  80. MODULE_COMMANDERS,
  81. MODULE_STACK_ARTIFACT,
  82. MODULE_STACK_EXPERIENCE,
  83. PATHFINDER_IGNORE_GUARDS,
  84. PATHFINDER_ORIGINAL_FLY_RULES,
  85. PATHFINDER_USE_BOAT,
  86. PATHFINDER_USE_MONOLITH_ONE_WAY_RANDOM,
  87. PATHFINDER_USE_MONOLITH_ONE_WAY_UNIQUE,
  88. PATHFINDER_USE_MONOLITH_TWO_WAY,
  89. PATHFINDER_USE_WHIRLPOOL,
  90. RESOURCES_WEEKLY_BONUSES_AI,
  91. SPELLS_DIMENSION_DOOR_TRIGGERS_GUARDS,
  92. SPELLS_TOMES_GRANT_BANNED_SPELLS,
  93. TEXTS_ARTIFACT,
  94. TEXTS_CREATURE,
  95. TEXTS_FACTION,
  96. TEXTS_HERO,
  97. TEXTS_HERO_CLASS,
  98. TEXTS_OBJECT,
  99. TEXTS_RIVER,
  100. TEXTS_ROAD,
  101. TEXTS_SPELL,
  102. TEXTS_TERRAIN,
  103. TOWNS_BUILDINGS_PER_TURN_CAP,
  104. TOWNS_STARTING_DWELLING_CHANCES,
  105. TOWNS_BASE_SCOUNTING_RANGE,
  106. TOWNS_SPELL_RESEARCH,
  107. TOWNS_SPELL_RESEARCH_COST,
  108. TOWNS_SPELL_RESEARCH_PER_DAY,
  109. TOWNS_SPELL_RESEARCH_COST_MULTIPLIER_PER_RESEARCH,
  110. TOWNS_SPELL_RESEARCH_COST_MULTIPLIER_PER_REROLL,
  111. OPTIONS_COUNT
  112. };
  113. class DLL_LINKAGE IGameSettings
  114. {
  115. public:
  116. virtual JsonNode getFullConfig() const = 0;
  117. virtual const JsonNode & getValue(EGameSettings option) const = 0;
  118. virtual ~IGameSettings() = default;
  119. bool getBoolean(EGameSettings option) const;
  120. int64_t getInteger(EGameSettings option) const;
  121. double getDouble(EGameSettings option) const;
  122. std::vector<int> getVector(EGameSettings option) const;
  123. int getVectorValue(EGameSettings option, size_t index) const;
  124. };
  125. VCMI_LIB_NAMESPACE_END