BWAPI
|
00001 #pragma once 00002 00003 #include "Interface.h" 00004 00005 #include "Singleton.h" 00006 #include "Unit.h" 00007 #include "Task.h" 00008 #include "ReservedLocation.h" 00009 00010 class TaskManagerClass 00011 { 00012 public: 00013 TaskManagerClass(); 00014 00015 void onDiscover(Unit unit); 00016 void onMorphRenegade(Unit unit, Player previousPlayer, BWAPI::UnitType previousType); 00017 void onDestroy(Unit unit); 00018 00019 void update(); 00020 00021 void removeTask(Unit unit); 00022 void giveTask(Unit unit); 00023 00024 std::map<int, int> earliestFreeTimes(Unit unit, int priority, int lastBlockEnd, int maxTime, int blockTimeNeeded, bool allowAnyBlockLength); 00025 void reserveUnit(Unit unit, int time, int priority, int duration); 00026 00027 void addTask(TaskPointer task); 00028 00029 TaskPointer build(BWAPI::UnitType type, TaskType taskType, BuildingLocation position = BuildingLocation::Base); 00030 TaskPointer upgrade(BWAPI::UpgradeType type, int level, TaskType taskType); 00031 TaskPointer research(BWAPI::TechType type, TaskType taskType); 00032 00033 private: 00034 std::list<TaskType> getPriorityList(); 00035 00036 bool updateRequirement(TaskPointer task, RequirementGroup requirement); 00037 00038 std::map<BWAPI::UnitType, std::map<Unit, TaskPointer>> mUnitTasks; 00039 00040 std::map<TaskType, std::list<TaskPointer>> mTypeTasks; 00041 std::set<TaskPointer> mTasks; 00042 00043 std::map<Unit, std::map<int, std::pair<int, int>>> mReservedUnits; 00044 }; 00045 00046 typedef Singleton<TaskManagerClass> TaskManager;