BWAPI
Aiur/include/BWAPI/WeaponType.h
Go to the documentation of this file.
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 }
 All Classes Namespaces Files Functions Variables Enumerations Enumerator Defines