/**
 * \file Commands.h
 * \date 26.02.2002
 *
 * Interface for the CommandsInterface class
 */

#ifndef INTERFACES_COMMANDS_H
#define INTERFACES_COMMANDS_H

#include "Common/Interfaces/Interface.h"
#include "Common/World/Types.h"

/**
 * \class CommandsInterface
 * \author Marek Lehuta
 * \brief Commands task interface
 * 
 * Commands task creates correct commands and sends them to server
 */
 
class CommandsInterface : public Interface
{
public:
	// Construction and destruction
	CommandsInterface() : Interface("Commands interface", "v0.0.02") {}
	virtual ~CommandsInterface() {}

	virtual void SetRealSide(RealSide rs) = 0;
	
	// Interface functions
	virtual int Dash(float fPower) = 0;
	virtual int Turn(float fMoment) = 0;
	virtual int Kick(float fPower, float fDirection) = 0;
	virtual int Move(float fX, float fY) = 0;
	virtual int Catch(float fDirection) = 0;
	virtual	int AttentionTo(unsigned uniform)=0;
	virtual int AttentionOff()=0;

	virtual int SenseBody() = 0;
	virtual int TurnNeck(int iAngle) = 0;
	virtual int Say(const char* pMsg) = 0;

	virtual int ServerInit(const char* teamName, bool goalie = false, 
		const char* ver = NULL) = 0;
	virtual int CLangInit() = 0;
	virtual int Reconnect(const char* pTeamName, unsigned uUniformNumber) = 0;
	virtual int Bye() = 0;

	/// Get match status
	virtual int Score() = 0;
	/// Switch view angle and quality
	virtual int ChangeView(ViewWidth iWidth) = 0;

//	virtual int SendCommand(int, void*) = 0;

protected:

private:

};

///////////////////////////////////////////////////////////////////////////////

#endif	// INTERFACES_COMMANDS_H
