BWAPI
|
00001 #pragma once 00002 #include <BWAPI.h> 00003 #include <BWTA.h> 00004 enum FilterFlag 00005 { 00006 exists = 1, 00007 isAccelerating, 00008 isAttacking, 00009 isBeingConstructed, 00010 isBeingGathered, 00011 isBeingHealed, 00012 isBlind, 00013 isBraking, 00014 isBurrowed, 00015 isCarryingGas, 00016 isCarryingMinerals, 00017 isCloaked, 00018 isCompleted, 00019 isConstructing, 00020 isDefenseMatrixed, 00021 isDetected, 00022 isEnsnared, 00023 isFollowing, 00024 isGatheringGas, 00025 isGatheringMinerals, 00026 isHallucination, 00027 isHoldingPosition, 00028 isIdle, 00029 isInterruptible, 00030 isIrradiated, 00031 isLifted, 00032 isLoaded, 00033 isLockedDown, 00034 isMaelstrommed, 00035 isMorphing, 00036 isMoving, 00037 isParasited, 00038 isPatrolling, 00039 isPlagued, 00040 isRepairing, 00041 isResearching, 00042 isSelected, 00043 isSieged, 00044 isStartingAttack, 00045 isStasised, 00046 isStimmed, 00047 isStuck, 00048 isTraining, 00049 isUnderStorm, 00050 isUnpowered, 00051 isUpgrading, 00052 isVisible, 00053 00054 canProduce, 00055 canAttack, 00056 canMove, 00057 isFlyer, 00058 regeneratesHP, 00059 isSpellcaster, 00060 hasPermanentCloak, 00061 isInvincible, 00062 isOrganic, 00063 isMechanical, 00064 isRobotic, 00065 isDetector, 00066 isResourceContainer, 00067 isResourceDepot, 00068 isRefinery, 00069 isWorker, 00070 requiresPsi, 00071 requiresCreep, 00072 isTwoUnitsInOneEgg, 00073 isBurrowable, 00074 isCloakable, 00075 isBuilding, 00076 isAddon, 00077 isFlyingBuilding, 00078 isNeutral, 00079 isHero, 00080 isPowerup, 00081 isBeacon, 00082 isFlagBeacon, 00083 isSpecialBuilding, 00084 isSpell, 00085 00086 Terran_Firebat, 00087 Terran_Ghost, 00088 Terran_Goliath, 00089 Terran_Marine, 00090 Terran_Medic, 00091 Terran_SCV, 00092 Terran_Siege_Tank, 00093 Terran_Vulture, 00094 Terran_Vulture_Spider_Mine, 00095 Terran_Battlecruiser, 00096 Terran_Dropship, 00097 Terran_Nuclear_Missile, 00098 Terran_Science_Vessel, 00099 Terran_Valkyrie, 00100 Terran_Wraith, 00101 Hero_Alan_Schezar, 00102 Hero_Alexei_Stukov, 00103 Hero_Arcturus_Mengsk, 00104 Hero_Edmund_Duke, 00105 Hero_Gerard_DuGalle, 00106 Hero_Gui_Montag, 00107 Hero_Hyperion, 00108 Hero_Jim_Raynor_Marine, 00109 Hero_Jim_Raynor_Vulture, 00110 Hero_Magellan, 00111 Hero_Norad_II, 00112 Hero_Samir_Duran, 00113 Hero_Sarah_Kerrigan, 00114 Hero_Tom_Kazansky, 00115 Terran_Civilian, 00116 Terran_Academy, 00117 Terran_Armory, 00118 Terran_Barracks, 00119 Terran_Bunker, 00120 Terran_Command_Center, 00121 Terran_Engineering_Bay, 00122 Terran_Factory, 00123 Terran_Missile_Turret, 00124 Terran_Refinery, 00125 Terran_Science_Facility, 00126 Terran_Starport, 00127 Terran_Supply_Depot, 00128 Terran_Comsat_Station, 00129 Terran_Control_Tower, 00130 Terran_Covert_Ops, 00131 Terran_Machine_Shop, 00132 Terran_Nuclear_Silo, 00133 Terran_Physics_Lab, 00134 Special_Crashed_Norad_II, 00135 Special_Ion_Cannon, 00136 Special_Power_Generator, 00137 Special_Psi_Disrupter, 00138 00139 Protoss_Archon, 00140 Protoss_Dark_Archon, 00141 Protoss_Dark_Templar, 00142 Protoss_Dragoon, 00143 Protoss_High_Templar, 00144 Protoss_Probe, 00145 Protoss_Reaver, 00146 Protoss_Scarab, 00147 Protoss_Zealot, 00148 Protoss_Arbiter, 00149 Protoss_Carrier, 00150 Protoss_Corsair, 00151 Protoss_Interceptor, 00152 Protoss_Observer, 00153 Protoss_Scout, 00154 Protoss_Shuttle, 00155 Hero_Aldaris, 00156 Hero_Artanis, 00157 Hero_Danimoth, 00158 Hero_Dark_Templar, 00159 Hero_Fenix_Dragoon, 00160 Hero_Fenix_Zealot, 00161 Hero_Gantrithor, 00162 Hero_Mojo, 00163 Hero_Raszagal, 00164 Hero_Tassadar, 00165 Hero_Tassadar_Zeratul_Archon, 00166 Hero_Warbringer, 00167 Hero_Zeratul, 00168 Protoss_Arbiter_Tribunal, 00169 Protoss_Assimilator, 00170 Protoss_Citadel_of_Adun, 00171 Protoss_Cybernetics_Core, 00172 Protoss_Fleet_Beacon, 00173 Protoss_Forge, 00174 Protoss_Gateway, 00175 Protoss_Nexus, 00176 Protoss_Observatory, 00177 Protoss_Photon_Cannon, 00178 Protoss_Pylon, 00179 Protoss_Robotics_Facility, 00180 Protoss_Robotics_Support_Bay, 00181 Protoss_Shield_Battery, 00182 Protoss_Stargate, 00183 Protoss_Templar_Archives, 00184 Special_Khaydarin_Crystal_Form, 00185 Special_Protoss_Temple, 00186 Special_Stasis_Cell_Prison, 00187 Special_Warp_Gate, 00188 Special_XelNaga_Temple, 00189 00190 Zerg_Broodling, 00191 Zerg_Defiler, 00192 Zerg_Drone, 00193 Zerg_Egg, 00194 Zerg_Hydralisk, 00195 Zerg_Infested_Terran, 00196 Zerg_Larva, 00197 Zerg_Lurker, 00198 Zerg_Lurker_Egg, 00199 Zerg_Ultralisk, 00200 Zerg_Zergling, 00201 Zerg_Cocoon, 00202 Zerg_Devourer, 00203 Zerg_Guardian, 00204 Zerg_Mutalisk, 00205 Zerg_Overlord, 00206 Zerg_Queen, 00207 Zerg_Scourge, 00208 Hero_Devouring_One, 00209 Hero_Hunter_Killer, 00210 Hero_Infested_Duran, 00211 Hero_Infested_Kerrigan, 00212 Hero_Kukulza_Guardian, 00213 Hero_Kukulza_Mutalisk, 00214 Hero_Matriarch, 00215 Hero_Torrasque, 00216 Hero_Unclean_One, 00217 Hero_Yggdrasill, 00218 Zerg_Creep_Colony, 00219 Zerg_Defiler_Mound, 00220 Zerg_Evolution_Chamber, 00221 Zerg_Extractor, 00222 Zerg_Greater_Spire, 00223 Zerg_Hatchery, 00224 Zerg_Hive, 00225 Zerg_Hydralisk_Den, 00226 Zerg_Infested_Command_Center, 00227 Zerg_Lair, 00228 Zerg_Nydus_Canal, 00229 Zerg_Queens_Nest, 00230 Zerg_Spawning_Pool, 00231 Zerg_Spire, 00232 Zerg_Spore_Colony, 00233 Zerg_Sunken_Colony, 00234 Zerg_Ultralisk_Cavern, 00235 Special_Cerebrate, 00236 Special_Cerebrate_Daggoth, 00237 Special_Mature_Chrysalis, 00238 Special_Overmind, 00239 Special_Overmind_Cocoon, 00240 Special_Overmind_With_Shell, 00241 00242 Critter_Bengalaas, 00243 Critter_Kakaru, 00244 Critter_Ragnasaur, 00245 Critter_Rhynadon, 00246 Critter_Scantid, 00247 Critter_Ursadon, 00248 00249 Resource_Mineral_Field, 00250 Resource_Vespene_Geyser, 00251 00252 Spell_Dark_Swarm, 00253 Spell_Disruption_Web, 00254 Spell_Scanner_Sweep, 00255 00256 Special_Protoss_Beacon, 00257 Special_Protoss_Flag_Beacon, 00258 Special_Terran_Beacon, 00259 Special_Terran_Flag_Beacon, 00260 Special_Zerg_Beacon, 00261 Special_Zerg_Flag_Beacon, 00262 00263 Powerup_Data_Disk, 00264 Powerup_Flag, 00265 Powerup_Khalis_Crystal, 00266 Powerup_Khaydarin_Crystal, 00267 Powerup_Psi_Emitter, 00268 Powerup_Uraj_Crystal, 00269 Powerup_Young_Chrysalis, 00270 00271 None, 00272 Unknown_Unit 00273 }; 00274 enum FliterAttributeScalar 00275 { 00276 HitPoints, 00277 InitialHitPoints, 00278 Shields, 00279 Energy, 00280 Resources, 00281 InitialResources, 00282 KillCount, 00283 GroundWeaponCooldown, 00284 AirWeaponCooldown, 00285 SpellCooldown, 00286 DefenseMatrixPoints, 00287 DefenseMatrixTimer, 00288 EnsnareTimer, 00289 IrradiateTimer, 00290 LockdownTimer, 00291 MaelstromTimer, 00292 PlagueTimer, 00293 RemoveTimer, 00294 StasisTimer, 00295 StimTimer, 00296 PositionX, 00297 PositionY, 00298 InitialPositionX, 00299 InitialPositionY, 00300 TilePositionX, 00301 TilePositionY, 00302 InitialTilePositionX, 00303 InitialTilePositionY, 00304 Angle, 00305 VelocityX, 00306 VelocityY, 00307 TargetPositionX, 00308 TargetPositionY, 00309 OrderTimer, 00310 RemainingBuildTime, 00311 RemainingTrainTime, 00312 TrainingQueueCount, 00313 LoadedUnitsCount, 00314 InterceptorCount, 00315 ScarabCount, 00316 SpiderMineCount, 00317 RemainingResearchTime, 00318 RemainingUpgradeTime, 00319 RallyPositionX, 00320 RallyPositionY, 00321 maxAirHits, 00322 maxGroundHits 00323 }; 00324 00325 enum FilterAttributeUnit 00326 { 00327 GetTarget, 00328 GetOrderTarget, 00329 GetBuildUnit, 00330 GetTransport, 00331 GetRallyUnit, 00332 GetAddon 00333 }; 00334 enum FilterAttributeType 00335 { 00336 GetType, 00337 GetInitialType, 00338 GetBuildType, 00339 GetTech, 00340 GetUpgrade 00341 }; 00342 00343 enum FilterAttributePosition 00344 { 00345 GetPosition, 00346 GetInitialPosition, 00347 GetTargetPosition, 00348 GetRallyPosition 00349 }; 00350 00351 enum FilterAttributeTilePosition 00352 { 00353 GetTilePosition, 00354 GetInitialTilePosition, 00355 }; 00356 enum FilterAttributeOrder 00357 { 00358 GetOrder, 00359 GetSecondaryOrder 00360 }; 00361 00362 00363 class UnitGroup : public std::set<BWAPI::Unit*> 00364 { 00365 public: 00366 static UnitGroup getUnitGroup(const std::set<BWAPI::Unit*> units) 00367 { 00368 UnitGroup u; 00369 u.insert(units.begin(), units.end()); 00370 return u; 00371 } 00372 00373 UnitGroup operator+(const UnitGroup& other) const;//union 00374 UnitGroup operator*(const UnitGroup& other) const;//intersection 00375 UnitGroup operator^(const UnitGroup& other) const;//symmetric difference 00376 UnitGroup operator-(const UnitGroup& other) const;//difference 00377 UnitGroup inRadius(double radius,BWAPI::Position position) const; 00378 UnitGroup inRegion(BWTA::Region* region) const; 00379 UnitGroup onlyNearestChokepoint(BWTA::Chokepoint* choke) const; 00380 UnitGroup onlyNearestBaseLocation(BWTA::BaseLocation* location) const; 00381 UnitGroup onlyNearestUnwalkablePolygon(BWTA::Polygon* polygon) const; 00382 UnitGroup operator()(int f1) const; 00383 UnitGroup operator()(int f1, int f2) const; 00384 UnitGroup operator()(int f1, int f2, int f3) const; 00385 UnitGroup operator()(int f1, int f2, int f3, int f4) const; 00386 UnitGroup operator()(int f1, int f2, int f3, int f4, int f5) const; 00387 UnitGroup operator()(FliterAttributeScalar a, const char* compare, double value) const; 00388 UnitGroup operator()(FliterAttributeScalar a, const char* compare, int value) const; 00389 UnitGroup operator()(BWAPI::Player* player) const; 00390 UnitGroup operator()(FilterAttributeUnit a, BWAPI::Unit* unit) const; 00391 UnitGroup operator()(FilterAttributeType a, BWAPI::UnitType type) const; 00392 UnitGroup operator()(FilterAttributeType a, BWAPI::TechType type) const; 00393 UnitGroup operator()(FilterAttributeType a, BWAPI::UpgradeType type) const; 00394 UnitGroup operator()(FilterAttributeOrder a, BWAPI::Order type) const; 00395 UnitGroup operator()(FilterAttributePosition a, BWAPI::Position position) const; 00396 UnitGroup operator()(FilterAttributeTilePosition a, BWAPI::TilePosition position) const; 00397 00398 UnitGroup not(int f1) const; 00399 UnitGroup not(int f1, int f2) const; 00400 UnitGroup not(int f1, int f2, int f3) const; 00401 UnitGroup not(int f1, int f2, int f3, int f4) const; 00402 UnitGroup not(int f1, int f2, int f3, int f4, int f5) const; 00403 UnitGroup not(FliterAttributeScalar a, const char* compare, double value) const; 00404 UnitGroup not(FliterAttributeScalar a, const char* compare, int value) const; 00405 UnitGroup not(BWAPI::Player* player) const; 00406 UnitGroup not(FilterAttributeUnit a, BWAPI::Unit* unit) const; 00407 UnitGroup not(FilterAttributeType a, BWAPI::UnitType type) const; 00408 UnitGroup not(FilterAttributeType a, BWAPI::TechType type) const; 00409 UnitGroup not(FilterAttributeType a, BWAPI::UpgradeType type) const; 00410 UnitGroup not(FilterAttributeOrder a, BWAPI::Order type) const; 00411 UnitGroup not(FilterAttributePosition a, BWAPI::Position position) const; 00412 UnitGroup not(FilterAttributeTilePosition a, BWAPI::TilePosition position) const; 00413 00414 UnitGroup& operator+=(const UnitGroup& other);//union 00415 UnitGroup& operator*=(const UnitGroup& other);//intersection 00416 UnitGroup& operator^=(const UnitGroup& other);//symmetric difference 00417 UnitGroup& operator-=(const UnitGroup& other);//difference 00418 BWAPI::Unit* getNearest(BWAPI::Position position) const; 00419 bool contains(BWAPI::Unit* u) const; 00420 BWAPI::Position getCenter() const; 00421 00422 bool attack(BWAPI::Position position, bool enqueue=false) const; 00423 bool attack(BWAPI::Unit* target, bool enqueue=false) const; 00424 bool rightClick(BWAPI::Position position) const; 00425 bool rightClick(BWAPI::Unit* target) const; 00426 bool train(BWAPI::UnitType type) const; 00427 bool build(BWAPI::TilePosition position, BWAPI::UnitType type) const; 00428 bool buildAddon(BWAPI::UnitType type) const; 00429 bool research(BWAPI::TechType tech) const; 00430 bool upgrade(BWAPI::UpgradeType upgrade) const; 00431 bool stop() const; 00432 bool holdPosition() const; 00433 bool patrol(BWAPI::Position position) const; 00434 bool follow(BWAPI::Unit* target) const; 00435 bool setRallyPoint(BWAPI::Position target) const; 00436 bool setRallyPoint(BWAPI::Unit* target) const; 00437 bool repair(BWAPI::Unit* target) const; 00438 bool morph(BWAPI::UnitType type) const; 00439 bool burrow() const; 00440 bool unburrow() const; 00441 bool siege() const; 00442 bool unsiege() const; 00443 bool cloak() const; 00444 bool decloak() const; 00445 bool lift() const; 00446 bool land(BWAPI::TilePosition position) const; 00447 bool load(BWAPI::Unit* target) const; 00448 bool unload(BWAPI::Unit* target) const; 00449 bool unloadAll() const; 00450 bool unloadAll(BWAPI::Position position) const; 00451 bool cancelConstruction() const; 00452 bool haltConstruction() const; 00453 bool cancelMorph() const; 00454 bool cancelTrain() const; 00455 bool cancelTrain(int slot) const; 00456 bool cancelAddon() const; 00457 bool cancelResearch() const; 00458 bool cancelUpgrade() const; 00459 bool useTech(BWAPI::TechType tech) const; 00460 bool useTech(BWAPI::TechType tech, BWAPI::Position position) const; 00461 bool useTech(BWAPI::TechType tech, BWAPI::Unit* target) const; 00462 }; 00463