#pragma once #include // para SDL_Rect #include // para SDL_Renderer, SDL_Texture #include // para Uint16, Uint32, Uint8 #include // para unique_ptr #include // para string class Background; // lines 8-8 class Fade; // lines 9-9 class Text; // lines 10-10 enum class FadeMode : Uint8; // lines 11-11 /* 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: // Constantes static constexpr Uint16 COUNTER_END_ = 800; // Valor final para el contador // Objetos y punteros SDL_Renderer *renderer_; // El renderizador de la ventana SDL_Texture *backbuffer_; // Textura para usar como backbuffer std::unique_ptr fade_; // Objeto para renderizar fades std::unique_ptr background_; // Objeto para dibujar el fondo del juego std::shared_ptr text_; // Objeto para escribir texto // Variables Uint16 counter_; // Contador Uint32 ticks_; // Contador de ticks para ajustar la velocidad 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 HiScoreTable(); // Destructor ~HiScoreTable(); // Bucle principal void run(); };