BWAPI
Aiur/include/UnderAttackManager.h
Go to the documentation of this file.
00001 #pragma once
00002 #include <Arbitrator.h>
00003 #include <UnitGroupManager.h>
00004 #include <UnitGroup.h>
00005 #include <DefenseManager.h>
00006 #include <BaseManager.h>
00007 #include <BWAPI.h>
00008 
00009 class UnderAttackManager : Arbitrator::Controller<BWAPI::Unit*,double>
00010 {
00011 public:
00012         class UAData
00013         {
00014         public:
00015                 enum UAMode
00016                 {
00017                         Idle,
00018                         Worker,
00019                         WorkerDefending,
00020                         Defender,
00021                         Defending
00022                 };
00023                 UAData()                                                { mode = Idle; }
00024                 UAData(UAMode mode) { this->mode = mode; }
00025                 UAMode mode;
00026                 BWAPI::Unit *needHelp;
00027         };
00028         
00029         UnderAttackManager(Arbitrator::Arbitrator<BWAPI::Unit*,double>* arbitrator);
00030         
00031         virtual void                            onOffer                                         (std::set<BWAPI::Unit*> unitGroup);
00032         virtual void                            onRevoke                                        (BWAPI::Unit *p, double bid);
00033         void                                                            onRemoveUnit                    (BWAPI::Unit *unit);
00034         virtual void                            update                                          ();
00035         virtual std::string getName                                             () const;
00036         virtual std::string getShortName                        () const;
00037 
00038         void                                                            setDefenseManager       (DefenseManager*);
00039         void                                                            setBaseManager          (BaseManager*);
00040 
00041 private:
00042         Arbitrator::Arbitrator<BWAPI::Unit*,double> *arbitrator;
00043         DefenseManager                                                                                                                  *defenseManager;
00044         BaseManager                                                                                                                                     *baseManager;
00045         int                                                                                                                                                                     lastFrameCheck;
00046 
00047         //set of all units controlled by the UAM
00048         std::map<BWAPI::Unit*, UAData>                                                  backUp;
00049 };
 All Classes Namespaces Files Functions Variables Enumerations Enumerator Defines