BWAPI
|
00001 #pragma once 00002 00003 #include "Interface.h" 00004 00005 class ChokepointClass; 00006 typedef std::tr1::shared_ptr<ChokepointClass> Chokepoint; 00007 typedef std::tr1::weak_ptr<ChokepointClass> WeakChokepoint; 00008 00009 class BaseClass; 00010 typedef std::tr1::shared_ptr<BaseClass> Base; 00011 00012 class RegionClass 00013 { 00014 public: 00015 RegionClass(Position center, int clearance); 00016 00017 std::set<Chokepoint> getChokepoints() const; 00018 00019 void addChokepoint(WeakChokepoint chokepoint); 00020 void addChokepointTile(WeakChokepoint chokepoint, TilePosition tile); 00021 00022 const std::set<TilePosition> &getChokepointTiles() { return mChokePointTiles; } 00023 00024 void addBase(Base base) { mBases.insert(base); } 00025 const std::set<Base> &getBases() const { return mBases; } 00026 00027 const Position &getCenter() const { return mCenter; } 00028 int getClearance() const { return mClearance; } 00029 00030 bool isConnected(std::tr1::shared_ptr<RegionClass> region) const; 00031 00032 void setSize(int size) { mSize = size; } 00033 int getSize() const { return mSize; } 00034 00035 void draw(BWAPI::Color color); 00036 00037 void removeChokepoint(WeakChokepoint chokepoint); 00038 00039 private: 00040 Position mCenter; 00041 int mClearance; 00042 int mSize; 00043 00044 std::set<WeakChokepoint> mChokepoints; 00045 std::map<WeakChokepoint, TilePosition> mChokePointToTiles; 00046 std::set<TilePosition> mChokePointTiles; 00047 00048 std::set<Base> mBases; 00049 }; 00050 00051 typedef std::tr1::shared_ptr<RegionClass> Region; 00052 typedef std::tr1::weak_ptr<RegionClass> WeakRegion;