#pragma once #include // for SDL_Event #include // for SDL_Rect #include // for SDL_Renderer, SDL_Texture #include // for Uint16, Uint32 #include #include // for string #include "fade.h" #include "section.h" // for options_e #include "background.h" #include "text.h" struct JA_Music_t; /* Esta clase gestiona un estado del programa. Se encarga de mostrar la tabla con las puntuaciones más altas. Para ello utiliza un objeto que se encarga de pintar el fondo y una textura sobre la que escribe las puntuacions. Esta textura se recorre modificando la ventana de vista para dar el efecto de que la textura se mueve sobre la pantalla. Para mejorar la legibilidad de los textos, el objeto que dibuja el fondo es capaz de modificar su atenuación. */ // Clase HiScoreTable class HiScoreTable { private: // Objetos y punteros SDL_Renderer *renderer; // El renderizador de la ventana SDL_Texture *backbuffer; // Textura para usar como backbuffer JA_Music_t *music; // Musica de fondo std::unique_ptr fade; // Objeto para renderizar fades std::unique_ptr background; // Objeto para dibujar el fondo del juego std::unique_ptr eventHandler; // Manejador de eventos std::unique_ptr text; // Objeto para escribir texto // Variables Uint16 counter; // Contador Uint16 counterEnd; // Valor final para el contador Uint32 ticks; // Contador de ticks para ajustar la velocidad del programa Uint32 ticksSpeed; // Velocidad a la que se repiten los bucles del programa SDL_Rect viewArea; // Parte de la textura que se muestra en pantalla FadeMode fadeMode; // Modo de fade a utilizar // Actualiza las variables void update(); // Pinta en pantalla void render(); // Comprueba los eventos void checkEvents(); // Comprueba las entradas void checkInput(); // Convierte un entero a un string con separadores de miles std::string format(int number); // Transforma un valor numérico en una cadena de 6 cifras std::string scoreToString(int num); // Crea el contenido de la textura con la lista de puntuaciones void fillTexture(); // Recarga todas las texturas void reloadTextures(); // Gestiona el fade void updateFade(); // Termina void quit(section::options_e code); public: // Constructor HiScoreTable(JA_Music_t *music); // Destructor ~HiScoreTable(); // Bucle principal void run(); };