BWAPI
|
00001 #pragma once 00002 #include "Defines.h" 00003 #include "Utils/CSingleton.h" 00004 #include "Utils/TimeManager.h" 00005 #include "EViewedUnit.h" 00006 #include <BWTA.h> 00007 #include <BWAPI.h> 00008 #include <map> 00009 #include <utility> 00010 00011 // This class works closely tied to MapManager (see MapManager::update()) 00012 class EUnitsFilter : public CSingleton<EUnitsFilter> 00013 { 00014 friend class CSingleton<EUnitsFilter>; 00015 EUnitsFilter(); 00016 ~EUnitsFilter() { } 00017 TimeManager* timeManager; 00018 std::set<BWAPI::UnitType> _interestingTypes; 00019 std::map<BWAPI::Unit*, EViewedUnit> _eViewedUnits; 00020 std::map<BWAPI::Unit*, std::pair<BWAPI::UnitType, BWAPI::Position> > _invisibleUnits; 00021 public: 00022 //std::map<BWAPI::Unit*, EViewedUnit> _eViewedUnits; 00023 00024 void update(BWAPI::Unit* u); 00025 void filter(BWAPI::Unit* u); 00026 void onUnitDestroy(BWAPI::Unit* u); 00027 void onUnitMorph(BWAPI::Unit* u); 00028 void onUnitShow(BWAPI::Unit* u); 00029 void onUnitHide(BWAPI::Unit* u); 00030 void onUnitRenegade(BWAPI::Unit* u); 00031 00032 const std::map<BWAPI::Unit*, EViewedUnit>& getViewedUnits(); 00033 EViewedUnit getViewedUnit(BWAPI::Unit* u); 00034 int getNumbersType(BWAPI::UnitType ut); 00035 BWAPI::Unit* getClosestCenter(BWTA::BaseLocation* b); 00036 const std::map<BWAPI::Unit*, std::pair<BWAPI::UnitType, BWAPI::Position> >& getInvisibleUnits(); 00037 bool empty(); 00038 #ifdef __DEBUG__ 00039 void bwOutput(); 00040 #endif 00041 virtual void update(); 00042 };