Enumerations.h 4.0 KB

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