BWAPI
SnippyHolloW-BroodwarBotQ-f01ab56/src/Macro/ScoutManager.h
Go to the documentation of this file.
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 };
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines