Enumerations.h 3.9 KB

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