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