BWAPI
|
00001 #pragma once 00002 00003 #include "Interface.h" 00004 00005 #include "Task.h" 00006 00007 class TrainTask : public Task 00008 { 00009 public: 00010 TrainTask(TaskType priority, BWAPI::UnitType type); 00011 00012 virtual int getEndTime() const; 00013 virtual int getEndTime(Unit unit) const; 00014 00015 virtual int getPriority(Unit unit) const; 00016 00017 virtual Position getStartLocation(Unit unit) const; 00018 virtual Position getEndLocation(Unit unit) const; 00019 00020 virtual bool preUpdate(); 00021 virtual bool update(); 00022 00023 virtual void updateRequirements(); 00024 00025 virtual bool waitingForUnit(Unit unit) const; 00026 virtual void giveUnit(Unit unit); 00027 virtual void returnUnit(Unit unit); 00028 virtual bool morph(Unit unit, BWAPI::UnitType previousType); 00029 virtual UnitGroup getFinishedUnits(); 00030 00031 virtual std::string getTaskName() const { return "Training"; } 00032 virtual std::string getOutputName() const { return mType.getName(); } 00033 00034 virtual void setRequiredSatisfyTime(RequirementGroup requirements, int time, int delay) { mRequiredSatisfyTime = time; } 00035 00036 virtual int dispatchTime() const { return mRequiredSatisfyTime; } 00037 virtual int startTime() const { return mRequiredSatisfyTime; } 00038 00039 virtual bool hasDispatched() const { return mProductionBuilding; } 00040 virtual bool inProgress() const { return mProducedUnit; } 00041 00042 BWAPI::UnitType getTrainType() { return mType; } 00043 00044 private: 00045 BWAPI::UnitType mType; 00046 00047 Unit mProductionBuilding; 00048 Unit mProducedUnit; 00049 00050 int mRequiredSatisfyTime; 00051 00052 bool mReservedResources; 00053 00054 int mOrderTime; 00055 00056 void reserveResources(); 00057 void freeResources(); 00058 };