KindOf.cpp 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183
  1. /*
  2. ** Command & Conquer Generals Zero Hour(tm)
  3. ** Copyright 2025 Electronic Arts Inc.
  4. **
  5. ** This program is free software: you can redistribute it and/or modify
  6. ** it under the terms of the GNU General Public License as published by
  7. ** the Free Software Foundation, either version 3 of the License, or
  8. ** (at your option) any later version.
  9. **
  10. ** This program is distributed in the hope that it will be useful,
  11. ** but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  13. ** GNU General Public License for more details.
  14. **
  15. ** You should have received a copy of the GNU General Public License
  16. ** along with this program. If not, see <http://www.gnu.org/licenses/>.
  17. */
  18. ////////////////////////////////////////////////////////////////////////////////
  19. // //
  20. // (c) 2001-2003 Electronic Arts Inc. //
  21. // //
  22. ////////////////////////////////////////////////////////////////////////////////
  23. // Kindof.cpp /////////////////////////////////////////////////////////////////////////////////////
  24. // Part of header detangling
  25. // John McDonald, Aug 2002
  26. #include "PreRTS.h"
  27. #include "Common/KindOf.h"
  28. #include "Common/BitFlagsIO.h"
  29. const char* KindOfMaskType::s_bitNameList[] =
  30. {
  31. "OBSTACLE",
  32. "SELECTABLE",
  33. "IMMOBILE",
  34. "CAN_ATTACK",
  35. "STICK_TO_TERRAIN_SLOPE",
  36. "CAN_CAST_REFLECTIONS",
  37. "SHRUBBERY",
  38. "STRUCTURE",
  39. "INFANTRY",
  40. "VEHICLE",
  41. "AIRCRAFT",
  42. "HUGE_VEHICLE",
  43. "DOZER",
  44. "HARVESTER",
  45. "COMMANDCENTER",
  46. #ifdef ALLOW_SURRENDER
  47. "PRISON",
  48. "COLLECTS_PRISON_BOUNTY",
  49. "POW_TRUCK",
  50. #endif
  51. "LINEBUILD",
  52. "SALVAGER",
  53. "WEAPON_SALVAGER",
  54. "TRANSPORT",
  55. "BRIDGE",
  56. "LANDMARK_BRIDGE",
  57. "BRIDGE_TOWER",
  58. "PROJECTILE",
  59. "PRELOAD",
  60. "NO_GARRISON",
  61. "WAVEGUIDE",
  62. "WAVE_EFFECT",
  63. "NO_COLLIDE",
  64. "REPAIR_PAD",
  65. "HEAL_PAD",
  66. "STEALTH_GARRISON",
  67. "CASH_GENERATOR",
  68. "DRAWABLE_ONLY",
  69. "MP_COUNT_FOR_VICTORY",
  70. "REBUILD_HOLE",
  71. "SCORE",
  72. "SCORE_CREATE",
  73. "SCORE_DESTROY",
  74. "NO_HEAL_ICON",
  75. "CAN_RAPPEL",
  76. "PARACHUTABLE",
  77. #ifdef ALLOW_SURRENDER
  78. "CAN_SURRENDER",
  79. #endif
  80. "CAN_BE_REPULSED",
  81. "MOB_NEXUS",
  82. "IGNORED_IN_GUI",
  83. "CRATE",
  84. "CAPTURABLE",
  85. "CLEARED_BY_BUILD",
  86. "SMALL_MISSILE",
  87. "ALWAYS_VISIBLE",
  88. "UNATTACKABLE",
  89. "MINE",
  90. "CLEANUP_HAZARD",
  91. "PORTABLE_STRUCTURE",
  92. "ALWAYS_SELECTABLE",
  93. "ATTACK_NEEDS_LINE_OF_SIGHT",
  94. "WALK_ON_TOP_OF_WALL",
  95. "DEFENSIVE_WALL",
  96. "FS_POWER",
  97. "FS_FACTORY",
  98. "FS_BASE_DEFENSE",
  99. "FS_TECHNOLOGY",
  100. "AIRCRAFT_PATH_AROUND",
  101. "LOW_OVERLAPPABLE",
  102. "FORCEATTACKABLE",
  103. "AUTO_RALLYPOINT",
  104. "TECH_BUILDING",
  105. "POWERED",
  106. "PRODUCED_AT_HELIPAD",
  107. "DRONE",
  108. "CAN_SEE_THROUGH_STRUCTURE",
  109. "BALLISTIC_MISSILE",
  110. "CLICK_THROUGH",
  111. "SUPPLY_SOURCE_ON_PREVIEW",
  112. "PARACHUTE",
  113. "GARRISONABLE_UNTIL_DESTROYED",
  114. "BOAT",
  115. "IMMUNE_TO_CAPTURE",
  116. "HULK",
  117. "SHOW_PORTRAIT_WHEN_CONTROLLED",
  118. "SPAWNS_ARE_THE_WEAPONS",
  119. "CANNOT_BUILD_NEAR_SUPPLIES",
  120. "SUPPLY_SOURCE",
  121. "REVEAL_TO_ALL",
  122. "DISGUISER",
  123. "INERT",
  124. "HERO",
  125. "IGNORES_SELECT_ALL",
  126. "DONT_AUTO_CRUSH_INFANTRY",
  127. "CLIFF_JUMPER",
  128. "FS_SUPPLY_DROPZONE",
  129. "FS_SUPERWEAPON",
  130. "FS_BLACK_MARKET",
  131. "FS_SUPPLY_CENTER",
  132. "FS_STRATEGY_CENTER",
  133. "MONEY_HACKER",
  134. "ARMOR_SALVAGER",
  135. "REVEALS_ENEMY_PATHS",
  136. "BOOBY_TRAP",
  137. "FS_FAKE",
  138. "FS_INTERNET_CENTER",
  139. "BLAST_CRATER",
  140. "PROP",
  141. "OPTIMIZED_TREE",
  142. "FS_ADVANCED_TECH",
  143. "FS_BARRACKS",
  144. "FS_WARFACTORY",
  145. "FS_AIRFIELD",
  146. "AIRCRAFT_CARRIER",
  147. "NO_SELECT",
  148. "REJECT_UNMANNED",
  149. "CANNOT_RETALIATE",
  150. "TECH_BASE_DEFENSE",
  151. "EMP_HARDENED",
  152. "DEMOTRAP",
  153. "CONSERVATIVE_BUILDING",
  154. "IGNORE_DOCKING_BONES",
  155. NULL
  156. };
  157. KindOfMaskType KINDOFMASK_NONE; // inits to all zeroes
  158. KindOfMaskType KINDOFMASK_FS; // inits to all zeroes
  159. void initKindOfMasks()
  160. {
  161. KINDOFMASK_FS.set( KINDOF_FS_FACTORY );
  162. KINDOFMASK_FS.set( KINDOF_FS_BASE_DEFENSE );
  163. KINDOFMASK_FS.set( KINDOF_FS_TECHNOLOGY );
  164. KINDOFMASK_FS.set( KINDOF_FS_SUPPLY_DROPZONE );
  165. KINDOFMASK_FS.set( KINDOF_FS_SUPERWEAPON );
  166. KINDOFMASK_FS.set( KINDOF_FS_BLACK_MARKET );
  167. KINDOFMASK_FS.set( KINDOF_FS_SUPPLY_CENTER );
  168. KINDOFMASK_FS.set( KINDOF_FS_STRATEGY_CENTER );
  169. KINDOFMASK_FS.set( KINDOF_FS_FAKE );
  170. KINDOFMASK_FS.set( KINDOF_FS_INTERNET_CENTER );
  171. KINDOFMASK_FS.set( KINDOF_FS_ADVANCED_TECH );
  172. KINDOFMASK_FS.set( KINDOF_FS_BARRACKS );
  173. KINDOFMASK_FS.set( KINDOF_FS_WARFACTORY );
  174. KINDOFMASK_FS.set( KINDOF_FS_AIRFIELD );
  175. }