Enumerations.h 4.0 KB

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