BWAPI
ExampleAIModule/Source/BuildManager.h
Go to the documentation of this file.
00001 #pragma once
00002 #include <algorithm>
00003 #include <BWAPI.h>
00004 #include "Common.h"
00005 #include "InformationManager.h"
00006 #include "WorkerManager.h"
00007 
00008 typedef std::set<BWAPI::TilePosition> TilePositionSet;
00009 typedef std::vector<BWAPI::UnitType> UnitTypeVector;
00010 
00011 struct MyRectangle {
00012         int x1;
00013         int y1;
00014         int x2;
00015         int y2;
00016 };
00017 
00018 class BuildManager
00019 {
00020 public:
00021         BuildManager();
00022         ~BuildManager();
00023         void onFrame();
00024         BWAPI::TilePosition BuildManager::getBuildLocationNear(BWAPI::TilePosition position, BWAPI::UnitType type);
00025         void constructionPlaced(BWAPI::Unit* build);
00026         void refineryPlaced(BWAPI::Unit* build);
00027         void onBuildingDestroy(BWAPI::Unit* build);
00028         bool alreadyBuilding(BWAPI::UnitType type);
00029         bool alreadyRequested(BWAPI::UnitType type);
00030         bool wallNear(BWAPI::TilePosition destination);
00031         void reserveBaseLocations();
00032 
00033         UnitTypeVector _buildOrder;
00034         UnitTypeVector _toConstruct;
00035 
00036 private:
00037         bool executeBuildOrder(BWAPI::UnitType buildType);
00038         BWAPI::TilePosition getGeyserTilePosition();
00039         bool needSupply();
00040         bool buildOnProxy(BWAPI::UnitType type);
00041         BWAPI::TilePosition getSeedForTurret();
00042         MyRectangle getBuildRectangle(BWAPI::TilePosition position, BWAPI::UnitType type);
00043         void mapArea(MyRectangle c, int label, int expand=0);
00044         bool canBuildHere(BWAPI::TilePosition buildPosition, BWAPI::UnitType type);
00045         bool anyMissileTurretsNear(BWAPI::TilePosition buildPosition);
00046         void drawBuildMap();
00047         void drawBuildOrder();
00048         bool canBuild(BWAPI::UnitType type);
00049 
00050         BWAPI::Unit* _workerBuildingRefinery;
00051         int mapW;
00052         int mapH;
00053         int** buildMap;
00054 
00055 };
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Defines