BWAPI
|
00001 #pragma once 00002 #include <UnitGroupManager.h> 00003 #include <BWAPI.h> 00004 #include <BWTA.h> 00005 #include <map> 00006 00007 class InformationManager 00008 { 00009 public: 00010 class UnitData 00011 { 00012 public: 00013 UnitData(); 00014 BWAPI::Position position; 00015 BWAPI::UnitType type; 00016 BWAPI::Player *player; 00017 int lastSeenTime; 00018 bool exists; 00019 }; 00020 00021 const std::vector<BWTA::BaseLocation*>& getEnemyBases () const; 00022 const std::map<BWAPI::Unit*, UnitData>& getSavedData () const; 00023 00024 static InformationManager* create(); 00025 static void destroy(); 00026 void onUnitDiscover (BWAPI::Unit*); 00027 void onUnitEvade (BWAPI::Unit*); 00028 void onUnitDestroy (BWAPI::Unit*); 00029 00030 BWAPI::Player* getPlayer (BWAPI::Unit*) const; 00031 BWAPI::UnitType getType (BWAPI::Unit*) const; 00032 BWAPI::Position getLastPosition (BWAPI::Unit*) const; 00033 int getLastSeenTime (BWAPI::Unit*) const; 00034 bool exists (BWAPI::Unit*) const; 00035 bool enemyHasBuilt (BWAPI::UnitType) const; 00036 int getBuildTime (BWAPI::UnitType) const; 00037 void setBaseEmpty (BWTA::BaseLocation*); 00038 void setEnemyStartLocation (BWTA::BaseLocation*); 00039 BWTA::BaseLocation* getEnemyStartLocation (); 00040 void setEnemyNatural (BWTA::BaseLocation*); 00041 BWTA::BaseLocation* getEnemyNatural (); 00042 void computeEnemyNatural (); 00043 std::set<BWTA::BaseLocation*> getUnvisitedBaseLocation(); 00044 int getNumberBaseCenters (); 00045 int getNumberEvadedUnits (BWAPI::UnitType); 00046 bool getEnemyBaseDestroyed (); 00047 void setEnemyBaseDestroyed (bool); 00048 bool getEnemySpotted (); 00049 void refreshEnemyBases (); 00050 00051 private: 00052 InformationManager(); 00053 ~InformationManager(); 00054 00055 void updateBuildTime(BWAPI::UnitType, int); 00056 00057 std::map<BWAPI::Unit*, UnitData> savedData; 00058 std::map<BWAPI::UnitType, int> buildTime; 00059 std::vector<BWTA::BaseLocation*> enemyBases; 00060 std::map<BWTA::BaseLocation*,BWAPI::Unit*> enemyBaseCenters; 00061 std::set<BWTA::BaseLocation*> startLocationCouldContainEnemy; 00062 std::set<BWTA::BaseLocation*> unvisitedBaseLocations; 00063 BWTA::BaseLocation *enemyStartLocation; 00064 BWTA::BaseLocation *enemyNatural; 00065 bool scoutedAnEnemyBase; 00066 bool enemyBaseDestroyed; 00067 }; 00068 extern InformationManager* TheInformationManager;