Enumerations.h 4.2 KB

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