BWAPI
SnippyHolloW-BroodwarBotQ-f01ab56/src/Macro/PylonBuildingPlacer.h
Go to the documentation of this file.
00001 #pragma once
00002 #include "Macro/MacroManager/TaskStreamObserver.h"
00003 #include "Macro/MacroManager/TaskStream.h"
00004 #include "Macro/RectangleArray.h"
00005 class PylonBuildingPlacer : public TaskStreamObserver
00006 {
00007   public:
00008     static PylonBuildingPlacer* getInstance();
00009     PylonBuildingPlacer();
00010     virtual void attached(TaskStream* ts);
00011     virtual void detached(TaskStream* ts);
00012     virtual void newStatus(TaskStream* ts);
00013     virtual void completedTask(TaskStream* ts, const Task &t);
00014     virtual void update(TaskStream* ts);
00015     void setTilePosition(TaskStream* ts, BWAPI::TilePosition p);
00016     void setRelocatable(TaskStream* ts, bool isRelocatable);
00017     void setBuildDistance(TaskStream* ts, int distance);
00018     void setPylonDistance(int pylonDistance);
00019   private:
00020     BWAPI::TilePosition getBuildLocationNear(BWAPI::Unit* builder, BWAPI::TilePosition position, BWAPI::UnitType type, int buildDist) const;
00021     bool canBuildHere(BWAPI::Unit* builder, BWAPI::TilePosition position, BWAPI::UnitType type) const;
00022     bool canBuildHereWithSpace(BWAPI::Unit* builder, BWAPI::TilePosition position, BWAPI::UnitType type, int buildDist) const;
00023     bool buildable(BWAPI::Unit* builder, int x, int y) const;
00024     struct data
00025     {
00026       bool isRelocatable;
00027       int buildDistance;
00028       BWAPI::TilePosition reservePosition;
00029       int reserveWidth;
00030       int reserveHeight;
00031     };
00032     int pylonDistance;
00033     std::map< TaskStream*, data > taskStreams;
00034 
00035 };
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines