BWAPI
Skynet/Skynet/ConstructionTask.h
Go to the documentation of this file.
00001 #pragma once
00002 
00003 #include "Interface.h"
00004 
00005 #include "Task.h"
00006 #include "BuildingPlacer.h"
00007 
00008 class ConstructionTask : public Task
00009 {
00010 public:
00011         ConstructionTask(TaskType priority, BuildingLocation position, BWAPI::UnitType type);
00012 
00013         virtual int getEndTime() const;
00014         virtual int getEndTime(Unit unit) const;
00015 
00016         virtual int getPriority(Unit unit) const;
00017 
00018         virtual Position getStartLocation(Unit unit) const;
00019         virtual Position getEndLocation(Unit unit) const;
00020 
00021         virtual bool preUpdate();
00022         virtual bool update();
00023 
00024         virtual void updateRequirements();
00025 
00026         virtual bool waitingForUnit(Unit unit) const;
00027         virtual void giveUnit(Unit unit);
00028         virtual void returnUnit(Unit unit);
00029         virtual bool morph(Unit unit, BWAPI::UnitType previousType);
00030         virtual UnitGroup getFinishedUnits();
00031 
00032         virtual std::string getTaskName() const { return "Constructing"; }
00033         virtual std::string getOutputName() const { return mType.getName(); }
00034 
00035         virtual void setRequiredSatisfyTime(RequirementGroup requirements, int time, int delay);
00036 
00037         virtual int dispatchTime() const { return mRequiredSatisfyTime - mRequiredDelayTime; }
00038         virtual int startTime() const { return mRequiredSatisfyTime; }
00039 
00040         virtual bool hasDispatched() const { return inProgress() || mBuilder; }
00041         virtual bool inProgress() const { return mProducedUnit && mProducedUnit->exists(); }
00042 
00043 private:
00044         BWAPI::UnitType mType;
00045 
00046         Unit mBuilder;
00047         Unit mProducedUnit;
00048 
00049         BuildingLocation mBuildingLocation;
00050         ReservedLocation mReservedLocation;
00051 
00052         int mRequiredSatisfyTime;
00053         int mRequiredDelayTime;
00054 
00055         bool mReservedResources;
00056 
00057         inline bool finishedWithBuilder() { return shouldReturnUnit() || (inProgress() && mType.getRace() == BWAPI::Races::Protoss); }
00058 
00059         void reserveResources();
00060         void freeResources();
00061 
00062         void reserveLocation();
00063         void freeLocation();
00064 };
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines