#pragma once
#include "struct.h"
#include "animatedsprite.h"

#ifndef SMARTSPRITE_H
#define SMARTSPRITE_H

// Clase SmartSprite
class SmartSprite : public AnimatedSprite
{
public:
	// Constructor
	SmartSprite();

	// Destructor
	~SmartSprite();

	// Inicializador
	void init(LTexture *texture, SDL_Renderer *renderer);

	// Pone a cero los elementos del objeto
	void reset();

	// Obtiene el valor de la variable
	bool isEnabled();

	// Establece el valor de la variable
	void setEnabled(bool state);

	// Obtiene el valor del contador
	Uint16 getCounter();

	// Establece el valor del contador
	void setCounter(Uint16 time);

	// Inicializa el valor del contador
	void resetCounter(Uint16 time);

	// Establece el valor de la variable
	void setDestX(int value);

	// Establece el valor de la variable
	void setDestY(int value);

	// Obtiene el valor de la variable
	int getDestX();

	// Obtiene el valor de la variable
	int getDestY();

	// Obtiene el valor de la variable
	bool isOnDestination();

	// Establece el valor de la variable
	void setId(int id);

	// Actualiza la posición y comprueba si ha llegado a su destino
	bool update();

	// Pinta el objeto en pantalla
	void render();

private:
	bool mEnabled;		   // Indica si esta habilitado
	bool mIsOnDestination; // Indica si está en el destino
	int mDestX;			   // Posicion de destino en el eje X
	int mDestY;			   // Posicion de destino en el eje Y
	int mId;			   // Identificador
	Uint16 mCounter;	   // Contador
	Uint16 mCounterIni;	   // Valor inicial del contador
};

#endif
