BWAPI
|
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 };