BWAPI
trunk/bwapi/include/BWAPI/UnitType.h
Go to the documentation of this file.
00001 #pragma once
00002 #include <string>
00003 #include <map>
00004 #include <set>
00005 #include <BWAPI/Race.h>
00006 #include <BWAPI/UnitSizeType.h>
00007 #include "Type.h"
00008 #define BWAPI_UNIT_TYPE_MAX_COUNT 234
00009 
00010 namespace BWAPI
00011 {
00012   class TechType;
00013   class UpgradeType;
00014   class WeaponType;
00015 
00018   class UnitType : public Type
00019   {
00020   public:
00021     UnitType();
00022     UnitType(int id);
00023 
00025     const std::string &getName() const;
00026     const char *c_str() const;
00027 
00030     Race getRace() const;
00031 
00038     const std::pair< UnitType, int > whatBuilds() const;
00039 
00044     const std::map< UnitType, int >& requiredUnits() const;
00045 
00048     TechType requiredTech() const;
00049 
00052     TechType cloakingTech() const;
00053 
00056     const std::set< TechType >& abilities() const;
00057 
00059     const std::set< UpgradeType >& upgrades() const;
00060 
00064     UpgradeType armorUpgrade() const;
00065 
00067     int maxHitPoints() const;
00068 
00070     int maxShields() const;
00071 
00073     int maxEnergy() const;
00074 
00076     int armor() const;
00077 
00081     int mineralPrice() const;
00082 
00084     int gasPrice() const;
00085 
00087     int buildTime() const;
00088 
00091     int supplyRequired() const;
00092 
00096     int supplyProvided() const;
00097 
00099     int spaceRequired() const;
00100 
00102     int spaceProvided() const;
00103 
00105     int buildScore() const;
00106 
00108     int destroyScore() const;
00109 
00111     UnitSizeType size() const;
00112 
00115     int tileWidth() const;
00116 
00119     int tileHeight() const;
00120 
00122     int dimensionLeft() const;
00123 
00125     int dimensionUp() const;
00126 
00128     int dimensionRight() const;
00129 
00131     int dimensionDown() const;
00132 
00134     int seekRange() const;
00135 
00137     int sightRange() const;
00138 
00140     WeaponType groundWeapon() const;
00141 
00142     // TODO: add doc
00143     int maxGroundHits() const;
00144 
00146     WeaponType airWeapon() const;
00147 
00148     // TODO: add doc
00149     int maxAirHits() const;
00150 
00154     double topSpeed() const;
00155 
00158     int acceleration() const;
00159 
00162     int haltDistance() const;
00163 
00166     int turnRadius() const;
00167 
00172     bool canProduce() const;
00173 
00176     bool canAttack() const;
00177 
00180     bool canMove() const;
00181 
00183     bool isFlyer() const;
00184 
00186     bool regeneratesHP() const;
00187 
00189     bool isSpellcaster() const;
00190 
00193     bool hasPermanentCloak() const;
00194 
00197     bool isInvincible() const;
00198 
00200     bool isOrganic() const;
00201 
00203     bool isMechanical() const;
00204 
00206     bool isRobotic() const;
00207 
00211     bool isDetector() const;
00212 
00215     bool isResourceContainer() const;
00216 
00219     bool isResourceDepot() const;
00220 
00222     bool isRefinery() const;
00223 
00225     bool isWorker() const;
00226 
00228     bool requiresPsi() const;
00229 
00231     bool requiresCreep() const;
00232 
00234     bool isTwoUnitsInOneEgg() const;
00235 
00237     bool isBurrowable() const;
00238 
00241     bool isCloakable() const;
00242 
00244     bool isBuilding() const;
00245 
00247     bool isAddon() const;
00248 
00250     bool isFlyingBuilding() const;
00251 
00253     bool isNeutral() const;
00254 
00256     bool isHero() const;
00257 
00259     bool isPowerup() const;
00260 
00262     bool isBeacon() const;
00263 
00265     bool isFlagBeacon() const;
00266 
00268     bool isSpecialBuilding() const;
00269 
00271     bool isSpell() const;
00272 
00274     bool producesLarva() const;
00275 
00277     bool isMineralField() const;
00278 
00281     bool canBuildAddon() const;
00282   };
00283   namespace UnitTypes
00284   {
00285 
00288     UnitType getUnitType(std::string name);
00289 
00290     int maxUnitWidth();
00291     int maxUnitHeight();
00292 
00294     const std::set<UnitType>& allUnitTypes();
00295 
00297     const std::set<UnitType>& allMacroTypes();
00298     void init();
00299     extern const UnitType Terran_Marine;
00300     extern const UnitType Hero_Jim_Raynor_Marine;
00301     extern const UnitType Terran_Ghost;
00302     extern const UnitType Hero_Sarah_Kerrigan;
00303     extern const UnitType Hero_Samir_Duran;
00304     extern const UnitType Hero_Infested_Duran;
00305     extern const UnitType Hero_Alexei_Stukov;
00306     extern const UnitType Terran_Vulture;
00307     extern const UnitType Hero_Jim_Raynor_Vulture;
00308     extern const UnitType Terran_Goliath;
00309     extern const UnitType Hero_Alan_Schezar;
00310     extern const UnitType Terran_Siege_Tank_Tank_Mode;
00311     extern const UnitType Hero_Edmund_Duke_Tank_Mode;
00312     extern const UnitType Terran_SCV;
00313     extern const UnitType Terran_Wraith;
00314     extern const UnitType Hero_Tom_Kazansky;
00315     extern const UnitType Terran_Science_Vessel;
00316     extern const UnitType Hero_Magellan;
00317     extern const UnitType Terran_Dropship;
00318     extern const UnitType Terran_Battlecruiser;
00319     extern const UnitType Hero_Arcturus_Mengsk;
00320     extern const UnitType Hero_Hyperion;
00321     extern const UnitType Hero_Norad_II;
00322     extern const UnitType Hero_Gerard_DuGalle;
00323     extern const UnitType Terran_Vulture_Spider_Mine;
00324     extern const UnitType Terran_Nuclear_Missile;
00325     extern const UnitType Terran_Siege_Tank_Siege_Mode;
00326     extern const UnitType Hero_Edmund_Duke_Siege_Mode;
00327     extern const UnitType Terran_Firebat;
00328     extern const UnitType Hero_Gui_Montag;
00329     extern const UnitType Spell_Scanner_Sweep;
00330     extern const UnitType Terran_Medic;
00331     extern const UnitType Terran_Civilian;
00332     extern const UnitType Zerg_Larva;
00333     extern const UnitType Zerg_Egg;
00334     extern const UnitType Zerg_Zergling;
00335     extern const UnitType Hero_Devouring_One;
00336     extern const UnitType Hero_Infested_Kerrigan;
00337     extern const UnitType Zerg_Hydralisk;
00338     extern const UnitType Hero_Hunter_Killer;
00339     extern const UnitType Zerg_Ultralisk;
00340     extern const UnitType Hero_Torrasque;
00341     extern const UnitType Zerg_Broodling;
00342     extern const UnitType Zerg_Drone;
00343     extern const UnitType Zerg_Overlord;
00344     extern const UnitType Hero_Yggdrasill;
00345     extern const UnitType Zerg_Mutalisk;
00346     extern const UnitType Hero_Kukulza_Mutalisk;
00347     extern const UnitType Zerg_Guardian;
00348     extern const UnitType Hero_Kukulza_Guardian;
00349     extern const UnitType Zerg_Queen;
00350     extern const UnitType Hero_Matriarch;
00351     extern const UnitType Zerg_Defiler;
00352     extern const UnitType Hero_Unclean_One;
00353     extern const UnitType Zerg_Scourge;
00354     extern const UnitType Zerg_Infested_Terran;
00355     extern const UnitType Terran_Valkyrie;
00356     extern const UnitType Zerg_Cocoon;
00357     extern const UnitType Protoss_Corsair;
00358     extern const UnitType Hero_Raszagal;
00359     extern const UnitType Protoss_Dark_Templar;
00360     extern const UnitType Hero_Dark_Templar;
00361     extern const UnitType Hero_Zeratul;
00362     extern const UnitType Zerg_Devourer;
00363     extern const UnitType Protoss_Dark_Archon;
00364     extern const UnitType Protoss_Probe;
00365     extern const UnitType Protoss_Zealot;
00366     extern const UnitType Hero_Fenix_Zealot;
00367     extern const UnitType Protoss_Dragoon;
00368     extern const UnitType Hero_Fenix_Dragoon;
00369     extern const UnitType Protoss_High_Templar;
00370     extern const UnitType Hero_Tassadar;
00371     extern const UnitType Hero_Aldaris;
00372     extern const UnitType Protoss_Archon;
00373     extern const UnitType Hero_Tassadar_Zeratul_Archon;
00374     extern const UnitType Protoss_Shuttle;
00375     extern const UnitType Protoss_Scout;
00376     extern const UnitType Hero_Mojo;
00377     extern const UnitType Hero_Artanis;
00378     extern const UnitType Protoss_Arbiter;
00379     extern const UnitType Hero_Danimoth;
00380     extern const UnitType Protoss_Carrier;
00381     extern const UnitType Hero_Gantrithor;
00382     extern const UnitType Protoss_Interceptor;
00383     extern const UnitType Protoss_Reaver;
00384     extern const UnitType Hero_Warbringer;
00385     extern const UnitType Protoss_Observer;
00386     extern const UnitType Protoss_Scarab;
00387     extern const UnitType Critter_Rhynadon;
00388     extern const UnitType Critter_Bengalaas;
00389     extern const UnitType Special_Cargo_Ship;
00390     extern const UnitType Special_Mercenary_Gunship;
00391     extern const UnitType Critter_Scantid;
00392     extern const UnitType Critter_Kakaru;
00393     extern const UnitType Critter_Ragnasaur;
00394     extern const UnitType Critter_Ursadon;
00395     extern const UnitType Zerg_Lurker_Egg;
00396     extern const UnitType Zerg_Lurker;
00397     extern const UnitType Spell_Disruption_Web;
00398     extern const UnitType Terran_Command_Center;
00399     extern const UnitType Terran_Comsat_Station;
00400     extern const UnitType Terran_Nuclear_Silo;
00401     extern const UnitType Terran_Supply_Depot;
00402     extern const UnitType Terran_Refinery;
00403     extern const UnitType Terran_Barracks;
00404     extern const UnitType Terran_Academy;
00405     extern const UnitType Terran_Factory;
00406     extern const UnitType Terran_Starport;
00407     extern const UnitType Terran_Control_Tower;
00408     extern const UnitType Terran_Science_Facility;
00409     extern const UnitType Terran_Covert_Ops;
00410     extern const UnitType Terran_Physics_Lab;
00411     extern const UnitType Terran_Machine_Shop;
00412     extern const UnitType Terran_Engineering_Bay;
00413     extern const UnitType Terran_Armory;
00414     extern const UnitType Terran_Missile_Turret;
00415     extern const UnitType Terran_Bunker;
00416     extern const UnitType Special_Crashed_Norad_II;
00417     extern const UnitType Special_Ion_Cannon;
00418     extern const UnitType Zerg_Infested_Command_Center;
00419     extern const UnitType Zerg_Hatchery;
00420     extern const UnitType Zerg_Lair;
00421     extern const UnitType Zerg_Hive;
00422     extern const UnitType Zerg_Nydus_Canal;
00423     extern const UnitType Zerg_Hydralisk_Den;
00424     extern const UnitType Zerg_Defiler_Mound;
00425     extern const UnitType Zerg_Greater_Spire;
00426     extern const UnitType Zerg_Queens_Nest;
00427     extern const UnitType Zerg_Evolution_Chamber;
00428     extern const UnitType Zerg_Ultralisk_Cavern;
00429     extern const UnitType Zerg_Spire;
00430     extern const UnitType Zerg_Spawning_Pool;
00431     extern const UnitType Zerg_Creep_Colony;
00432     extern const UnitType Zerg_Spore_Colony;
00433     extern const UnitType Zerg_Sunken_Colony;
00434     extern const UnitType Special_Overmind_With_Shell;
00435     extern const UnitType Special_Overmind;
00436     extern const UnitType Zerg_Extractor;
00437     extern const UnitType Special_Mature_Chrysalis;
00438     extern const UnitType Special_Cerebrate;
00439     extern const UnitType Special_Cerebrate_Daggoth;
00440     extern const UnitType Protoss_Nexus;
00441     extern const UnitType Protoss_Robotics_Facility;
00442     extern const UnitType Protoss_Pylon;
00443     extern const UnitType Protoss_Assimilator;
00444     extern const UnitType Protoss_Observatory;
00445     extern const UnitType Protoss_Gateway;
00446     extern const UnitType Protoss_Photon_Cannon;
00447     extern const UnitType Protoss_Citadel_of_Adun;
00448     extern const UnitType Protoss_Cybernetics_Core;
00449     extern const UnitType Protoss_Templar_Archives;
00450     extern const UnitType Protoss_Forge;
00451     extern const UnitType Protoss_Stargate;
00452     extern const UnitType Special_Stasis_Cell_Prison;
00453     extern const UnitType Protoss_Fleet_Beacon;
00454     extern const UnitType Protoss_Arbiter_Tribunal;
00455     extern const UnitType Protoss_Robotics_Support_Bay;
00456     extern const UnitType Protoss_Shield_Battery;
00457     extern const UnitType Special_Khaydarin_Crystal_Form;
00458     extern const UnitType Special_Protoss_Temple;
00459     extern const UnitType Special_XelNaga_Temple;
00460     extern const UnitType Resource_Mineral_Field;
00461     extern const UnitType Resource_Mineral_Field_Type_2;
00462     extern const UnitType Resource_Mineral_Field_Type_3;
00463     extern const UnitType Special_Independant_Starport;
00464     extern const UnitType Resource_Vespene_Geyser;
00465     extern const UnitType Special_Warp_Gate;
00466     extern const UnitType Special_Psi_Disrupter;
00467     extern const UnitType Special_Power_Generator;
00468     extern const UnitType Special_Overmind_Cocoon;
00469     extern const UnitType Special_Zerg_Beacon;
00470     extern const UnitType Special_Terran_Beacon;
00471     extern const UnitType Special_Protoss_Beacon;
00472     extern const UnitType Special_Zerg_Flag_Beacon;
00473     extern const UnitType Special_Terran_Flag_Beacon;
00474     extern const UnitType Special_Protoss_Flag_Beacon;
00475     extern const UnitType Spell_Dark_Swarm;
00476     extern const UnitType Powerup_Uraj_Crystal;
00477     extern const UnitType Powerup_Khalis_Crystal;
00478     extern const UnitType Powerup_Flag;
00479     extern const UnitType Powerup_Young_Chrysalis;
00480     extern const UnitType Powerup_Psi_Emitter;
00481     extern const UnitType Powerup_Data_Disk;
00482     extern const UnitType Powerup_Khaydarin_Crystal;
00483     extern const UnitType Powerup_Mineral_Cluster_Type_1;
00484     extern const UnitType Powerup_Mineral_Cluster_Type_2;
00485     extern const UnitType Powerup_Protoss_Gas_Orb_Type_1;
00486     extern const UnitType Powerup_Protoss_Gas_Orb_Type_2;
00487     extern const UnitType Powerup_Zerg_Gas_Sac_Type_1;
00488     extern const UnitType Powerup_Zerg_Gas_Sac_Type_2;
00489     extern const UnitType Powerup_Terran_Gas_Tank_Type_1;
00490     extern const UnitType Powerup_Terran_Gas_Tank_Type_2;
00491     extern const UnitType Special_Map_Revealer;
00492     extern const UnitType Special_Floor_Missile_Trap;
00493     extern const UnitType Special_Floor_Hatch;
00494     extern const UnitType Special_Upper_Level_Door;
00495     extern const UnitType Special_Right_Upper_Level_Door;
00496     extern const UnitType Special_Pit_Door;
00497     extern const UnitType Special_Right_Pit_Door;
00498     extern const UnitType Special_Floor_Gun_Trap;
00499     extern const UnitType Special_Wall_Missile_Trap;
00500     extern const UnitType Special_Wall_Flame_Trap;
00501     extern const UnitType Special_Right_Wall_Missile_Trap;
00502     extern const UnitType Special_Right_Wall_Flame_Trap;
00503     extern const UnitType Special_Start_Location;
00504 
00505     extern const UnitType None;
00506     extern const UnitType AllUnits;
00507     extern const UnitType Men;
00508     extern const UnitType Buildings;
00509     extern const UnitType Factories;
00510     extern const UnitType Unknown;
00511 
00512   }
00513 }
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines