BWAPI
|
00001 #pragma once 00002 00003 #include "Interface.h" 00004 00005 #include "Task.h" 00006 #include "ScoutData.h" 00007 #include "TypeSafeEnum.h" 00008 #include "BuildTilePath.h" 00009 #include "UnitGroup.h" 00010 00011 class WorkerScoutTask : public Task 00012 { 00013 public: 00014 WorkerScoutTask(TaskType priority, ScoutData data); 00015 00016 virtual int getEndTime() const; 00017 virtual int getEndTime(Unit unit) const; 00018 00019 virtual int getPriority(Unit unit) const; 00020 00021 virtual Position getStartLocation(Unit unit) const; 00022 virtual Position getEndLocation(Unit unit) const; 00023 00024 virtual bool preUpdate(); 00025 virtual bool update(); 00026 00027 virtual void updateRequirements(); 00028 00029 virtual bool waitingForUnit(Unit unit) const; 00030 virtual void giveUnit(Unit unit); 00031 virtual void returnUnit(Unit unit); 00032 virtual bool morph(Unit unit, BWAPI::UnitType previousType); 00033 virtual UnitGroup getFinishedUnits(); 00034 00035 virtual std::string getTaskName() const { return "Worker Scout"; } 00036 virtual std::string getOutputName() const { return mCurrentState == ScoutState::Searching ? "Searching" : mCurrentState == ScoutState::Harassing ? "Harassing" : "Double Checking"; } 00037 00038 bool isFinishedScouting() { return hasEnded() || mCurrentState == ScoutState::Harassing || !mData; } 00039 00040 private: 00041 Unit mUnit; 00042 00043 ScoutData mData; 00044 int mFailTime; 00045 int mHarrasTimer; 00046 00047 struct ScoutStateDef 00048 { 00049 enum type 00050 { 00051 Searching, 00052 Harassing, 00053 DoubleCheck 00054 }; 00055 }; 00056 typedef SafeEnum<ScoutStateDef> ScoutState; 00057 00058 ScoutState mCurrentState; 00059 00060 BuildTilePath mTilePath; 00061 UnitGroup mLastUnitsTargetting; 00062 00063 void getNewData(); 00064 }; 00065 00066 typedef std::tr1::shared_ptr<WorkerScoutTask> WorkerScoutTaskPointer;