BWAPI
|
00001 #include "Region.h" 00002 00003 #include "Chokepoint.h" 00004 #include "Base.h" 00005 #include "TerrainAnaysis.h" 00006 00007 RegionClass::RegionClass(Position center, int clearance) 00008 : mCenter(center) 00009 , mClearance(clearance) 00010 { 00011 } 00012 00013 std::set<Chokepoint> RegionClass::getChokepoints() const 00014 { 00015 std::set<Chokepoint> chokepoints; 00016 for each(WeakChokepoint chokepoint in mChokepoints) 00017 { 00018 chokepoints.insert(chokepoint.lock()); 00019 } 00020 return chokepoints; 00021 } 00022 00023 void RegionClass::addChokepointTile(WeakChokepoint chokepoint, TilePosition tile) 00024 { 00025 mChokePointToTiles[chokepoint] = tile; 00026 mChokePointTiles.insert(tile); 00027 } 00028 00029 void RegionClass::addChokepoint(WeakChokepoint chokepoint) 00030 { 00031 mChokepoints.insert(chokepoint); 00032 } 00033 00034 void RegionClass::draw(BWAPI::Color color) 00035 { 00036 BWAPI::Broodwar->drawCircle(BWAPI::CoordinateType::Map, mCenter.x(), mCenter.y(), 64, color); 00037 for each(WeakChokepoint chokepoint in mChokepoints) 00038 { 00039 Chokepoint choke = chokepoint.lock(); 00040 BWAPI::Broodwar->drawLine(BWAPI::CoordinateType::Map, choke->getCenter().x(), choke->getCenter().y(), mCenter.x(), mCenter.y(), color); 00041 } 00042 } 00043 00044 bool RegionClass::isConnected(Region region) const 00045 { 00046 return TerrainAnaysis::Instance().getWalkConnectivity(mCenter) == TerrainAnaysis::Instance().getWalkConnectivity(region->getCenter()); 00047 } 00048 00049 void RegionClass::removeChokepoint(WeakChokepoint chokepoint) 00050 { 00051 mChokepoints.erase(chokepoint); 00052 mChokePointTiles.erase(mChokePointToTiles[chokepoint]); 00053 mChokePointToTiles.erase(chokepoint); 00054 }