#pragma once
#include "sprite.h"
#include "text.h"

#ifndef TEXT2_H
#define TEXT2_H

//Clase texto. Pinta texto en pantalla a partir de un bitmap
class Text2 : public Text
{
public:
	//Constructor
	Text2();

	//Destructor
	~Text2();

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

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

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

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

	//Establece el valor de la variable
	void setCaption(std::string text);

	//Establece el valor de la variable
	void setWrittingSpeed(Uint16 value);

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

	//Obtiene el valor de la variable
	bool IsEnabled();
	
	//Establece el valor de la variable
	void setEnabledTimer(Uint16 value);

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

	//Actualiza el objeto
	void update();

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

	//Centra la cadena de texto a un punto X
	void center(int x);

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

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

private:
	//Posicion X/Y donde empezar a escribir el texto
	int mPosX;
	int mPosY;

	//Kerning del texto
	int mKerning;

	//Texto para escribir
	std::string mCaption;

	//Velocidad de escritura
	Uint16 mWrittingSpeed;

	//Temporizador de escritura para cada caracter
	Uint16 mWrittingTimer;

	//Posición del texto que se está escribiendo
	Uint16 mIndex;

	//Longitud de la cadena a escribir
	Uint16 mLenght;

	//Indica si se ha escrito todo el texto
	bool mWrittingCompleted;

	//Indica si el objeto está habilitado
	bool mEnabled;

	//Temporizador para deshabilitar el objeto
	Uint16 mEnabledTimer;

	//Identificador
	int mId;

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

#endif
