#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 erase();

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

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

	//Obtiene el valor de la variable
	Uint16 getEnabledTimer();

	//Establece el valor de la variable
	void setEnabledTimer(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();

	//Actualiza la posición y comprueba si ha llegado a su destino
	bool update();
	
	//Obtiene el valor de la variable
	bool isOnDestination();

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

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

	//Establece el valor de la variable
	void setIntroEvents(Uint8 *value);

private:
	//Indica si esta habilitado
	bool mEnabled;
	
	//Contador
	Uint16 mEnabledTimer;
	
	//Indica si está en el destino
	bool mIsOnDestination;

	//Posicion de destino
	int mDestX;
	int mDestY;

	//Identificador
	int mId;

	//Dirección del array de eventos donde notificar el estado
	Uint8 *mIntroEvents;
};

#endif
