#pragma once #include // Para SDL_Point #include // Para Uint32 #include // Para shared_ptr, unique_ptr #include // Para vector class Sprite; // lines 8-8 class Texture; // lines 9-9 struct Color; // lines 10-10 /* 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: // 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 maximo static constexpr int SPEED = 8; // Velocidad de desplazamiento de cada linea // Objetos y punteros std::shared_ptr since_texture_; // Textura con los graficos "Since 1998" std::unique_ptr since_sprite_; // Sprite para manejar la sinceTexture std::shared_ptr jail_texture_; // Textura con los graficos "JAILGAMES" std::vector> jail_sprite_; // 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_ = 0; // Contador Uint32 ticks_ = 0; // Contador de ticks para ajustar la velocidad del programa 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 JAILGAMES void updateJAILGAMES(); // Renderiza el logo de JAILGAMES void renderJAILGAMES(); // Gestiona el color de las texturas void updateTextureColors(); public: // Constructor Logo(); // Destructor ~Logo(); // Bucle principal void run(); };