BWAPI
trunk/bwapi/include/BWAPI/Game.h
Go to the documentation of this file.
00001 #pragma once
00002 
00003 #include <list>
00004 #include <map>
00005 #include <set>
00006 #include <vector>
00007 
00008 #include <BWAPI/Color.h>
00009 #include <BWAPI/CoordinateType.h>
00010 #include <BWAPI/Error.h>
00011 #include <BWAPI/Event.h>
00012 #include <BWAPI/Flag.h>
00013 #include <BWAPI/GameType.h>
00014 #include <BWAPI/Race.h>
00015 #include <BWAPI/Region.h>
00016 #include <BWAPI/Order.h>
00017 #include <BWAPI/Latency.h>
00018 #include <BWAPI/TilePosition.h>
00019 #include <BWAPI/UnitType.h>
00020 #include <BWAPI/TechType.h>
00021 #include <BWAPI/UpgradeType.h>
00022 #include <BWAPI/Input.h>
00023 namespace BWAPI
00024 {
00025   class Force;
00026   class Player;
00027   class Unit;
00028   class Bullet;
00029 
00034   class Game
00035   {
00036   protected:
00037     virtual ~Game() {};
00038   public :
00040     virtual std::set< Force* >& getForces() = 0;
00041 
00044     virtual std::set< Player* >& getPlayers() = 0;
00045 
00049     virtual std::set< Unit* >& getAllUnits() = 0;
00050 
00052     virtual std::set< Unit* >& getMinerals() = 0;
00053 
00055     virtual std::set< Unit* >& getGeysers() = 0;
00056 
00058     virtual std::set< Unit* >& getNeutralUnits() = 0;
00059 
00061     virtual std::set< Unit* >& getStaticMinerals() = 0;
00062 
00064     virtual std::set< Unit* >& getStaticGeysers() = 0;
00065 
00067     virtual std::set< Unit* >& getStaticNeutralUnits() = 0;
00068 
00071     virtual std::set< Bullet* >& getBullets() = 0;
00072 
00075     virtual std::set< Position >& getNukeDots() = 0;
00076 
00078     virtual std::list< Event >& getEvents() = 0;
00079 
00081     virtual Force* getForce(int forceID) = 0;
00082 
00084     virtual Player* getPlayer(int playerID) = 0;
00085 
00087     virtual Unit* getUnit(int unitID) = 0;
00088 
00090     virtual Unit* indexToUnit(int unitIndex) = 0;
00091 
00093     virtual Region* getRegion(int regionID) = 0;
00094 
00096     virtual GameType getGameType() = 0;
00097 
00100     virtual int getLatency() = 0;
00101 
00105     virtual int getFrameCount() = 0;
00106 
00108     virtual int getFPS() = 0;
00109     virtual double getAverageFPS() = 0;
00110 
00113     virtual BWAPI::Position getMousePosition() = 0;
00114 
00117     virtual bool getMouseState(MouseButton button) = 0;
00118 
00120     virtual bool getMouseState(int button) = 0;
00121 
00127     virtual bool getKeyState(Key key) = 0;
00128 
00130     virtual bool getKeyState(int key) = 0;
00131 
00134     virtual BWAPI::Position getScreenPosition() = 0;
00135 
00138     virtual void setScreenPosition(int x, int y) = 0;
00139 
00141     virtual void setScreenPosition(BWAPI::Position p) = 0;
00142 
00144     virtual void pingMinimap(int x, int y) = 0;
00145 
00147     virtual void pingMinimap(BWAPI::Position p) = 0;
00148 
00151     virtual bool isFlagEnabled(int flag) = 0;
00152 
00155     virtual void enableFlag(int flag) = 0;
00156 
00158     virtual std::set<Unit*>& getUnitsOnTile(int tileX, int tileY) = 0;
00159 
00161     virtual std::set<Unit*>& getUnitsInRectangle(int left, int top, int right, int bottom) const = 0;
00162     virtual std::set<Unit*>& getUnitsInRectangle(BWAPI::Position topLeft, BWAPI::Position bottomRight) const = 0;
00163 
00165     virtual std::set<Unit*>& getUnitsInRadius(BWAPI::Position center, int radius) const = 0;
00166 
00169     virtual Error getLastError() const = 0;
00170 
00172     virtual bool setLastError(BWAPI::Error e) = 0;
00173 
00177     virtual int mapWidth() = 0;
00178 
00182     virtual int mapHeight() = 0;
00183 
00185     virtual std::string mapFileName() = 0;
00186 
00188     virtual std::string mapPathName() = 0;
00189 
00191     virtual std::string mapName() = 0;
00192 
00194     virtual std::string mapHash() = 0;
00195 
00200     virtual bool isWalkable(int walkX, int walkY) = 0;
00201 
00203     virtual int  getGroundHeight(int tileX, int tileY) = 0;
00205     virtual int  getGroundHeight(TilePosition position) = 0;
00206 
00210     virtual bool isBuildable(int tileX, int tileY, bool includeBuildings = false) = 0;
00212     virtual bool isBuildable(TilePosition position, bool includeBuildings = false) = 0;
00213 
00216     virtual bool isVisible(int tileX, int tileY) = 0;
00218     virtual bool isVisible(TilePosition position) = 0;
00219 
00222     virtual bool isExplored(int tileX, int tileY) = 0;
00224     virtual bool isExplored(TilePosition position) = 0;
00225 
00228     virtual bool hasCreep(int tileX, int tileY) = 0;
00230     virtual bool hasCreep(TilePosition position) = 0;
00231 
00233     virtual bool hasPower(int tileX, int tileY, UnitType unitType = UnitTypes::None) const = 0;
00235     virtual bool hasPower(TilePosition position, UnitType unitType = UnitTypes::None) const = 0;
00237     virtual bool hasPower(int tileX, int tileY, int tileWidth, int tileHeight, UnitType unitType = UnitTypes::None) const = 0;
00239     virtual bool hasPower(TilePosition position, int tileWidth, int tileHeight, UnitType unitType = UnitTypes::None) const = 0;
00241     virtual bool hasPowerPrecise(int x, int y, UnitType unitType = UnitTypes::None ) const = 0;
00243     virtual bool hasPowerPrecise(Position position, UnitType unitType = UnitTypes::None) const = 0;
00244 
00248     virtual bool canBuildHere(const Unit *builder, TilePosition position, UnitType type, bool checkExplored = false) = 0;
00249 
00253     virtual bool canMake(const Unit *builder, UnitType type) = 0;
00254 
00257     virtual bool canResearch(const Unit *unit, TechType type) = 0;
00258 
00262     virtual bool canUpgrade(const Unit *unit, UpgradeType type) = 0;
00263 
00266     virtual std::set< TilePosition >& getStartLocations() = 0;
00267 
00269     virtual void printf(const char *format, ...) = 0;
00270 
00274     virtual void sendText(const char *format, ...) = 0;
00275     virtual void sendTextEx(bool toAllies, const char *format, ...) = 0;
00276 
00279     virtual void changeRace(Race race) = 0;
00280 
00282     virtual bool isInGame() = 0;
00283 
00286     virtual bool isMultiplayer() = 0;
00287 
00290     virtual bool isBattleNet() = 0;
00291 
00294     virtual bool isPaused() = 0;
00295 
00297     virtual bool isReplay() = 0;
00298 
00301     virtual void startGame() = 0;
00302 
00305     virtual void pauseGame() = 0;
00306 
00308     virtual void resumeGame() = 0;
00309 
00311     virtual void leaveGame() = 0;
00312 
00315     virtual void restartGame() = 0;
00316 
00320     virtual void setLocalSpeed(int speed = -1) = 0;
00321 
00323     virtual bool issueCommand(const std::set<BWAPI::Unit*>& units, UnitCommand command) = 0;
00324 
00327     virtual std::set<Unit*>& getSelectedUnits() = 0;
00328 
00330     virtual Player* self() = 0;
00331 
00335     virtual Player* enemy() = 0;
00336 
00338     virtual Player* neutral() = 0;
00339 
00341     virtual std::set<BWAPI::Player*>& allies() = 0;
00342 
00344     virtual std::set<BWAPI::Player*>& enemies() = 0;
00345 
00347     virtual std::set<BWAPI::Player*>& observers() = 0;
00348 
00349     virtual void setTextSize(int size = 1) = 0;
00352     virtual void drawText(int ctype, int x, int y, const char *format, ...) = 0;
00353     virtual void drawTextMap(int x, int y, const char *format, ...) = 0;
00354     virtual void drawTextMouse(int x, int y, const char *format, ...) = 0;
00355     virtual void drawTextScreen(int x, int y, const char *format, ...) = 0;
00356 
00359     virtual void drawBox(int ctype, int left, int top, int right, int bottom, Color color, bool isSolid = false) = 0;
00360     virtual void drawBoxMap(int left, int top, int right, int bottom, Color color, bool isSolid = false) = 0;
00361     virtual void drawBoxMouse(int left, int top, int right, int bottom, Color color, bool isSolid = false) = 0;
00362     virtual void drawBoxScreen(int left, int top, int right, int bottom, Color color, bool isSolid = false) = 0;
00363 
00366     virtual void drawTriangle(int ctype, int ax, int ay, int bx, int by, int cx, int cy, Color color, bool isSolid = false) = 0;
00367     virtual void drawTriangleMap(int ax, int ay, int bx, int by, int cx, int cy, Color color, bool isSolid = false) = 0;
00368     virtual void drawTriangleMouse(int ax, int ay, int bx, int by, int cx, int cy, Color color, bool isSolid = false) = 0;
00369     virtual void drawTriangleScreen(int ax, int ay, int bx, int by, int cx, int cy, Color color, bool isSolid = false) = 0;
00370 
00373     virtual void drawCircle(int ctype, int x, int y, int radius, Color color, bool isSolid = false) = 0;
00374     virtual void drawCircleMap(int x, int y, int radius, Color color, bool isSolid = false) = 0;
00375     virtual void drawCircleMouse(int x, int y, int radius, Color color, bool isSolid = false) = 0;
00376     virtual void drawCircleScreen(int x, int y, int radius, Color color, bool isSolid = false) = 0;
00377 
00380     virtual void drawEllipse(int ctype, int x, int y, int xrad, int yrad, Color color, bool isSolid = false) = 0;
00381     virtual void drawEllipseMap(int x, int y, int xrad, int yrad, Color color, bool isSolid = false) = 0;
00382     virtual void drawEllipseMouse(int x, int y, int xrad, int yrad, Color color, bool isSolid = false) = 0;
00383     virtual void drawEllipseScreen(int x, int y, int xrad, int yrad, Color color, bool isSolid = false) = 0;
00384 
00386     virtual void drawDot(int ctype, int x, int y, Color color) = 0;
00387     virtual void drawDotMap(int x, int y, Color color) = 0;
00388     virtual void drawDotMouse(int x, int y, Color color) = 0;
00389     virtual void drawDotScreen(int x, int y, Color color) = 0;
00390 
00392     virtual void drawLine(int ctype, int x1, int y1, int x2, int y2, Color color) = 0;
00393     virtual void drawLineMap(int x1, int y1, int x2, int y2, Color color) = 0;
00394     virtual void drawLineMouse(int x1, int y1, int x2, int y2, Color color) = 0;
00395     virtual void drawLineScreen(int x1, int y1, int x2, int y2, Color color) = 0;
00396 
00398     virtual void *getScreenBuffer() = 0;
00399 
00401     virtual int getLatencyFrames() = 0;
00402     virtual int getLatencyTime() = 0;
00403     virtual int getRemainingLatencyFrames() = 0;
00404     virtual int getRemainingLatencyTime() = 0;
00405 
00407     virtual int getRevision() = 0;
00408 
00410     virtual bool isDebug() = 0;
00411 
00413     virtual bool isLatComEnabled() = 0;
00414 
00416     virtual void setLatCom(bool isEnabled) = 0;
00417 
00419     virtual int getReplayFrameCount() = 0;
00420 
00422     virtual void setGUI(bool enabled = true) = 0;
00423 
00425     virtual int  getInstanceNumber() = 0;
00426 
00428     virtual int getAPM(bool includeSelects = false) = 0;
00429 
00431     virtual bool setMap(const char *mapFileName) = 0;
00432 
00434     virtual void setFrameSkip(int frameSkip = 1) = 0;
00435 
00437     virtual bool hasPath(Position source, Position destination) const = 0;
00438 
00440     virtual bool setAlliance(BWAPI::Player *player, bool allied = true, bool alliedVictory = true) = 0;
00441 
00443     virtual bool setVision(BWAPI::Player *player, bool enabled = true) = 0;
00444 
00446     virtual int  elapsedTime() const = 0;
00447 
00453     virtual void setCommandOptimizationLevel(int level = 2) = 0;
00454 
00456     virtual int  countdownTimer() const = 0;
00457 
00459     virtual const std::set<BWAPI::Region*> &getAllRegions() const = 0;
00460 
00462     virtual BWAPI::Region *getRegionAt(int x, int y) const = 0;
00463     virtual BWAPI::Region *getRegionAt(BWAPI::Position position) const = 0;
00464 
00466     virtual int getLastEventTime() const = 0;
00467 
00469     virtual bool setReplayVision(BWAPI::Player *player, bool enabled = true) = 0;
00470 
00472     virtual bool setRevealAll(bool reveal = true) = 0;
00473   };
00474   extern Game* Broodwar;
00475 }
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines