BWAPI
|
00001 #pragma once 00002 #include "Macro/Arbitrator.h" 00003 #include <BWAPI.h> 00004 #include "Macro/BuildingPlacer.h" 00005 class UpgradeManager : public Arbitrator::Controller<BWAPI::Unit*,double> 00006 { 00007 public: 00008 class Upgrade 00009 { 00010 public: 00011 BWAPI::UpgradeType type; 00012 int level; 00013 }; 00014 UpgradeManager(Arbitrator::Arbitrator<BWAPI::Unit*,double>* arbitrator); 00015 void setBuildingPlacer(BuildingPlacer* placer); 00016 virtual void onOffer(std::set<BWAPI::Unit*> units); 00017 virtual void onRevoke(BWAPI::Unit* unit, double bid); 00018 virtual void update(); 00019 virtual std::string getName() const; 00020 void onRemoveUnit(BWAPI::Unit* unit); 00021 bool upgrade(BWAPI::UpgradeType type, int level = -1); 00022 int getPlannedLevel(BWAPI::UpgradeType type) const; 00023 int getStartedLevel(BWAPI::UpgradeType type) const; 00024 int getCompletedLevel(BWAPI::UpgradeType type) const; 00025 00026 private: 00027 Arbitrator::Arbitrator<BWAPI::Unit*,double>* arbitrator; 00028 BuildingPlacer* placer; 00029 std::map<BWAPI::UnitType,std::list< Upgrade > > upgradeQueues; 00030 std::map<BWAPI::Unit*,Upgrade> upgradingUnits; 00031 std::map<BWAPI::UpgradeType, int> plannedLevel; 00032 std::map<BWAPI::UpgradeType, int> startedLevel; 00033 };