#pragma once

#include <SDL2/SDL.h>
#include "utils.h"
#include "text.h"
#include "asset.h"
#include "sprite.h"
#include "const.h"
#include <string>

#ifndef SCOREBOARD_H
#define SCOREBOARD_H

struct board_t
{
	int diamonds; // Lleva la cuenta de los objetos recogidos
	int lives;	  // Lleva la cuenta de ls vidas restantes del jugador
};

enum sb_state_e
{
	sb_show,
	sb_hide,
	sb_showing,
	sb_hiding
};

// Clase ScoreBoard
class ScoreBoard
{
private:
	LTexture *texture;		// Textura con los graficos
	Sprite *sprite;			// Sprite para mostrar los graficos
	SDL_Renderer *renderer; // El renderizador de la ventana
	SDL_Texture *layer;		// Textura donde dibujar el marcador
	Asset *asset;			// Objeto con la ruta a todos los ficheros de recursos
	Text *text;				// Objeto para escribir texto
	int counter;			// Contador interno
	board_t *board;			// Contiene las variables a mostrar en el marcador
	sb_state_e state;		// Estado en el que se encuentra el marcador

public:
	// Constructor
	ScoreBoard(SDL_Renderer *renderer, Asset *asset, board_t *board);

	// Destructor
	~ScoreBoard();

	// Dibuja el marcador en la textura
	void fillTexture();

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

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

	// Recarga la textura
	void reLoadTexture();

	// Resetea el tiempo de aparición del marcador
	void reset();
};

#endif
