#pragma once #include // Para SDL_Renderer #include // Para Uint32 #include // Para basic_string, string #include // Para vector #include "utils.h" // Para color_t class AnimatedSprite; class Asset; class Resource; class Text; class Texture; struct board_t { int items; // Lleva la cuenta de los objetos recogidos int lives; // Lleva la cuenta de ls vidas restantes del jugador int rooms; // Lleva la cuenta de las habitaciones visitadas bool music; // Indica si ha de sonar la musica durante el juego color_t color; // Color para escribir el texto del marcador Uint32 iniClock; // Tiempo inicial para calcular el tiempo transcurrido bool jailEnabled; // Indica si se puede entrar a la Jail }; class Scoreboard { private: struct clock_t { int hours; int minutes; int seconds; std::string separator; }; // Objetos y punteros AnimatedSprite *sprite; // Sprite para mostrar las vidas en el marcador SDL_Renderer *renderer; // El renderizador de la ventana Resource *resource; // Objeto con los recursos Asset *asset; // Objeto con la ruta a todos los ficheros de recursos Text *text; // Objeto para escribir texto Texture *itemTexture; // Textura con los graficos para las vidas board_t *board; // Contiene las variables a mostrar en el marcador // Variables std::vector color; // Vector con los colores del objeto int counter; // Contador interno int colorChangeSpeed; // Cuanto mas alto, mas tarda en cambiar de color bool paused; // Indica si el marcador esta en modo pausa Uint32 timePaused; // Milisegundos que ha estado el marcador en pausa Uint32 totalTimePaused; // Tiempo acumulado en pausa clock_t clock; // Contiene las horas, minutos y segundos transcurridos desde el inicio de la partida color_t itemsColor; // Color de la cantidad de items recogidos // Obtiene el tiempo transcurrido de partida clock_t getTime(); // Actualiza el color de la cantidad de items recogidos void updateItemsColor(); public: // Constructor Scoreboard(board_t *board); // Destructor ~Scoreboard(); // Pinta el objeto en pantalla void render(); // Actualiza las variables del objeto void update(); // Recarga la textura void reLoadTexture(); // Recarga la paleta void reLoadPalette(); // Pone el marcador en modo pausa void pause(); // Quita el modo pausa del marcador void resume(); // Devuelve la cantidad de minutos de juego transcurridos int getMinutes(); };