BWAPI
|
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 }