BWAPI
|
00001 #pragma once 00002 #include <Arbitrator.h> 00003 #include <UnitGroupManager.h> 00004 #include <UnitGroup.h> 00005 #include <DefenseManager.h> 00006 #include <BaseManager.h> 00007 #include <BWAPI.h> 00008 00009 class UnderAttackManager : Arbitrator::Controller<BWAPI::Unit*,double> 00010 { 00011 public: 00012 class UAData 00013 { 00014 public: 00015 enum UAMode 00016 { 00017 Idle, 00018 Worker, 00019 WorkerDefending, 00020 Defender, 00021 Defending 00022 }; 00023 UAData() { mode = Idle; } 00024 UAData(UAMode mode) { this->mode = mode; } 00025 UAMode mode; 00026 BWAPI::Unit *needHelp; 00027 }; 00028 00029 UnderAttackManager(Arbitrator::Arbitrator<BWAPI::Unit*,double>* arbitrator); 00030 00031 virtual void onOffer (std::set<BWAPI::Unit*> unitGroup); 00032 virtual void onRevoke (BWAPI::Unit *p, double bid); 00033 void onRemoveUnit (BWAPI::Unit *unit); 00034 virtual void update (); 00035 virtual std::string getName () const; 00036 virtual std::string getShortName () const; 00037 00038 void setDefenseManager (DefenseManager*); 00039 void setBaseManager (BaseManager*); 00040 00041 private: 00042 Arbitrator::Arbitrator<BWAPI::Unit*,double> *arbitrator; 00043 DefenseManager *defenseManager; 00044 BaseManager *baseManager; 00045 int lastFrameCheck; 00046 00047 //set of all units controlled by the UAM 00048 std::map<BWAPI::Unit*, UAData> backUp; 00049 };