Enumerations.h 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266
  1. /*
  2. * Enumerations.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. enum class EAlignment : int8_t
  13. {
  14. ANY = -1,
  15. GOOD = 0,
  16. EVIL,
  17. NEUTRAL
  18. };
  19. namespace BuildingSubID
  20. {
  21. enum EBuildingSubID
  22. {
  23. DEFAULT = -50,
  24. NONE = -1,
  25. STABLES,
  26. BROTHERHOOD_OF_SWORD,
  27. CASTLE_GATE,
  28. CREATURE_TRANSFORMER,
  29. MYSTIC_POND,
  30. FOUNTAIN_OF_FORTUNE,
  31. ARTIFACT_MERCHANT,
  32. LOOKOUT_TOWER,
  33. LIBRARY,
  34. MANA_VORTEX,
  35. PORTAL_OF_SUMMONING,
  36. ESCAPE_TUNNEL,
  37. FREELANCERS_GUILD,
  38. BALLISTA_YARD,
  39. ATTACK_VISITING_BONUS,
  40. MAGIC_UNIVERSITY,
  41. SPELL_POWER_GARRISON_BONUS,
  42. ATTACK_GARRISON_BONUS,
  43. DEFENSE_GARRISON_BONUS,
  44. DEFENSE_VISITING_BONUS,
  45. SPELL_POWER_VISITING_BONUS,
  46. KNOWLEDGE_VISITING_BONUS,
  47. EXPERIENCE_VISITING_BONUS,
  48. LIGHTHOUSE,
  49. TREASURY,
  50. THIEVES_GUILD,
  51. CUSTOM_VISITING_BONUS,
  52. CUSTOM_VISITING_REWARD
  53. };
  54. }
  55. enum class EMarketMode : int8_t
  56. {
  57. RESOURCE_RESOURCE, RESOURCE_PLAYER, CREATURE_RESOURCE, RESOURCE_ARTIFACT,
  58. ARTIFACT_RESOURCE, ARTIFACT_EXP, CREATURE_EXP, CREATURE_UNDEAD, RESOURCE_SKILL,
  59. MARKET_AFTER_LAST_PLACEHOLDER
  60. };
  61. enum class EAiTactic : int8_t
  62. {
  63. NONE = -1,
  64. RANDOM = 0,
  65. WARRIOR = 1,
  66. BUILDER = 2,
  67. EXPLORER = 3
  68. };
  69. enum class EBuildingState : int8_t
  70. {
  71. HAVE_CAPITAL, NO_WATER, FORBIDDEN, ADD_MAGES_GUILD, ALREADY_PRESENT, CANT_BUILD_TODAY,
  72. NO_RESOURCES, ALLOWED, PREREQUIRES, MISSING_BASE, BUILDING_ERROR, TOWN_NOT_OWNED
  73. };
  74. enum class ESpellCastProblem : int8_t
  75. {
  76. OK, NO_HERO_TO_CAST_SPELL, CASTS_PER_TURN_LIMIT, NO_SPELLBOOK,
  77. HERO_DOESNT_KNOW_SPELL, NOT_ENOUGH_MANA, ADVMAP_SPELL_INSTEAD_OF_BATTLE_SPELL,
  78. SPELL_LEVEL_LIMIT_EXCEEDED, NO_SPELLS_TO_DISPEL,
  79. NO_APPROPRIATE_TARGET, STACK_IMMUNE_TO_SPELL, WRONG_SPELL_TARGET, ONGOING_TACTIC_PHASE,
  80. MAGIC_IS_BLOCKED, //For Orb of Inhibition and similar - no casting at all
  81. INVALID
  82. };
  83. namespace ECommander
  84. {
  85. enum SecondarySkills {ATTACK, DEFENSE, HEALTH, DAMAGE, SPEED, SPELL_POWER, CASTS, RESISTANCE};
  86. const int MAX_SKILL_LEVEL = 5;
  87. }
  88. enum class EWallPart : int8_t
  89. {
  90. INDESTRUCTIBLE_PART_OF_GATE = -3, INDESTRUCTIBLE_PART = -2, INVALID = -1,
  91. KEEP = 0, BOTTOM_TOWER, BOTTOM_WALL, BELOW_GATE, OVER_GATE, UPPER_WALL, UPPER_TOWER, GATE,
  92. PARTS_COUNT /* This constant SHOULD always stay as the last item in the enum. */
  93. };
  94. enum class EWallState : int8_t
  95. {
  96. NONE = -1, //no wall
  97. DESTROYED,
  98. DAMAGED,
  99. INTACT,
  100. REINFORCED, // walls in towns with castle
  101. };
  102. enum class EGateState : int8_t
  103. {
  104. NONE,
  105. CLOSED,
  106. BLOCKED, // gate is blocked in closed state, e.g. by creature
  107. OPENED,
  108. DESTROYED
  109. };
  110. enum class ETileType : int8_t
  111. {
  112. FREE,
  113. POSSIBLE,
  114. BLOCKED,
  115. USED
  116. };
  117. enum class ETeleportChannelType : int8_t
  118. {
  119. IMPASSABLE,
  120. BIDIRECTIONAL,
  121. UNIDIRECTIONAL,
  122. MIXED
  123. };
  124. namespace MasteryLevel
  125. {
  126. enum Type
  127. {
  128. NONE,
  129. BASIC,
  130. ADVANCED,
  131. EXPERT,
  132. LEVELS_SIZE
  133. };
  134. }
  135. enum class Date : int8_t
  136. {
  137. DAY = 0,
  138. DAY_OF_WEEK = 1,
  139. WEEK = 2,
  140. MONTH = 3,
  141. DAY_OF_MONTH
  142. };
  143. enum class EActionType : int8_t
  144. {
  145. NO_ACTION,
  146. END_TACTIC_PHASE,
  147. RETREAT,
  148. SURRENDER,
  149. HERO_SPELL,
  150. WALK,
  151. WAIT,
  152. DEFEND,
  153. WALK_AND_ATTACK,
  154. SHOOT,
  155. CATAPULT,
  156. MONSTER_SPELL,
  157. BAD_MORALE,
  158. STACK_HEAL,
  159. };
  160. enum class EDiggingStatus : int8_t
  161. {
  162. UNKNOWN = -1,
  163. CAN_DIG = 0,
  164. LACK_OF_MOVEMENT,
  165. WRONG_TERRAIN,
  166. TILE_OCCUPIED,
  167. BACKPACK_IS_FULL
  168. };
  169. enum class EPlayerStatus : int8_t
  170. {
  171. WRONG = -1,
  172. INGAME,
  173. LOSER,
  174. WINNER
  175. };
  176. enum class PlayerRelations : int8_t
  177. {
  178. ENEMIES,
  179. ALLIES,
  180. SAME_PLAYER
  181. };
  182. enum class EMetaclass : int8_t
  183. {
  184. INVALID = 0,
  185. ARTIFACT,
  186. CREATURE,
  187. FACTION,
  188. EXPERIENCE,
  189. HERO,
  190. HEROCLASS,
  191. LUCK,
  192. MANA,
  193. MORALE,
  194. MOVEMENT,
  195. OBJECT,
  196. PRIMARY_SKILL,
  197. SECONDARY_SKILL,
  198. SPELL,
  199. RESOURCE
  200. };
  201. enum class EHealLevel: int8_t
  202. {
  203. HEAL,
  204. RESURRECT,
  205. OVERHEAL
  206. };
  207. enum class EHealPower : int8_t
  208. {
  209. ONE_BATTLE,
  210. PERMANENT
  211. };
  212. enum class EBattleResult : int8_t
  213. {
  214. NORMAL = 0,
  215. ESCAPE = 1,
  216. SURRENDER = 2,
  217. };
  218. enum class ETileVisibility : int8_t // Fog of war change
  219. {
  220. HIDDEN,
  221. REVEALED
  222. };
  223. enum class EArmyFormation : int8_t
  224. {
  225. LOOSE,
  226. TIGHT
  227. };
  228. enum class EMovementMode : int8_t
  229. {
  230. STANDARD,
  231. DIMENSION_DOOR,
  232. MONOLITH,
  233. CASTLE_GATE,
  234. TOWN_PORTAL,
  235. };
  236. VCMI_LIB_NAMESPACE_END