BWAPI
quorum/include/BWAPI/Client/GameImpl.h
Go to the documentation of this file.
00001 #pragma once
00002 #include <BWAPI.h>
00003 #include "GameData.h"
00004 #include "Client.h"
00005 #include "Shape.h"
00006 #include "Command.h"
00007 #include "UnitCommand.h"
00008 #include "ForceImpl.h"
00009 #include "PlayerImpl.h"
00010 #include "UnitImpl.h"
00011 #include "BulletImpl.h"
00012 #include <list>
00013 #include <map>
00014 #include <set>
00015 #include <vector>
00016 
00017 namespace BWAPI
00018 {
00019   class Force;
00020   class Player;
00021   class Unit;
00022   class GameImpl : public Game
00023   {
00024     private :
00025       int addShape(BWAPIC::Shape &s);
00026       int addString(const char* text);
00027       int addText(BWAPIC::Shape &s, const char* text);
00028       int addCommand(BWAPIC::Command &c);
00029       void clearAll();
00030 
00031       GameData* data;
00032       std::vector<ForceImpl> forceVector;
00033       std::vector<PlayerImpl> playerVector;
00034       std::vector<UnitImpl> unitVector;
00035       std::vector<BulletImpl> bulletVector;
00036 
00037       std::set<Force*> forces;
00038       std::set<Player*> players;
00039       std::set<Unit*> accessibleUnits;//all units that are accessible (and definitely alive)
00040       //notDestroyedUnits - accessibleUnits = all units that may or may not be alive (status unknown)
00041       std::set<Unit*> minerals;
00042       std::set<Unit*> geysers;
00043       std::set<Unit*> neutralUnits;
00044       std::set<Unit*> staticMinerals;
00045       std::set<Unit*> staticGeysers;
00046       std::set<Unit*> staticNeutralUnits;
00047       std::set<Bullet*> bullets;
00048       std::set<Position> nukeDots;
00049       std::set<Unit*> selectedUnits;
00050       std::set<Unit*> pylons;
00051       std::set<Unit*> unitsOnTileData[256][256];
00052 
00053       std::set< TilePosition > startLocations;
00054       std::list< Event > events;
00055       bool flagEnabled[2];
00056       Player* thePlayer;
00057       Player* theEnemy;
00058       Player* theNeutral;
00059       std::set<Player*> _allies;
00060       std::set<Player*> _enemies;
00061       std::set<Player*> _observers;
00062       Error lastError;
00063 
00064     public :
00065       Event makeEvent(BWAPIC::Event e);
00066       int addUnitCommand(BWAPIC::UnitCommand& c);
00067       bool inGame;
00068       GameImpl(GameData* data);
00069       void onMatchStart();
00070       void onMatchEnd();
00071       void onMatchFrame();
00072       const GameData* getGameData() const;
00073 
00074       virtual std::set< Force* >& getForces();
00075       virtual std::set< Player* >& getPlayers();
00076       virtual std::set< Unit* >& getAllUnits();
00077       virtual std::set< Unit* >& getMinerals();
00078       virtual std::set< Unit* >& getGeysers();
00079       virtual std::set< Unit* >& getNeutralUnits();
00080 
00081       virtual std::set< Unit* >& getStaticMinerals();
00082       virtual std::set< Unit* >& getStaticGeysers();
00083       virtual std::set< Unit* >& getStaticNeutralUnits();
00084 
00085       virtual std::set< Bullet* >& getBullets();
00086       virtual std::set< Position >& getNukeDots();
00087       virtual std::list< Event>& getEvents();
00088 
00089       virtual Force* getForce(int forceID);
00090       virtual Player* getPlayer(int playerID);
00091       virtual Unit* getUnit(int unitID);
00092       virtual Unit* indexToUnit(int unitIndex);
00093 
00094       virtual GameType getGameType();
00095       virtual int getLatency();
00096       virtual int getFrameCount();
00097       virtual int getFPS();
00098       virtual double getAverageFPS();
00099       virtual BWAPI::Position getMousePosition();
00100       virtual bool getMouseState(MouseButton button);
00101       virtual bool getMouseState(int button);
00102       virtual bool getKeyState(Key key);
00103       virtual bool getKeyState(int key);
00104       virtual BWAPI::Position getScreenPosition();
00105       virtual void setScreenPosition(int x, int y);
00106       virtual void setScreenPosition(BWAPI::Position p);
00107       virtual void pingMinimap(int x, int y);
00108       virtual void pingMinimap(BWAPI::Position p);
00109 
00110       virtual bool  isFlagEnabled(int flag);
00111       virtual void  enableFlag(int flag);
00112       virtual std::set<Unit*>& getUnitsOnTile(int x, int y);
00113       virtual std::set<Unit*>& getUnitsInRectangle(int left, int top, int right, int bottom) const;
00114       virtual std::set<Unit*>& getUnitsInRectangle(BWAPI::Position topLeft, BWAPI::Position bottomRight) const;
00115       virtual std::set<Unit*>& getUnitsInRadius(BWAPI::Position center, int radius) const;
00116       virtual Error getLastError() const;
00117       virtual bool  setLastError(BWAPI::Error e);
00118 
00119       virtual int         mapWidth();
00120       virtual int         mapHeight();
00121       virtual std::string mapFileName();
00122       virtual std::string mapPathName();
00123       virtual std::string mapName();
00124       virtual std::string mapHash();
00125 
00126       virtual bool isWalkable(int x, int y);
00127       virtual int  getGroundHeight(int x, int y);
00128       virtual int  getGroundHeight(TilePosition position);
00129       virtual bool isBuildable(int x, int y, bool includeBuildings = false);
00130       virtual bool isBuildable(TilePosition position, bool includeBuildings = false);
00131       virtual bool isVisible(int x, int y);
00132       virtual bool isVisible(TilePosition position);
00133       virtual bool isExplored(int x, int y);
00134       virtual bool isExplored(TilePosition position);
00135       virtual bool hasCreep(int x, int y);
00136       virtual bool hasCreep(TilePosition position);
00137       virtual bool hasPower(int tileX, int tileY, UnitType unitType = UnitTypes::None) const;
00138       virtual bool hasPower(TilePosition position, UnitType unitType = UnitTypes::None) const;
00139       virtual bool hasPower(int tileX, int tileY, int tileWidth, int tileHeight, UnitType unitType = UnitTypes::None) const;
00140       virtual bool hasPower(TilePosition position, int tileWidth, int tileHeight, UnitType unitType = UnitTypes::None) const;
00141       virtual bool hasPowerPrecise(int x, int y, UnitType unitType = UnitTypes::None ) const;
00142       virtual bool hasPowerPrecise(Position position, UnitType unitType = UnitTypes::None) const;
00143 
00144       virtual bool canBuildHere(const Unit* builder, TilePosition position, UnitType type, bool checkExplored = false);
00145       virtual bool canMake(const Unit* builder, UnitType type);
00146       virtual bool canResearch(const Unit* unit, TechType type);
00147       virtual bool canUpgrade(const Unit* unit, UpgradeType type);
00148       virtual std::set< TilePosition >& getStartLocations();
00149 
00150       virtual void printf(const char* format, ...);
00151       virtual void sendText(const char* format, ...);
00152       virtual void sendTextEx(bool toAllies, const char *format, ...);
00153 
00154       virtual void changeRace(BWAPI::Race race);
00155       virtual bool isInGame();
00156       virtual bool isMultiplayer();
00157       virtual bool isBattleNet();
00158       virtual bool isPaused();
00159       virtual bool isReplay();
00160 
00161       virtual void startGame();
00162       virtual void pauseGame();
00163       virtual void resumeGame();
00164       virtual void leaveGame();
00165       virtual void restartGame();
00166       virtual void setLocalSpeed(int speed = -1);
00167       virtual bool issueCommand(const std::set<BWAPI::Unit*>& units, UnitCommand command);
00168       virtual std::set<BWAPI::Unit*>& getSelectedUnits();
00169       virtual Player* self();
00170       virtual Player* enemy();
00171       virtual Player* neutral();
00172       virtual std::set<BWAPI::Player*>& allies();
00173       virtual std::set<BWAPI::Player*>& enemies();
00174       virtual std::set<BWAPI::Player*>& observers();
00175 
00176       virtual void setTextSize(int size = 1);
00177       virtual void drawText(int ctype, int x, int y, const char *format, ...);
00178       virtual void drawTextMap(int x, int y, const char *format, ...);
00179       virtual void drawTextMouse(int x, int y, const char *format, ...);
00180       virtual void drawTextScreen(int x, int y, const char *format, ...);
00181 
00182       virtual void drawBox(int ctype, int left, int top, int right, int bottom, Color color, bool isSolid = false);
00183       virtual void drawBoxMap(int left, int top, int right, int bottom, Color color, bool isSolid = false);
00184       virtual void drawBoxMouse(int left, int top, int right, int bottom, Color color, bool isSolid = false);
00185       virtual void drawBoxScreen(int left, int top, int right, int bottom, Color color, bool isSolid = false);
00186 
00187       virtual void drawTriangle(int ctype, int ax, int ay, int bx, int by, int cx, int cy, Color color, bool isSolid = false);
00188       virtual void drawTriangleMap(int ax, int ay, int bx, int by, int cx, int cy, Color color, bool isSolid = false);
00189       virtual void drawTriangleMouse(int ax, int ay, int bx, int by, int cx, int cy, Color color, bool isSolid = false);
00190       virtual void drawTriangleScreen(int ax, int ay, int bx, int by, int cx, int cy, Color color, bool isSolid = false);
00191 
00192       virtual void drawCircle(int ctype, int x, int y, int radius, Color color, bool isSolid = false);
00193       virtual void drawCircleMap(int x, int y, int radius, Color color, bool isSolid = false);
00194       virtual void drawCircleMouse(int x, int y, int radius, Color color, bool isSolid = false);
00195       virtual void drawCircleScreen(int x, int y, int radius, Color color, bool isSolid = false);
00196 
00197       virtual void drawEllipse(int ctype, int x, int y, int xrad, int yrad, Color color, bool isSolid = false);
00198       virtual void drawEllipseMap(int x, int y, int xrad, int yrad, Color color, bool isSolid = false);
00199       virtual void drawEllipseMouse(int x, int y, int xrad, int yrad, Color color, bool isSolid = false);
00200       virtual void drawEllipseScreen(int x, int y, int xrad, int yrad, Color color, bool isSolid = false);
00201 
00202       virtual void drawDot(int ctype, int x, int y, Color color);
00203       virtual void drawDotMap(int x, int y, Color color);
00204       virtual void drawDotMouse(int x, int y, Color color);
00205       virtual void drawDotScreen(int x, int y, Color color);
00206 
00207       virtual void drawLine(int ctype, int x1, int y1, int x2, int y2, Color color);
00208       virtual void drawLineMap(int x1, int y1, int x2, int y2, Color color);
00209       virtual void drawLineMouse(int x1, int y1, int x2, int y2, Color color);
00210       virtual void drawLineScreen(int x1, int y1, int x2, int y2, Color color);
00211 
00212       virtual void *getScreenBuffer();
00213       virtual int  getLatencyFrames();
00214       virtual int  getLatencyTime();
00215       virtual int  getRemainingLatencyFrames();
00216       virtual int  getRemainingLatencyTime();
00217       virtual int  getRevision();
00218       virtual bool isDebug();
00219       virtual bool isLatComEnabled();
00220       virtual void setLatCom(bool isEnabled);
00221       virtual int  getReplayFrameCount();
00222       virtual void setGUI(bool enabled = true);
00223       virtual int  getInstanceNumber();
00224       virtual int  getAPM(bool includeSelects = false);
00225       virtual bool setMap(const char *mapFileName);
00226       virtual void setFrameSkip(int frameSkip = 1);
00227       virtual bool hasPath(Position source, Position destination) const;
00228       virtual bool setAlliance(BWAPI::Player *player, bool allied = true, bool alliedVictory = true);
00229       virtual bool setVision(BWAPI::Player *player, bool enabled = true);
00230       virtual int  elapsedTime() const;
00231       virtual void setCommandOptimizationLevel(int level = 2);
00232   };
00233 }
 All Classes Namespaces Files Functions Variables Enumerations Enumerator Defines