#pragma once #include // Para Uint32 #include // Para unique_ptr, shared_ptr class DefineButtons; // lines 6-6 class Fade; // lines 7-7 class GameLogo; // lines 8-8 class Sprite; // lines 9-9 class Text; // lines 10-10 class Texture; // lines 11-11 class TiledBG; // lines 12-12 namespace section { enum class Name; } // Textos constexpr const char TEXT_COPYRIGHT[] = "@2020,2024 JailDesigner"; // Parámetros constexpr bool ALLOW_TITLE_ANIMATION_SKIP = true; /* Esta clase gestiona un estado del programa. Se encarga de la parte del titulo o menu que sirve para empezar a jugar. Utiliza otras clases para: - Mostrar el logo del juego - Dibujar el tileado de fondo - Redifinir los botones de los mandos de juego Esta clase tiene dos estados: - El titulo está animandose, con el fondo estático - El titulo ya está en su sitio y el fondo se está animando Por razones de diseño, no se permite saltarse la animación del titulo, aunque es configurable mediante un define */ // Clase Title class Title { private: // Objetos y punteros std::shared_ptr text_; // Objeto de texto para poder escribir textos en pantalla std::unique_ptr fade_; // Objeto para realizar fundidos en pantalla std::unique_ptr tiled_bg_; // Objeto para dibujar el mosaico animado de fondo std::unique_ptr game_logo_; // Objeto para dibujar el logo con el título del juego std::unique_ptr mini_logo_sprite_; // Sprite con el logo de JailGames mini std::unique_ptr define_buttons_; // Objeto para definir los botones del joystic // Variable int counter_ = 0; // Temporizador para la pantalla de titulo Uint32 ticks_ = 0; // Contador de ticks para ajustar la velocidad del programa section::Name next_section_; // Indica cual es la siguiente sección a cargar cuando termine el contador del titulo int post_fade_ = 0; // Opción a realizar cuando termina el fundido int num_controllers_; // Número de mandos conectados // Actualiza las variables del objeto void update(); // Dibuja el objeto en pantalla void render(); // Comprueba los eventos void checkEvents(); // Comprueba las entradas void checkInput(); // Recarga las texturas void reLoadTextures(); // Reinicia el contador interno void resetCounter(); // Intercambia la asignación de mandos a los jugadores void swapControllers(); // Intercambia el teclado de jugador void swapKeyboard(); // Muestra información sobre los controles y los jugadores void showControllers(); public: // Constructor Title(); // Destructor ~Title(); // Bucle para el titulo del juego void run(); };