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