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