BWAPI
Skynet/Skynet/TaskManager.h
Go to the documentation of this file.
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;
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines