|
BWAPI
|
00001 #pragma once 00002 00003 #include <Common.h> 00004 #include "WorkerManager.h" 00005 #include "BuildingPlacer.h" 00006 #include "BuildingData.h" 00007 #include "UnitInfoState.h" 00008 #include "MapTools.h" 00009 00010 class BuildingManager { 00011 00012 BuildingManager(); 00013 00014 ConstructionData buildingData; 00015 00016 static BuildingManager * instance; 00017 00018 bool debugMode; 00019 int totalBuildTasks; 00020 00021 int reservedMinerals; // minerals reserved for planned buildings 00022 int reservedGas; // gas reserved for planned buildings 00023 int buildingSpace; // how much space we want between buildings 00024 00025 std::vector<BWAPI::Unit *> builders; // workers which have been assigned to buildings 00026 std::vector<Building> buildingsNeedingBuilders; // buildings which do not yet have builders assigned 00027 std::vector<Building> buildingsAssigned; // buildings which have workers but not yet under construction 00028 std::vector<Building> buildingsUnderConstruction; // buildings which are under construction 00029 std::vector<BWAPI::Unit *> buildingUnitsConstructing; // units which have been recently detected as started construction 00030 00031 // functions 00032 bool isEvolvedBuilding(BWAPI::UnitType type); 00033 bool isBuildingPositionExplored(const Building & b) const; 00034 00035 // the update() functions 00036 void validateWorkersAndBuildings(); // STEP 1 00037 void assignWorkersToUnassignedBuildings(); // STEP 2 00038 void constructAssignedBuildings(); // STEP 3 00039 void checkForStartedConstruction(); // STEP 4 00040 void checkForDeadTerranBuilders(); // STEP 5 00041 void checkForCompletedBuildings(); // STEP 6 00042 00043 // functions for performing tedious vector tasks 00044 void removeBuildingFromVector(BWAPI::Unit * buildingUnit, std::vector<Building> & vec); 00045 void removeBuildingFromVector(Building & b, std::vector<Building> & vec); 00046 00047 void drawBuildingInformation(int x, int y); 00048 char getBuildingWorkerCode(const Building & b) const; 00049 00050 public: 00051 00052 void update(); 00053 void onUnitMorph(BWAPI::Unit * unit); 00054 void onUnitDestroy(BWAPI::Unit * unit); 00055 void addBuildingTask(BWAPI::UnitType type, BWAPI::TilePosition desiredLocation); 00056 BWAPI::TilePosition getBuildingLocation(const Building & b); 00057 00058 int getReservedMinerals(); 00059 int getReservedGas(); 00060 00061 static BuildingManager * getInstance(); 00062 00063 void printBuildingNumbers(); 00064 00065 bool isBeingBuilt(BWAPI::UnitType type); 00066 };
1.7.6.1