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