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 Firebat, 00087 Ghost, 00088 Goliath, 00089 Marine, 00090 Medic, 00091 SCV, 00092 Siege_Tank, 00093 Vulture, 00094 Vulture_Spider_Mine, 00095 Battlecruiser, 00096 Dropship, 00097 Nuclear_Missile, 00098 Science_Vessel, 00099 Valkyrie, 00100 Wraith, 00101 Alan_Schezar, 00102 Alexei_Stukov, 00103 Arcturus_Mengsk, 00104 Edmund_Duke, 00105 Gerard_DuGalle, 00106 Gui_Montag, 00107 Hyperion, 00108 Jim_Raynor_Marine, 00109 Jim_Raynor_Vulture, 00110 Magellan, 00111 Norad_II, 00112 Samir_Duran, 00113 Sarah_Kerrigan, 00114 Tom_Kazansky, 00115 Civilian, 00116 Academy, 00117 Armory, 00118 Barracks, 00119 Bunker, 00120 Command_Center, 00121 Engineering_Bay, 00122 Factory, 00123 Missile_Turret, 00124 Refinery, 00125 Science_Facility, 00126 Starport, 00127 Supply_Depot, 00128 Comsat_Station, 00129 Control_Tower, 00130 Covert_Ops, 00131 Machine_Shop, 00132 Nuclear_Silo, 00133 Physics_Lab, 00134 Crashed_Norad_II, 00135 Ion_Cannon, 00136 Power_Generator, 00137 Psi_Disrupter, 00138 00139 Archon, 00140 Dark_Archon, 00141 Dark_Templar, 00142 Dragoon, 00143 High_Templar, 00144 Probe, 00145 Reaver, 00146 Scarab, 00147 Zealot, 00148 Arbiter, 00149 Carrier, 00150 Corsair, 00151 Interceptor, 00152 Observer, 00153 Scout, 00154 Shuttle, 00155 Aldaris, 00156 Artanis, 00157 Danimoth, 00158 Hero_Dark_Templar, 00159 Fenix_Dragoon, 00160 Fenix_Zealot, 00161 Gantrithor, 00162 Mojo, 00163 Raszagal, 00164 Tassadar, 00165 Tassadar_Zeratul_Archon, 00166 Warbringer, 00167 Zeratul, 00168 Arbiter_Tribunal, 00169 Assimilator, 00170 Citadel_of_Adun, 00171 Cybernetics_Core, 00172 Fleet_Beacon, 00173 Forge, 00174 Gateway, 00175 Nexus, 00176 Observatory, 00177 Photon_Cannon, 00178 Pylon, 00179 Robotics_Facility, 00180 Robotics_Support_Bay, 00181 Shield_Battery, 00182 Stargate, 00183 Templar_Archives, 00184 Khaydarin_Crystal_Form, 00185 Protoss_Temple, 00186 Stasis_Cell_Prison, 00187 Warp_Gate, 00188 XelNaga_Temple, 00189 00190 Broodling, 00191 Defiler, 00192 Drone, 00193 Egg, 00194 Hydralisk, 00195 Infested_Terran, 00196 Larva, 00197 Lurker, 00198 Lurker_Egg, 00199 Ultralisk, 00200 Zergling, 00201 Cocoon, 00202 Devourer, 00203 Guardian, 00204 Mutalisk, 00205 Overlord, 00206 Queen, 00207 Scourge, 00208 Devouring_One, 00209 Hunter_Killer, 00210 Infested_Duran, 00211 Infested_Kerrigan, 00212 Kukulza_Guardian, 00213 Kukulza_Mutalisk, 00214 Matriarch, 00215 Torrasque, 00216 Unclean_One, 00217 Yggdrasill, 00218 Creep_Colony, 00219 Defiler_Mound, 00220 Evolution_Chamber, 00221 Extractor, 00222 Greater_Spire, 00223 Hatchery, 00224 Hive, 00225 Hydralisk_Den, 00226 Infested_Command_Center, 00227 Lair, 00228 Nydus_Canal, 00229 Queens_Nest, 00230 Spawning_Pool, 00231 Spire, 00232 Spore_Colony, 00233 Sunken_Colony, 00234 Ultralisk_Cavern, 00235 Cerebrate, 00236 Cerebrate_Daggoth, 00237 Mature_Chrysalis, 00238 Overmind, 00239 Overmind_Cocoon, 00240 Overmind_With_Shell, 00241 00242 Bengalaas, 00243 Kakaru, 00244 Ragnasaur, 00245 Rhynadon, 00246 Scantid, 00247 Ursadon, 00248 00249 Mineral_Field, 00250 Vespene_Geyser, 00251 00252 Dark_Swarm, 00253 Disruption_Web, 00254 Scanner_Sweep, 00255 00256 Protoss_Beacon, 00257 Protoss_Flag_Beacon, 00258 Terran_Beacon, 00259 Terran_Flag_Beacon, 00260 Zerg_Beacon, 00261 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 }; 00322 00323 enum FilterAttributeUnit 00324 { 00325 GetTarget, 00326 GetOrderTarget, 00327 GetBuildUnit, 00328 GetTransport, 00329 GetRallyUnit, 00330 GetAddon 00331 }; 00332 enum FilterAttributeType 00333 { 00334 GetType, 00335 GetInitialType, 00336 GetBuildType, 00337 GetTech, 00338 GetUpgrade 00339 }; 00340 00341 enum FilterAttributePosition 00342 { 00343 GetPosition, 00344 GetInitialPosition, 00345 GetTargetPosition, 00346 GetRallyPosition 00347 }; 00348 00349 enum FilterAttributeTilePosition 00350 { 00351 GetTilePosition, 00352 GetInitialTilePosition, 00353 }; 00354 enum FilterAttributeOrder 00355 { 00356 GetOrder, 00357 GetSecondaryOrder 00358 }; 00359 00360 00361 class UnitGroup : public std::set<BWAPI::Unit*> 00362 { 00363 public: 00364 static UnitGroup getUnitGroup(const std::set<BWAPI::Unit*> units) 00365 { 00366 UnitGroup u; 00367 u.insert(units.begin(), units.end()); 00368 return u; 00369 } 00370 00371 UnitGroup operator+(const UnitGroup& other) const;//union 00372 UnitGroup operator*(const UnitGroup& other) const;//intersection 00373 UnitGroup operator^(const UnitGroup& other) const;//symmetric difference 00374 UnitGroup operator-(const UnitGroup& other) const;//difference 00375 UnitGroup inRadius(double radius,BWAPI::Position position) const; 00376 UnitGroup inRegion(BWTA::Region* region) const; 00377 UnitGroup onlyNearestChokepoint(BWTA::Chokepoint* choke) const; 00378 UnitGroup onlyNearestBaseLocation(BWTA::BaseLocation* location) const; 00379 UnitGroup onlyNearestUnwalkablePolygon(BWTA::Polygon* polygon) const; 00380 UnitGroup operator()(int f1) const; 00381 UnitGroup operator()(int f1, int f2) const; 00382 UnitGroup operator()(int f1, int f2, int f3) const; 00383 UnitGroup operator()(int f1, int f2, int f3, int f4) const; 00384 UnitGroup operator()(int f1, int f2, int f3, int f4, int f5) const; 00385 UnitGroup operator()(FliterAttributeScalar a, const char* compare, double value) const; 00386 UnitGroup operator()(FliterAttributeScalar a, const char* compare, int value) const; 00387 UnitGroup operator()(BWAPI::Player* player) const; 00388 UnitGroup operator()(FilterAttributeUnit a, BWAPI::Unit* unit) const; 00389 UnitGroup operator()(FilterAttributeType a, BWAPI::UnitType type) const; 00390 UnitGroup operator()(FilterAttributeType a, BWAPI::TechType type) const; 00391 UnitGroup operator()(FilterAttributeType a, BWAPI::UpgradeType type) const; 00392 UnitGroup operator()(FilterAttributeOrder a, BWAPI::Order type) const; 00393 UnitGroup operator()(FilterAttributePosition a, BWAPI::Position position) const; 00394 UnitGroup operator()(FilterAttributeTilePosition a, BWAPI::TilePosition position) const; 00395 00396 UnitGroup not(int f1) const; 00397 UnitGroup not(int f1, int f2) const; 00398 UnitGroup not(int f1, int f2, int f3) const; 00399 UnitGroup not(int f1, int f2, int f3, int f4) const; 00400 UnitGroup not(int f1, int f2, int f3, int f4, int f5) const; 00401 UnitGroup not(FliterAttributeScalar a, const char* compare, double value) const; 00402 UnitGroup not(FliterAttributeScalar a, const char* compare, int value) const; 00403 UnitGroup not(BWAPI::Player* player) const; 00404 UnitGroup not(FilterAttributeUnit a, BWAPI::Unit* unit) const; 00405 UnitGroup not(FilterAttributeType a, BWAPI::UnitType type) const; 00406 UnitGroup not(FilterAttributeType a, BWAPI::TechType type) const; 00407 UnitGroup not(FilterAttributeType a, BWAPI::UpgradeType type) const; 00408 UnitGroup not(FilterAttributeOrder a, BWAPI::Order type) const; 00409 UnitGroup not(FilterAttributePosition a, BWAPI::Position position) const; 00410 UnitGroup not(FilterAttributeTilePosition a, BWAPI::TilePosition position) const; 00411 00412 UnitGroup& operator+=(const UnitGroup& other);//union 00413 UnitGroup& operator*=(const UnitGroup& other);//intersection 00414 UnitGroup& operator^=(const UnitGroup& other);//symmetric difference 00415 UnitGroup& operator-=(const UnitGroup& other);//difference 00416 BWAPI::Unit* getNearest(BWAPI::Position position) const; 00417 bool contains(BWAPI::Unit* u) const; 00418 BWAPI::Position getCenter() const; 00419 00420 bool attack(BWAPI::Position position) const; 00421 bool attackUnit(BWAPI::Unit* target) const; 00422 bool rightClick(BWAPI::Position position) const; 00423 bool rightClick(BWAPI::Unit* target) const; 00424 bool train(BWAPI::UnitType type) const; 00425 bool build(BWAPI::TilePosition position, BWAPI::UnitType type) const; 00426 bool buildAddon(BWAPI::UnitType type) const; 00427 bool research(BWAPI::TechType tech) const; 00428 bool upgrade(BWAPI::UpgradeType upgrade) const; 00429 bool stop() const; 00430 bool holdPosition() const; 00431 bool patrol(BWAPI::Position position) const; 00432 bool follow(BWAPI::Unit* target) const; 00433 bool setRallyPoint(BWAPI::Position target) const; 00434 bool setRallyPoint(BWAPI::Unit* target) const; 00435 bool repair(BWAPI::Unit* target) const; 00436 bool morph(BWAPI::UnitType type) const; 00437 bool burrow() const; 00438 bool unburrow() const; 00439 bool siege() const; 00440 bool unsiege() const; 00441 bool cloak() const; 00442 bool decloak() const; 00443 bool lift() const; 00444 bool land(BWAPI::TilePosition position) const; 00445 bool load(BWAPI::Unit* target) const; 00446 bool unload(BWAPI::Unit* target) const; 00447 bool unloadAll() const; 00448 bool unloadAll(BWAPI::Position position) const; 00449 bool cancelConstruction() const; 00450 bool haltConstruction() const; 00451 bool cancelMorph() const; 00452 bool cancelTrain() const; 00453 bool cancelTrain(int slot) const; 00454 bool cancelAddon() const; 00455 bool cancelResearch() const; 00456 bool cancelUpgrade() const; 00457 bool useTech(BWAPI::TechType tech) const; 00458 bool useTech(BWAPI::TechType tech, BWAPI::Position position) const; 00459 bool useTech(BWAPI::TechType tech, BWAPI::Unit* target) const; 00460 }; 00461