#pragma once #include // for SDL_Rect #include // for SDL_Texture #include // for Uint32 #include // for shared_ptr #include // for string #include // for vector #include "paleta.h" // for jSurface class Sprite; // lines 13-13 class Texture; // lines 15-15 class Title { private: struct TitleLetter { std::string letter; // Letra a escribir int x; // Posición en el eje x bool enabled; // Solo se escriben y mueven si estan habilitadas }; enum class TitleState { SHOW_LOADING_SCREEN, FADE_LOADING_SCREEN, SHOW_MENU }; // Objetos y punteros std::shared_ptr texture_; // Textura con los graficos std::shared_ptr sprite_; // Sprite para manejar la textura SDL_Texture *bg_texture_; // Textura para dibujar el fondo de la pantalla std::shared_ptr cheevos_texture_; // Textura con la lista de logros std::shared_ptr cheevos_sprite_; // Sprite para manejar la textura con la lista de logros // Variables int counter_ = 0; // Contador std::string long_text_; // Texto que aparece en la parte inferior del titulo Uint32 ticks_ = 0; // Contador de ticks para ajustar la velocidad del programa std::vector letters_; // Vector con las letras de la marquesina int marquee_speed_ = 3; // Velocidad de desplazamiento de la marquesina bool show_cheevos_ = false; // Indica si se muestra por pantalla el listado de logros SDL_Rect cheevos_texture_view_; // Zona visible de la textura con el listado de logros TitleState state_; // Estado en el que se encuentra el bucle principal jSurface loading_screen_; // Surface con los gráficos de la pantalla de carga // Actualiza las variables void update(); // Dibuja en pantalla void render(); // Comprueba el manejador de eventos void checkEvents(); // Comprueba las entradas void checkInput(); // Inicializa la marquesina void initMarquee(); // Actualiza la marquesina void updateMarquee(); // Dibuja la marquesina void renderMarquee(); // Desplaza la lista de logros void moveCheevosList(int direction); // Rellena la textura de fondo con todos los gráficos void fillTexture(); // Crea y rellena la textura para mostrar los logros void createCheevosTexture(); // Oculta la lista de logros void hideCheevosList(); public: // Constructor Title(); // Destructor ~Title(); // Bucle principal void run(); };