BWAPI
trunk/bwapi/include/BWAPI/Unit.h
Go to the documentation of this file.
00001 #pragma once
00002 
00003 #include <list>
00004 
00005 #include <BWAPI/Order.h>
00006 #include <BWAPI/TechType.h>
00007 #include <BWAPI/UpgradeType.h>
00008 #include <BWAPI/UnitType.h>
00009 #include <BWAPI/Position.h>
00010 #include <BWAPI/Region.h>
00011 #include <BWAPI/TilePosition.h>
00012 #include <BWAPI/UnitCommand.h>
00013 #include <BWAPI/Client/UnitData.h>
00014 namespace BWAPI
00015 {
00016   class Player;
00017 
00041   class Unit
00042   {
00043   protected:
00044     virtual ~Unit() {};
00045   public:
00048     virtual int getID() const = 0;
00049 
00051     virtual int getReplayID() const = 0;
00052 
00054     virtual Player* getPlayer() const = 0;
00055 
00057     virtual UnitType getType() const = 0;
00058 
00060     virtual Position getPosition() const = 0;
00061 
00064     virtual TilePosition getTilePosition() const = 0;
00065 
00068     virtual double getAngle() const = 0;
00069 
00071     virtual double getVelocityX() const = 0;
00072 
00074     virtual double getVelocityY() const = 0;
00075 
00077     virtual BWAPI::Region *getRegion() const = 0;
00078 
00080     virtual int getLeft() const = 0;
00081 
00083     virtual int getTop() const = 0;
00084 
00086     virtual int getRight() const = 0;
00087 
00089     virtual int getBottom() const = 0;
00090 
00092     virtual int getHitPoints() const = 0;
00093 
00095     virtual int getShields() const = 0;
00096 
00098     virtual int getEnergy() const = 0;
00099 
00103     virtual int getResources() const = 0;
00104 
00106     virtual int getResourceGroup() const = 0;
00107 
00109     virtual int getDistance(Unit* target) const = 0;
00110 
00112     virtual int getDistance(Position target) const = 0;
00113 
00115     virtual bool hasPath(Unit* target) const = 0;
00116 
00118     virtual bool hasPath(Position target) const = 0;
00119 
00121     virtual int getLastCommandFrame() const = 0;
00122 
00124     virtual UnitCommand getLastCommand() const = 0;
00125 
00127     virtual BWAPI::Player *getLastAttackingPlayer() const = 0;
00128 
00131     virtual int getUpgradeLevel(UpgradeType upgrade) const = 0;
00132 
00135     virtual UnitType getInitialType() const = 0;
00136 
00139     virtual Position getInitialPosition() const = 0;
00140 
00144     virtual TilePosition getInitialTilePosition() const = 0;
00145 
00148     virtual int getInitialHitPoints() const = 0;
00149 
00152     virtual int getInitialResources() const = 0;
00153 
00155     virtual int getKillCount() const = 0;
00156 
00158     virtual int getAcidSporeCount() const = 0;
00159 
00161     virtual int getInterceptorCount() const = 0;
00162 
00164     virtual int getScarabCount() const = 0;
00165 
00167     virtual int getSpiderMineCount() const = 0;
00168 
00170     virtual int getGroundWeaponCooldown() const = 0;
00171 
00173     virtual int getAirWeaponCooldown() const = 0;
00174 
00176     virtual int getSpellCooldown() const = 0;
00177 
00180     virtual int getDefenseMatrixPoints() const = 0;
00181 
00183     virtual int getDefenseMatrixTimer() const = 0;
00184 
00186     virtual int getEnsnareTimer() const = 0;
00187 
00189     virtual int getIrradiateTimer() const = 0;
00190 
00192     virtual int getLockdownTimer() const = 0;
00193 
00195     virtual int getMaelstromTimer() const = 0;
00196 
00197     // TODO: add doc
00198     virtual int getOrderTimer() const = 0;
00199 
00201     virtual int getPlagueTimer() const = 0;
00202 
00206     virtual int getRemoveTimer() const = 0;
00207 
00209     virtual int getStasisTimer() const = 0;
00210 
00212     virtual int getStimTimer() const = 0;
00213 
00216     virtual UnitType getBuildType() const = 0;
00217 
00220     virtual std::list<UnitType > getTrainingQueue() const = 0;
00221 
00225     virtual TechType getTech() const = 0;
00226 
00230     virtual UpgradeType getUpgrade() const = 0;
00231 
00233     virtual int getRemainingBuildTime() const = 0;
00234 
00238     virtual int getRemainingTrainTime() const = 0;
00239 
00243     virtual int getRemainingResearchTime() const = 0;
00244 
00248     virtual int getRemainingUpgradeTime() const = 0;
00249 
00253     virtual Unit* getBuildUnit() const = 0;
00254 
00258     virtual Unit* getTarget() const = 0;
00259 
00262     virtual Position getTargetPosition() const = 0;
00263 
00264     // TODO: add doc
00265     virtual Order getOrder() const = 0;
00266     virtual Order getSecondaryOrder() const = 0;
00267 
00271     virtual Unit* getOrderTarget() const = 0;
00272 
00275     virtual Position getOrderTargetPosition() const = 0;
00276 
00280     virtual Position getRallyPosition() const = 0;
00281 
00285     virtual Unit* getRallyUnit() const = 0;
00286 
00288     virtual Unit* getAddon() const = 0;
00289 
00292     virtual Unit* getNydusExit() const = 0;
00293 
00295     virtual Unit* getPowerUp() const = 0;
00296 
00298     virtual Unit* getTransport() const = 0;
00299 
00302     virtual std::set<Unit*> getLoadedUnits() const = 0;
00303 
00306     virtual Unit* getCarrier() const = 0;
00307 
00310     virtual std::set<Unit*> getInterceptors() const = 0;
00311 
00314     virtual Unit* getHatchery() const = 0;
00315 
00319     virtual std::set<Unit*> getLarva() const = 0;
00320 
00322     virtual std::set<Unit*>& getUnitsInRadius(int radius) const = 0;
00323 
00325     virtual std::set<Unit*>& getUnitsInWeaponRange(WeaponType weapon) const = 0;
00326 
00328     virtual void* getClientInfo() const = 0;
00329 
00331     virtual void setClientInfo(void* clientinfo) = 0;
00332 
00342     virtual bool exists() const = 0;
00343 
00344     /* Returns true if the Nuclear Missile Silo has a nuke */
00345     virtual bool hasNuke() const = 0;
00346 
00348     virtual bool isAccelerating() const = 0;
00349 
00350     // TODO: add doc
00351     virtual bool isAttacking() const = 0;
00352 
00353     virtual bool isAttackFrame() const = 0;
00354 
00360     virtual bool isBeingConstructed() const = 0;
00361 
00363     virtual bool isBeingGathered() const = 0;
00364 
00366     virtual bool isBeingHealed() const = 0;
00367 
00369     virtual bool isBlind() const = 0;
00370 
00372     virtual bool isBraking() const = 0;
00373 
00376     virtual bool isBurrowed() const = 0;
00377 
00380     virtual bool isCarryingGas() const = 0;
00381 
00384     virtual bool isCarryingMinerals() const = 0;
00385 
00388     virtual bool isCloaked() const = 0;
00389 
00391     virtual bool isCompleted() const = 0;
00392 
00396     virtual bool isConstructing() const = 0;
00397 
00399     virtual bool isDefenseMatrixed() const = 0;
00400 
00402     virtual bool isDetected() const = 0;
00403 
00405     virtual bool isEnsnared() const = 0;
00406 
00409     virtual bool isFollowing() const = 0;
00410 
00414     virtual bool isGatheringGas() const = 0;
00415 
00419     virtual bool isGatheringMinerals() const = 0;
00420 
00424     virtual bool isHallucination() const = 0;
00425 
00428     virtual bool isHoldingPosition() const = 0;
00429 
00432     virtual bool isIdle() const = 0;
00433 
00435     virtual bool isInterruptible() const = 0;
00436 
00438     virtual bool isInvincible() const = 0;
00439 
00441     virtual bool isInWeaponRange(Unit *target) const = 0;
00442 
00445     virtual bool isIrradiated() const = 0;
00446 
00449     virtual bool isLifted() const = 0;
00450 
00454     virtual bool isLoaded() const = 0;
00455 
00458     virtual bool isLockedDown() const = 0;
00459 
00462     virtual bool isMaelstrommed() const = 0;
00463 
00466     virtual bool isMorphing() const = 0;
00467 
00470     virtual bool isMoving() const = 0;
00471 
00473     virtual bool isParasited() const = 0;
00474 
00477     virtual bool isPatrolling() const = 0;
00478 
00481     virtual bool isPlagued() const = 0;
00482 
00484     virtual bool isRepairing() const = 0;
00485 
00489     virtual bool isResearching() const = 0;
00490 
00494     virtual bool isSelected() const = 0;
00495 
00498     virtual bool isSieged() const = 0;
00499 
00502     virtual bool isStartingAttack() const = 0;
00503 
00506     virtual bool isStasised() const = 0;
00507 
00510     virtual bool isStimmed() const = 0;
00511 
00513     virtual bool isStuck() const = 0;
00514 
00517     virtual bool isTraining() const = 0;
00518 
00520     virtual bool isUnderAttack() const = 0;
00521 
00523     virtual bool isUnderDarkSwarm() const = 0;
00524 
00526     virtual bool isUnderDisruptionWeb() const = 0;
00527 
00529     virtual bool isUnderStorm() const = 0;
00530 
00532     virtual bool isUnpowered() const = 0;
00533 
00537     virtual bool isUpgrading() const = 0;
00538 
00542     virtual bool isVisible() const = 0;
00543     virtual bool isVisible(Player* player) const = 0;
00544 
00546     virtual bool canIssueCommand(UnitCommand command) const = 0;
00547 
00549     virtual bool issueCommand(UnitCommand command) = 0;
00550 
00552     virtual bool attack(Position target, bool shiftQueueCommand = false) = 0;
00553 
00555     virtual bool attack(Unit* target, bool shiftQueueCommand = false) = 0;
00556 
00560     virtual bool build(TilePosition target, UnitType type) = 0;
00561 
00564     virtual bool buildAddon(UnitType type) = 0;
00565 
00570     virtual bool train(UnitType type) = 0;
00571 
00574     virtual bool morph(UnitType type) = 0;
00575 
00578     virtual bool research(TechType tech) = 0;
00579 
00582     virtual bool upgrade(UpgradeType upgrade) = 0;
00583 
00586     virtual bool setRallyPoint(Position target) = 0;
00587 
00590     virtual bool setRallyPoint(Unit* target) = 0;
00591 
00594     virtual bool move(Position target, bool shiftQueueCommand = false) = 0;
00595 
00598     virtual bool patrol(Position target, bool shiftQueueCommand = false) = 0;
00599 
00601     virtual bool holdPosition(bool shiftQueueCommand = false) = 0;
00602 
00604     virtual bool stop(bool shiftQueueCommand = false) = 0;
00605 
00608     virtual bool follow(Unit* target, bool shiftQueueCommand = false) = 0;
00609 
00612     virtual bool gather(Unit* target, bool shiftQueueCommand = false) = 0;
00613 
00617     virtual bool returnCargo(bool shiftQueueCommand = false) = 0;
00618 
00622     virtual bool repair(Unit* target, bool shiftQueueCommand = false) = 0;
00623 
00627     virtual bool burrow() = 0;
00628 
00632     virtual bool unburrow() = 0;
00633 
00636     virtual bool cloak() = 0;
00637 
00640     virtual bool decloak() = 0;
00641 
00644     virtual bool siege() = 0;
00645 
00648     virtual bool unsiege() = 0;
00649 
00652     virtual bool lift() = 0;
00653 
00656     virtual bool land(TilePosition target) = 0;
00657 
00660     virtual bool load(Unit* target, bool shiftQueueCommand = false) = 0;
00661 
00664     virtual bool unload(Unit* target) = 0;
00665 
00668     virtual bool unloadAll(bool shiftQueueCommand = false) = 0;
00669 
00674     virtual bool unloadAll(Position target, bool shiftQueueCommand = false) = 0;
00675 
00677     virtual bool rightClick(Position target, bool shiftQueueCommand = false) = 0;
00678 
00681     virtual bool rightClick(Unit* target, bool shiftQueueCommand = false) = 0;
00682 
00686     virtual bool haltConstruction() = 0;
00687 
00690     virtual bool cancelConstruction() = 0;
00691 
00693     virtual bool cancelAddon() = 0;
00694 
00697     virtual bool cancelTrain(int slot = -2) = 0;
00698 
00701     virtual bool cancelMorph() = 0;
00702 
00705     virtual bool cancelResearch() = 0;
00706 
00709     virtual bool cancelUpgrade() = 0;
00710 
00713     virtual bool useTech(TechType tech) = 0;
00714 
00717     virtual bool useTech(TechType tech, Position target) = 0;
00718 
00721     virtual bool useTech(TechType tech, Unit* target) = 0;
00722 
00724     virtual bool placeCOP(TilePosition target) = 0;
00725 
00726   };
00727 }
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines