BWAPI
|
00001 #pragma once 00002 00003 #include "Interface.h" 00004 00005 #include "Singleton.h" 00006 #include "Task.h" 00007 00008 class PylonPowerTrackerClass 00009 { 00010 public: 00011 PylonPowerTrackerClass(){} 00012 00013 void update(); 00014 00015 void onDiscover(Unit unit); 00016 void onMorphRenegade(Unit unit, Player previousPlayer, BWAPI::UnitType previousType); 00017 void onDestroy(Unit unit); 00018 00019 bool hasPower(TilePosition tile, BWAPI::UnitType unit); 00020 00021 private: 00022 UnitGroup mPylons; 00023 00024 UnitGroup mLiftedBuildings; 00025 00026 std::map<Unit, std::set<TilePosition>> mPylonSmallPowerSites; 00027 std::map<Unit, std::set<TilePosition>> mPylonMediumPowerSites; 00028 std::map<Unit, std::set<TilePosition>> mPylonLargePowerSites; 00029 00030 std::map<TilePosition, int> mSmallPowerSites; 00031 std::map<TilePosition, int> mMediumPowerSites; 00032 std::map<TilePosition, int> mLargePowerSites; 00033 00034 void onAddPylon(Unit unit); 00035 void onRemovePylon(Unit unit); 00036 00037 void addToPowerField(Unit unit); 00038 void removeFromPowerField(Unit unit); 00039 }; 00040 00041 typedef Singleton<PylonPowerTrackerClass> PylonPowerTracker;