Enumerations.h 4.0 KB

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