BWAPI
|
00001 #pragma once 00002 #include <Arbitrator.h> 00003 #include <BWAPI.h> 00004 #include <BWTA.h> 00005 #include <BaseManager.h> 00006 #include <InformationManager.h> 00007 #include <BuildOrderManager.h> 00008 #include <UnitGroupManager.h> 00009 #include <SpyManager.h> 00010 00011 class BorderManager; 00012 class DefenseManager : Arbitrator::Controller<BWAPI::Unit*,double> 00013 { 00014 public: 00015 class DefenseData 00016 { 00017 public: 00018 enum DefenseMode 00019 { 00020 Idle, 00021 Moving, 00022 Defending 00023 }; 00024 DefenseData(){ mode = Idle; } 00025 DefenseMode mode; 00026 }; 00027 DefenseManager(Arbitrator::Arbitrator<BWAPI::Unit*,double>* arbitrator); 00028 00029 void setBorderManager (BorderManager* borderManager); 00030 void setBaseManager (BaseManager *baseManager); 00031 void setInformationManager (InformationManager *informationManager); 00032 void setBuildOrderManager (BuildOrderManager *buildOrderManager); 00033 void setSpyManager (SpyManager *spyManager); 00034 00035 std::set<BWAPI::Unit*>& getIdleDefenders (); 00036 virtual void onOffer (std::set<BWAPI::Unit*> units); 00037 virtual void onRevoke (BWAPI::Unit* unit, double bid); 00038 void onRemoveUnit (BWAPI::Unit* unit); 00039 virtual void update (); 00040 virtual std::string getName () const; 00041 virtual std::string getShortName () const; 00042 00043 private: 00044 BorderManager *borderManager; 00045 BuildOrderManager *buildOrderManager; 00046 BaseManager *baseManager; 00047 InformationManager *informationManager; 00048 SpyManager *spyManager; 00049 Arbitrator::Arbitrator<BWAPI::Unit*,double> *arbitrator; 00050 00051 std::set<BWTA::Chokepoint*> myBorder; 00052 std::vector<BWTA::Chokepoint*> myBorderVector; 00053 std::map<BWAPI::Unit*,DefenseData> defenders; 00054 std::set<BWAPI::Unit*> idleDefenders; 00055 bool hasObserver; 00056 int lastFrameCheck; 00057 int round; 00058 };