BWAPI
|
00001 #pragma once 00002 #include <string> 00003 #include <set> 00004 #include "Type.h" 00005 namespace BWAPI 00006 { 00007 class TechType; 00008 class UpgradeType; 00009 class DamageType; 00010 class ExplosionType; 00011 class WeaponType : public Type 00012 { 00013 public: 00014 WeaponType(); 00015 WeaponType(int id); 00016 00018 const std::string &getName() const; 00019 const char *c_str() const; 00020 00023 TechType getTech() const; 00024 00026 UnitType whatUses() const; 00027 00029 int damageAmount() const; 00030 00031 // TODO: add doc 00032 int damageBonus() const; 00033 00035 int damageCooldown() const; 00036 00039 int damageFactor() const; 00040 00042 UpgradeType upgradeType() const; 00043 00045 DamageType damageType() const; 00046 00048 ExplosionType explosionType() const; 00049 00052 int minRange() const; 00053 00055 int maxRange() const; 00056 00058 int innerSplashRadius() const; 00059 00061 int medianSplashRadius() const; 00062 00064 int outerSplashRadius() const; 00065 00067 bool targetsAir() const; 00068 00069 // TODO: group these methods 00071 bool targetsGround() const; 00072 bool targetsMechanical() const; 00073 bool targetsOrganic() const; 00074 bool targetsNonBuilding() const; 00075 bool targetsNonRobotic() const; 00076 bool targetsTerrain() const; 00077 bool targetsOrgOrMech() const; 00078 bool targetsOwn() const; 00079 }; 00080 namespace WeaponTypes 00081 { 00083 WeaponType getWeaponType(std::string name); 00084 00086 const std::set<WeaponType>& allWeaponTypes(); 00087 00089 const std::set<WeaponType>& normalWeaponTypes(); 00090 00092 const std::set<WeaponType>& specialWeaponTypes(); 00093 void init(); 00094 extern const WeaponType Gauss_Rifle; 00095 extern const WeaponType Gauss_Rifle_Jim_Raynor; 00096 extern const WeaponType C_10_Canister_Rifle; 00097 extern const WeaponType C_10_Canister_Rifle_Sarah_Kerrigan; 00098 extern const WeaponType C_10_Canister_Rifle_Samir_Duran; 00099 extern const WeaponType C_10_Canister_Rifle_Infested_Duran; 00100 extern const WeaponType C_10_Canister_Rifle_Alexei_Stukov; 00101 extern const WeaponType Fragmentation_Grenade; 00102 extern const WeaponType Fragmentation_Grenade_Jim_Raynor; 00103 extern const WeaponType Spider_Mines; 00104 extern const WeaponType Twin_Autocannons; 00105 extern const WeaponType Twin_Autocannons_Alan_Schezar; 00106 extern const WeaponType Hellfire_Missile_Pack; 00107 extern const WeaponType Hellfire_Missile_Pack_Alan_Schezar; 00108 extern const WeaponType Arclite_Cannon; 00109 extern const WeaponType Arclite_Cannon_Edmund_Duke; 00110 extern const WeaponType Fusion_Cutter; 00111 extern const WeaponType Gemini_Missiles; 00112 extern const WeaponType Gemini_Missiles_Tom_Kazansky; 00113 extern const WeaponType Burst_Lasers; 00114 extern const WeaponType Burst_Lasers_Tom_Kazansky; 00115 extern const WeaponType ATS_Laser_Battery; 00116 extern const WeaponType ATS_Laser_Battery_Hero; 00117 extern const WeaponType ATS_Laser_Battery_Hyperion; 00118 extern const WeaponType ATA_Laser_Battery; 00119 extern const WeaponType ATA_Laser_Battery_Hero; 00120 extern const WeaponType ATA_Laser_Battery_Hyperion; 00121 extern const WeaponType Flame_Thrower; 00122 extern const WeaponType Flame_Thrower_Gui_Montag; 00123 extern const WeaponType Arclite_Shock_Cannon; 00124 extern const WeaponType Arclite_Shock_Cannon_Edmund_Duke; 00125 extern const WeaponType Longbolt_Missile; 00126 extern const WeaponType Claws; 00127 extern const WeaponType Claws_Devouring_One; 00128 extern const WeaponType Claws_Infested_Kerrigan; 00129 extern const WeaponType Needle_Spines; 00130 extern const WeaponType Needle_Spines_Hunter_Killer; 00131 extern const WeaponType Kaiser_Blades; 00132 extern const WeaponType Kaiser_Blades_Torrasque; 00133 extern const WeaponType Toxic_Spores; 00134 extern const WeaponType Spines; 00135 extern const WeaponType Acid_Spore; 00136 extern const WeaponType Acid_Spore_Kukulza; 00137 extern const WeaponType Glave_Wurm; 00138 extern const WeaponType Glave_Wurm_Kukulza; 00139 extern const WeaponType Seeker_Spores; 00140 extern const WeaponType Subterranean_Tentacle; 00141 extern const WeaponType Suicide_Infested_Terran; 00142 extern const WeaponType Suicide_Scourge; 00143 extern const WeaponType Particle_Beam; 00144 extern const WeaponType Psi_Blades; 00145 extern const WeaponType Psi_Blades_Fenix; 00146 extern const WeaponType Phase_Disruptor; 00147 extern const WeaponType Phase_Disruptor_Fenix; 00148 extern const WeaponType Psi_Assault; 00149 extern const WeaponType Psionic_Shockwave; 00150 extern const WeaponType Psionic_Shockwave_TZ_Archon; 00151 extern const WeaponType Dual_Photon_Blasters; 00152 extern const WeaponType Dual_Photon_Blasters_Mojo; 00153 extern const WeaponType Dual_Photon_Blasters_Artanis; 00154 extern const WeaponType Anti_Matter_Missiles; 00155 extern const WeaponType Anti_Matter_Missiles_Mojo; 00156 extern const WeaponType Anti_Matter_Missiles_Artanis; 00157 extern const WeaponType Phase_Disruptor_Cannon; 00158 extern const WeaponType Phase_Disruptor_Cannon_Danimoth; 00159 extern const WeaponType Pulse_Cannon; 00160 extern const WeaponType STS_Photon_Cannon; 00161 extern const WeaponType STA_Photon_Cannon; 00162 extern const WeaponType Scarab; 00163 extern const WeaponType Neutron_Flare; 00164 extern const WeaponType Halo_Rockets; 00165 extern const WeaponType Corrosive_Acid; 00166 extern const WeaponType Subterranean_Spines; 00167 extern const WeaponType Warp_Blades; 00168 extern const WeaponType Warp_Blades_Hero; 00169 extern const WeaponType Warp_Blades_Zeratul; 00170 extern const WeaponType Independant_Laser_Battery; 00171 extern const WeaponType Twin_Autocannons_Floor_Trap; 00172 extern const WeaponType Hellfire_Missile_Pack_Wall_Trap; 00173 extern const WeaponType Flame_Thrower_Wall_Trap; 00174 extern const WeaponType Hellfire_Missile_Pack_Floor_Trap; 00175 00176 extern const WeaponType Yamato_Gun; 00177 extern const WeaponType Nuclear_Strike; 00178 extern const WeaponType Lockdown; 00179 extern const WeaponType EMP_Shockwave; 00180 extern const WeaponType Irradiate; 00181 extern const WeaponType Parasite; 00182 extern const WeaponType Spawn_Broodlings; 00183 extern const WeaponType Ensnare; 00184 extern const WeaponType Dark_Swarm; 00185 extern const WeaponType Plague; 00186 extern const WeaponType Consume; 00187 extern const WeaponType Stasis_Field; 00188 extern const WeaponType Psionic_Storm; 00189 extern const WeaponType Disruption_Web; 00190 extern const WeaponType Restoration; 00191 extern const WeaponType Mind_Control; 00192 extern const WeaponType Feedback; 00193 extern const WeaponType Optical_Flare; 00194 extern const WeaponType Maelstrom; 00195 00196 extern const WeaponType None; 00197 extern const WeaponType Unknown; 00198 } 00199 }