BWAPI
|
00001 #pragma once 00002 /* 00003 * TacticalBuildingPlacer.h 00004 */ 00005 #include <BWAPI.h> 00006 #include <BWTA.h> 00007 #include <BWSAL.h> 00008 00009 #include <EnhancedUI.h> 00010 #include <EnhancedSide.h> 00011 #include <EnhancedChokepoint.h> 00012 00013 #include <assert.h> 00014 00015 using std::pair; 00016 using std::vector; 00017 using std::set; 00018 00019 class TacticalBuildingPlacer 00020 { 00021 public: 00022 // TacticalBuildingPlacer is a singleton 00023 static TacticalBuildingPlacer& instance() { static TacticalBuildingPlacer s; return s; } 00024 ~TacticalBuildingPlacer(void); 00025 00026 void analyze(void); 00027 void draw(void); 00028 void update(void); 00029 BWAPI::TilePosition reserveBuildLocation(BWAPI::UnitType unitType, BWAPI::TilePosition seedLocation, BWAPI::Unit *builder = NULL); 00030 00031 private: 00032 TacticalBuildingPlacer(); 00033 // search for optimal build pattern to wall off chokepoint in a region 00034 vector<BWAPI::TilePosition> chokepointBuildPatternSearch(EnhancedChokepoint ecpoint, BWTA::Region * region); 00035 00036 vector<pair<BWTA::Region *, vector<EnhancedChokepoint>>> regionsToChokepoints; 00037 // for chokepointBuildPatternSearch() return 00038 vector<vector<BWAPI::TilePosition>> chokepointBuildLocations; 00039 BWSAL::BFSBuildingPlacer buildingPlacer; 00040 };