BWAPI
|
00001 #pragma once 00002 #include <BWAPI.h> 00003 #include <BWTA.h> 00004 #include <map> 00005 class InformationManager 00006 { 00007 public: 00008 static InformationManager* create(); 00009 static void destroy(); 00010 void onUnitDiscover(BWAPI::Unit* unit); 00011 void onUnitEvade(BWAPI::Unit* unit); 00012 void onUnitDestroy(BWAPI::Unit* unit); 00013 BWAPI::Player* getPlayer(BWAPI::Unit* unit) const; 00014 BWAPI::UnitType getType(BWAPI::Unit* unit) const; 00015 BWAPI::Position getLastPosition(BWAPI::Unit* unit) const; 00016 int getLastSeenTime(BWAPI::Unit* unit) const; 00017 bool exists(BWAPI::Unit* unit) const; 00018 bool enemyHasBuilt(BWAPI::UnitType type) const; 00019 int getBuildTime(BWAPI::UnitType type) const; 00020 const std::set<BWTA::BaseLocation*>& getEnemyBases() const; 00021 void setBaseEmpty(BWTA::BaseLocation* base); 00022 void addEnemyBase(BWTA::BaseLocation* base); 00023 private: 00024 InformationManager(); 00025 ~InformationManager(); 00026 class UnitData 00027 { 00028 public: 00029 UnitData(); 00030 BWAPI::Position position; 00031 BWAPI::UnitType type; 00032 BWAPI::Player* player; 00033 int lastSeenTime; 00034 bool exists; 00035 }; 00036 void updateBuildTime(BWAPI::UnitType type, int time); 00037 std::map<BWAPI::Unit*, UnitData> savedData; 00038 std::map<BWAPI::UnitType, int> buildTime; 00039 std::set<BWTA::BaseLocation*> enemyBases; 00040 std::map<BWTA::BaseLocation*,BWAPI::Unit*> enemyBaseCenters; 00041 std::set<BWTA::BaseLocation*> startLocationCouldContainEnemy; 00042 bool scoutedAnEnemyBase; 00043 }; 00044 extern InformationManager* TheInformationManager;