#pragma once #include #include #include "asset.h" #include "input.h" #include "jail_audio.h" #include "lang.h" #include "screen.h" #include "section.h" #include "sprite.h" #include "utils.h" /* Esta clase gestiona un estado del programa. Se encarga de dibujar por pantalla el logo de "JAILGAMES" utilizando un sencillo efecto consistente en generar un sprite por cada linea del bitmap que forma la palabra "JAILGAMES". Posteriormente realiza una modulación de color sobre la textura para simular un fade to black al estilo ZX Spectrum */ // Clase Logo class Logo { private: // Objetos y punteros Screen *screen; // Objeto encargado de dibujar en pantalla Asset *asset; // Objeto con los ficheros de recursos Input *input; // Objeto pata gestionar la entrada Texture *jailTexture; // Textura con los graficos "JAILGAMES" Texture *sinceTexture; // Textura con los graficos "Since 1998" SDL_Event *eventHandler; // Manejador de eventos std::vector jailSprite; // Vector con los sprites de cada linea que forman el bitmap JAILGAMES Sprite *sinceSprite; // Sprite para manejar la sinceTexture // Variables std::vector color; // Vector con los colores para el fade int counter; // Contador Uint32 ticks; // Contador de ticks para ajustar la velocidad del programa Uint32 ticksSpeed; // Velocidad a la que se repiten los bucles del programa int showSinceSprite_cm; // Tiempo del contador en el que empieza a verse el sprite de "SINCE 1998" int initFade_cm; // Tiempo del contador cuando inicia el fade a negro int endLogo_cm; // Tiempo del contador para terminar el logo int postLogoDuration; // Tiempo que dura el logo con el fade al maximo int speed; // Velocidad de desplazamiento de cada linea SDL_Point dest; // Posición X donde dibujar el logo // Actualiza las variables void update(); // Dibuja en pantalla void render(); // Comprueba el manejador de eventos void checkEvents(); // Comprueba las entradas void checkInput(); // Gestiona el logo de JAILGAME void updateJAILGAMES(); // Gestiona el color de las texturas void updateTextureColors(); // Recarga todas las texturas void reloadTextures(); // Termina void quit(section::options_e code); public: // Constructor Logo(Asset *asset, Input *input); // Destructor ~Logo(); // Bucle principal void run(); };