BWAPI
|
00001 #pragma once 00002 #include <map> 00003 #include <set> 00004 #include <BWAPI.h> 00005 #include <Arbitrator.h> 00006 #include <BWTA.h> 00007 #include <BuildManager.h> 00008 #include "Base.h" 00009 class BuildOrderManager; 00010 class BorderManager; 00011 class BaseManager 00012 { 00013 public: 00014 00015 BaseManager(); 00016 void setBuildOrderManager (BuildOrderManager* builder); 00017 void setBuildManager (BuildManager* buildManager); 00018 void setBorderManager (BorderManager* borderManager); 00019 void update (); 00020 void updateRefineries (); 00021 Base* getBase (BWTA::BaseLocation* location); 00022 BWTA::BaseLocation* getLastTakenBaseLocation(); 00023 BWTA::BaseLocation* expand (int priority = 100); 00024 BWTA::BaseLocation* expand (BWTA::BaseLocation* location, int priority = 100); 00025 std::set<Base*> getActiveBases () const; 00026 std::set<Base*> getAllBases () const; 00027 std::set<Base*> getAllBasesWithGas (); 00028 00029 const std::set<BWTA::Region*>& getMyRegions () const; 00030 00031 std::string getName (); 00032 void onRemoveUnit (BWAPI::Unit* unit); 00033 00034 bool hasRefinery (BWTA::BaseLocation* location); 00035 bool isRefineryNeeded (); 00036 void setRefineryBuildPriority(int priority); 00037 int getRefineryBuildPriority(); 00038 00039 private: 00040 void addBase (BWTA::BaseLocation* location); 00041 void removeBase (BWTA::BaseLocation* location); 00042 00043 BuildOrderManager *builder; 00044 BorderManager *borderManager; 00045 BuildManager *buildManager; 00046 std::map<BWTA::BaseLocation*,Base*> location2base; 00047 std::set<Base*> allBases; 00048 std::set<BWTA::Region*> myRegions; 00049 BWTA::BaseLocation *lastTakenBaseLocation; 00050 int refineryNeeded; 00051 int refineryBuildPriority; 00052 int lastFrameCheck; 00053 };