BWAPI
|
00001 #pragma once 00002 00003 #include "Interface.h" 00004 00005 #include "BaseSquad.h" 00006 #include "Behaviour.h" 00007 00008 class DefenseSquadTask : public BaseSquadTask 00009 { 00010 public: 00011 DefenseSquadTask(ArmyBehaviour behaviour); 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 bool waitingForUnit(Unit unit) const; 00025 virtual void giveUnit(Unit unit); 00026 virtual void returnUnit(Unit unit); 00027 virtual bool morph(Unit unit, BWAPI::UnitType previousType); 00028 virtual UnitGroup getFinishedUnits(); 00029 00030 virtual std::string getTaskName() const { return "Defense Squad"; } 00031 virtual std::string getOutputName() const { return ""; } 00032 00033 unsigned int controlSize() { return mUnits.size(); } 00034 00035 virtual void updateRequirements(); 00036 00037 void setGoal(Goal goal) { mDefenseGoal = goal; } 00038 00039 private: 00040 UnitGroup mUnits; 00041 std::map<Unit, Behaviour> mUnitBehaviours; 00042 00043 int mNeededWorkers; 00044 bool mNeedsAntiAir; 00045 bool mNeedsAntiGround; 00046 00047 UnitGroup mWorkerDefenders; 00048 Unit mObserver; 00049 Goal mDefenseGoal; 00050 }; 00051 00052 typedef std::tr1::shared_ptr<DefenseSquadTask> DefenseSquadPointer;