#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 height);

	// 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 setSpeed(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 setEnabledCounter(Uint16 value);

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

	// Actualiza todas las variables del objeto
	void update();

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

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

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

private:
	bool mCompleted;		// Indica si se ha escrito todo el texto
	bool mEnabled;			// Indica si el objeto está habilitado
	int mId;				// Identificador
	int mKerning;			// Espacio entre caracteres
	int mPosX;				// Posicion en el eje X donde empezar a escribir el texto
	int mPosY;				// Posicion en el eje Y donde empezar a escribir el texto
	std::string mCaption;	// Texto para escribir
	Uint16 mCounter;		// Temporizador de escritura para cada caracter
	Uint16 mEnabledCounter; // Contador para deshabilitar el objeto
	Uint16 mIndex;			// Indice a la posición dentro de la cadena de texto que se está escribiendo
	Uint16 mLenght;			// Longitud de la cadena a escribir
	Uint16 mSpeed;			// Velocidad de escritura
};

#endif
