/**
 * \file Skills.h
 * \date 12.03.2001
 *
 * Interface for the SkillsInterface class
 */

#ifndef INTERFACES_SKILLS_H
#define INTERFACES_SKILLS_H

#include "Interfaces/Interface.h"

/**
 * \class SkillsInterface
 * \author Marek Lehuta
 * \brief Skills task interface
 *
 * Skills task provides basic actions to agent
 */

class SkillsInterface : public Interface
{
public:
	// Construction and destruction
	SkillsInterface() : Interface("Skills interface", "v0.0.01") {}
	virtual ~SkillsInterface() {}


	// Interface functions
	// Basic skills
	virtual void ScanBall() = 0;
	virtual void KickTo(const CfPoint&) = 0;
	virtual void RunTo(const CfPoint&) = 0;
	virtual void TurnTo(const CfPoint&) = 0;
	virtual void TurnNeckTo(const CfPoint& future_pos,
		const CfPoint& future_mypos, float fNextTurn = 0) = 0;
	virtual void AlignNeck() = 0;

	// Higher skills
	virtual void KickToGoal() = 0;
	virtual void RunToBall() = 0;
	virtual void PassBallTo(const CfPoint& pos, float fRem_spd = 0.7f) = 0;
	virtual void DribleTo(const CfPoint&) = 0;
	virtual void TurnBall() = 0;

protected:

private:

};

#endif // INTERFACES_SKILLS_H
