#pragma once #include #include "asset.h" #include "input.h" #include "jail_audio.h" #include "screen.h" #include "sprite.h" #include "text.h" #include "utils.h" #include "const.h" #include "lang.h" #include "fade.h" #include "background.h" /* 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 Screen *screen; // Objeto encargado de dibujar en pantalla SDL_Event *eventHandler; // Manejador de eventos SDL_Texture *backbuffer; // Textura para usar como backbuffer Asset *asset; // Objeto que gestiona todos los ficheros de recursos Input *input; // Objeto pata gestionar la entrada Background *background; // Objeto para dibujar el fondo del juego Fade *fade; // Objeto para renderizar fades Text *text; // Objeto para escribir texto JA_Music_t *music; // Musica de fondo section_t *section; // Estado del bucle principal para saber si continua o se sale // 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 int 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(int code); public: // Constructor HiScoreTable(Screen *screen, Asset *asset, Input *input, section_t *section, JA_Music_t *music); // Destructor ~HiScoreTable(); // Bucle principal void run(); };