#pragma once #include // for SDL_Rect #include // for SDL_Renderer, SDL_Texture #include // for Uint16, Uint32, Uint8 #include // for unique_ptr #include // for string class Background; // lines 8-8 class Fade; // lines 9-9 class Text; // lines 10-10 enum class FadeMode : Uint8; // lines 11-11 struct JA_Music_t; // lines 12-12 /* 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 text_; // Objeto para escribir texto // Variables Uint16 counter_; // Contador Uint16 counter_end_; // Valor final para el contador Uint32 ticks_; // Contador de ticks para ajustar la velocidad del programa Uint32 ticks_speed_; // Velocidad a la que se repiten los bucles del programa SDL_Rect view_area_; // Parte de la textura que se muestra en pantalla FadeMode fade_mode_; // 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); // Crea el contenido de la textura con la lista de puntuaciones void fillTexture(); // Recarga todas las texturas void reloadTextures(); // Gestiona el fade void updateFade(); public: // Constructor explicit HiScoreTable(JA_Music_t *music); // Destructor ~HiScoreTable(); // Bucle principal void run(); };