|
BWAPI
|
00001 #pragma once 00002 00003 #include "Common.h" 00004 #include "BuildingData.h" 00005 #include "MetaType.h" 00006 00007 class BuildingPlacer 00008 { 00009 00010 BuildingPlacer(); 00011 00012 static BuildingPlacer * instance; 00013 00014 std::vector< std::vector<bool> > reserveMap; 00015 int buildDistance; 00016 00017 int boxTop, 00018 boxBottom, 00019 boxLeft, 00020 boxRight; 00021 00022 public: 00023 00024 00025 static BuildingPlacer * getInstance(); 00026 00027 // queries for various BuildingPlacer data 00028 bool buildable(int x, int y) const; 00029 bool isReserved(int x, int y) const; 00030 bool isInResourceBox(int x, int y) const; 00031 bool tileOverlapsBaseLocation(BWAPI::TilePosition tile, BWAPI::UnitType type) const; 00032 00033 // determines whether we can build at a given location 00034 bool canBuildHere(BWAPI::TilePosition position, const Building & b) const; 00035 bool canBuildHereWithSpace(BWAPI::TilePosition position, const Building & b, int buildDist, bool horizontalOnly = false) const; 00036 00037 // returns a build location near a building's desired location 00038 BWAPI::TilePosition getBuildLocationNear(const Building & b, int buildDist, bool inRegion = false, bool horizontalOnly = false) const; 00039 00040 void reserveTiles(BWAPI::TilePosition position, int width, int height); 00041 void freeTiles(BWAPI::TilePosition position, int width, int height); 00042 void setBuildDistance(int distance); 00043 int getBuildDistance() const; 00044 00045 void drawReservedTiles(); 00046 void computeResourceBox(); 00047 00048 BWAPI::TilePosition getRefineryPosition(); 00049 00050 };
1.7.6.1