BWAPI
Aiur/include/ScoutManager.h
Go to the documentation of this file.
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 };
 All Classes Namespaces Files Functions Variables Enumerations Enumerator Defines