#pragma once
#include "TaskBase.h"




class GuardTask : public TaskBase {
public:
	GuardTask(Position t, Overseer* ov);
	GuardTask(TilePosition t, Overseer* ov);
	GuardTask(TilePosition t, Overseer* ov, int priority);
		GuardTask(std::vector<TilePosition> t, Overseer* ov, int priority);
	GuardTask(Unit* u, Overseer* ov, int priority);
	GuardTask(BaseModel* t, Overseer* ov, int priority);
	GuardTask(TilePosition t, Overseer* ov, int priority, bool holdChoke);
	virtual bool canInitialize();
	virtual bool execute();
	virtual void monitor();
	virtual bool isExecuting();
	virtual bool isFinished();
	virtual bool isInitialized();
	virtual UnitType getBuildType();
	virtual void setTargetBase(BaseModel* b);
private:
	int guardPriority;
	std::vector<UnitModel*> defenders;
	bool guardingUnit;
	Unit* target;
	std::vector<TilePosition> targetPath;

protected:

};