#pragma once #include // Para SDL_FPoint, Uint64 #include // Para shared_ptr, unique_ptr #include // Para vector class Sprite; class Texture; struct Color; /* 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 línea 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 { public: // Constructor Logo(); // Destructor ~Logo(); // Bucle principal void run(); private: // --- Constantes --- static constexpr int SHOW_SINCE_SPRITE_COUNTER_MARK = 70; // Tiempo del contador en el que empieza a verse el sprite de "SINCE 1998" static constexpr int INIT_FADE_COUNTER_MARK = 300; // Tiempo del contador cuando inicia el fade a negro static constexpr int END_LOGO_COUNTER_MARK = 400; // Tiempo del contador para terminar el logo static constexpr int POST_LOGO_DURATION = 20; // Tiempo que dura el logo con el fade al máximo static constexpr int SPEED = 8; // Velocidad de desplazamiento de cada línea // --- Objetos y punteros --- std::shared_ptr since_texture_; // Textura con los gráficos "Since 1998" std::unique_ptr since_sprite_; // Sprite para manejar la since_texture std::shared_ptr jail_texture_; // Textura con los gráficos "JAILGAMES" std::vector> jail_sprite_; // Vector con los sprites de cada línea que forman el bitmap JAILGAMES // --- Variables --- std::vector color_; // Vector con los colores para el fade int counter_ = 0; // Contador Uint64 ticks_ = 0; // Contador de ticks para ajustar la velocidad del programa SDL_FPoint dest_; // Posición donde dibujar el logo // --- Métodos internos --- void update(); // Actualiza las variables void render(); // Dibuja en pantalla void checkEvents(); // Comprueba el manejador de eventos void checkInput(); // Comprueba las entradas void updateJAILGAMES(); // Gestiona el logo de JAILGAMES void renderJAILGAMES(); // Renderiza el logo de JAILGAMES void updateTextureColors(); // Gestiona el color de las texturas };