BWAPI
|
00001 #pragma once 00002 #include <Arbitrator.h> 00003 #include <InformationManager.h> 00004 #include <BuildOrderManager.h> 00005 #include <UnitGroupManager.h> 00006 #include <Random.h> 00007 #include <BWAPI.h> 00008 #include <stack> 00009 00010 class SpyManager : public Arbitrator::Controller<BWAPI::Unit*,double> 00011 { 00012 public: 00013 class SpyData 00014 { 00015 public: 00016 enum SpyMode 00017 { 00018 Idle, 00019 Searching, 00020 Spying, 00021 Fleeing 00022 }; 00023 SpyData(){ mode = Idle; } 00024 BWTA::BaseLocation* target; 00025 int lastFrameDodging; 00026 SpyMode mode; 00027 }; 00028 00029 SpyManager(Arbitrator::Arbitrator<BWAPI::Unit*,double>* arbitrator); 00030 ~SpyManager(); 00031 00032 virtual void onOffer (std::set<BWAPI::Unit*> units); 00033 virtual void onRevoke (BWAPI::Unit* unit, double bid); 00034 virtual void update (); 00035 00036 virtual std::string getName () const; 00037 virtual std::string getShortName() const; 00038 void onRemoveUnit(BWAPI::Unit* unit); 00039 void removeBid (BWAPI::Unit* unit); 00040 00041 // Non-Controller methods. 00042 void buildObserver (); 00043 void setInformationManager (InformationManager*); 00044 void setBuildOrderManager (BuildOrderManager*); 00045 void increaseSpyNumber (); 00046 void setDebugMode (bool); 00047 void initialize (); 00048 bool isInitialized (); 00049 int getNumberToSpy (); 00050 int addSight (); 00051 00052 private: 00053 void drawAssignments(); 00054 Arbitrator::Arbitrator<BWAPI::Unit*,double> *arbitrator; 00055 InformationManager *informationManager; 00056 BuildOrderManager *buildOrderManager; 00057 00058 Random *randomDodge; 00059 00060 std::map<BWAPI::Unit*, SpyData> spies; 00061 std::set<BWAPI::Unit*> obsDefenders; 00062 std::stack <BWTA::BaseLocation*> baseLocationsToSpy; 00063 std::set<BWTA::BaseLocation*> baseLocationsSpied; 00064 BWTA::BaseLocation *myStartLocation; 00065 const BWTA::BaseLocation *enemyStartLocation; 00066 00067 int numberBasesToSpy; 00068 int numberAdditionalBasesToSpy; 00069 bool debugMode; 00070 int lastFrameCheck; 00071 int lastIncreaseSpyNumber; 00072 bool initialized; 00073 };