BWAPI
|
00001 #pragma once 00002 #include "Macro/Arbitrator.h" 00003 #include "Macro/InformationManager.h" 00004 #include <BWAPI.h> 00005 00006 class ScoutManager : public Arbitrator::Controller<BWAPI::Unit*,double> 00007 { 00008 public: 00009 class ScoutData 00010 { 00011 public: 00012 enum ScoutMode 00013 { 00014 Idle, 00015 Searching, 00016 Roaming, 00017 Harassing, 00018 Fleeing 00019 }; 00020 ScoutData(){ mode = Idle; } 00021 BWTA::BaseLocation* target; 00022 ScoutMode mode; 00023 }; 00024 ScoutManager(Arbitrator::Arbitrator<BWAPI::Unit*,double>* arbitrator); 00025 virtual void onOffer(std::set<BWAPI::Unit*> units); 00026 virtual void onRevoke(BWAPI::Unit* unit, double bid); 00027 virtual void update(); 00028 void setInformationManager(InformationManager* infoManager); 00029 00030 virtual std::string getName() const; 00031 virtual std::string getShortName() const; 00032 void onRemoveUnit(BWAPI::Unit* unit); 00033 00034 // Non-Controller methods. 00035 bool isScouting() const; 00036 void setScoutCount(int count); 00037 void setDebugMode(bool debugMode); 00038 00039 std::map<BWAPI::Unit*, ScoutData> scouts; 00040 Arbitrator::Arbitrator<BWAPI::Unit*,double>* arbitrator; 00041 00042 std::list<BWTA::BaseLocation*> baseLocationsToScout; 00043 std::set<BWTA::BaseLocation*> baseLocationsExplored; 00044 BWTA::BaseLocation *myStartLocation; 00045 00046 private: 00047 bool needMoreScouts() const; 00048 void requestScout(double bid); 00049 void addScout(BWAPI::Unit* unit); 00050 void updateScoutAssignments(); 00051 void drawAssignments(); 00052 InformationManager* informationManager; 00053 00054 size_t desiredScoutCount; 00055 int scoutingStartFrame; 00056 bool debugMode; 00057 };