BWAPI
Aiur/include/ArmyManager.h
Go to the documentation of this file.
00001 #pragma once
00002 #include <Arbitrator.h>
00003 #include <DefenseManager.h>
00004 #include <InformationManager.h>
00005 #include <UnitGroupManager.h>
00006 #include <BaseManager.h>
00007 #include <MoodManager.h>
00008 #include <BWAPI.h>
00009 #include <BWTA.h>
00010 
00011 class ArmyManager : Arbitrator::Controller<BWAPI::Unit*,double>
00012 {
00013 public:
00014         class ArmyData
00015         {
00016         public:
00017                 enum ArmyMode
00018                 {
00019                         Idle,
00020                         Moving,
00021                         Attacking,
00022                         Fleeing
00023                 };
00024                 ArmyData(){ mode = Idle; lastFrameDragoonAttack = 0; }
00025                 BWTA::BaseLocation* target;
00026                 ArmyMode mode;
00027                 int lastFrameDragoonAttack;
00028         };
00029 
00030         ArmyManager(Arbitrator::Arbitrator<BWAPI::Unit*,double>* arbitrator);
00031         ~ArmyManager();
00032         void setDefenseManager                  (DefenseManager*);
00033         void setInformationManager      (InformationManager*);
00034         void setBaseManager                                     (BaseManager*);
00035         void setMoodManager                                     (MoodManager*);
00036 
00037         void setLastExpandFrame                 (int);
00038 
00039         virtual void                            onOffer                         (std::set<BWAPI::Unit*> unitGroup);
00040         virtual void                            onRevoke                        (BWAPI::Unit *p, double bid);
00041         void                                                            onRemoveUnit    (BWAPI::Unit *unit);
00042         virtual void                            update                          ();
00043         virtual std::string getName                             () const;
00044         virtual std::string getShortName        () const;
00045 
00046         double                                                                                          enemyDPS                        ();
00047         double                                                                                          myDPS                                   ();
00048         double                                                                                          myDPS                                   (std::map<BWAPI::Unit*, ArmyData>);
00049         int                                                                                                             enemyHP                         ();
00050         int                                                                                                             myHP                                    (std::map<BWAPI::Unit*, ArmyData>);
00051         static std::set<BWAPI::Unit*>   whoIsAttacking(BWAPI::Unit*);
00052         static bool                                                                             containsBuilding(std::set<BWAPI::Unit*>);
00053         static BWAPI::Unit*                                             nearestUnit(BWAPI::Unit*, std::set<BWAPI::Unit*>);
00054 
00055         bool                                                            isInitialized   ();
00056         void                                                            initialize              ();
00057         int                                                                     getStartAttack();
00058         bool                                                            getFirstAttackDone();
00059         void                                                            setFirstAttackDone(bool);
00060 
00061 private:
00062         Arbitrator::Arbitrator<BWAPI::Unit*,double>* arbitrator;
00063         DefenseManager                                                                          *defenseManager;
00064         InformationManager                                                              *informationManager;
00065         BaseManager                                                                                             *baseManager;
00066         MoodManager                                                                                             *moodManager;
00067 
00068         Random                                                                                                          *randomEarlyAttack;
00069         Random                                                                                                          *randomSizeRush;
00070 
00071         std::map<BWAPI::Unit*, ArmyData>        company;
00072         std::set<BWAPI::Unit*>                                          fleeing;
00073         std::vector<BWAPI::Position>                    enemyBuildings;
00074         std::vector<BWTA::BaseLocation*>        unvisitedBases;
00075         double                                                                                                          sizeRush;
00076         int                                                                                                                             lastFrameCheck;
00077         int                                                                                                                             lastExpandFrame;
00078         int                                                                                                                             lastAttack;
00079         bool                                                                                                                    firstAttackDone;
00080         bool                                                                                                                    initialized;
00081         int                                                                                                                             startAttack;
00082         int                                                                                                                             round;
00083         int                                                                                                                             roundUnvisited;
00084 };
 All Classes Namespaces Files Functions Variables Enumerations Enumerator Defines