BWAPI
SnippyHolloW-BroodwarBotQ-f01ab56/src/Macro/BFSBuildingPlacer.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 BFSBuildingPlacer : public TaskStreamObserver
00006 {
00007   public:
00008     static BFSBuildingPlacer* getInstance();
00009     BFSBuildingPlacer();
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   private:
00019     BWAPI::TilePosition getBuildLocationNear(BWAPI::Unit* builder, BWAPI::TilePosition position, BWAPI::UnitType type, int buildDist) const;
00020     bool canBuildHere(BWAPI::Unit* builder, BWAPI::TilePosition position, BWAPI::UnitType type) const;
00021     bool canBuildHereWithSpace(BWAPI::Unit* builder, BWAPI::TilePosition position, BWAPI::UnitType type, int buildDist) const;
00022     bool buildable(BWAPI::Unit* builder, int x, int y) const;
00023     struct data
00024     {
00025       bool isRelocatable;
00026       int buildDistance;
00027       BWAPI::TilePosition reservePosition;
00028       int reserveWidth;
00029       int reserveHeight;
00030     };
00031     std::map< TaskStream*, data > taskStreams;
00032 
00033 };
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines