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