#pragma once #include // for SDL_Event #include // for SDL_Point #include // for Uint32 #include // for vector #include #include "utils.h" // for Color #include "sprite.h" #include "texture.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 std::shared_ptr sinceTexture; // Textura con los graficos "Since 1998" std::unique_ptr sinceSprite; // Sprite para manejar la sinceTexture std::shared_ptr jailTexture; // Textura con los graficos "JAILGAMES" std::vector> jailSprite; // Vector con los sprites de cada linea que forman el bitmap JAILGAMES // 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(); public: // Constructor Logo(); // Destructor ~Logo() = default; // Bucle principal void run(); };