#pragma once #include // for SDL_Event #include // for Uint32 #include "utils.h" // for section_t class Asset; class DefineButtons; class Fade; class GameLogo; class Input; class Screen; class Sprite; class Text; class Texture; class Tiledbg; struct JA_Music_t; // Textos #define TEXT_COPYRIGHT "@2020,2024 JailDesigner" // Parámetros #define 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 Screen *screen; // Objeto encargado de dibujar en pantalla Asset *asset; // Objeto que gestiona todos los ficheros de recursos Input *input; // Objeto para leer las entradas de teclado o mando SDL_Event *eventHandler; // Manejador de eventos Tiledbg *tiledbg; // Objeto para dibujar el mosaico animado de fondo GameLogo *gameLogo; // Objeto para dibujar el logo con el título del juego DefineButtons *defineButtons; // Objeto para definir los botones del joystic Texture *miniLogoTexture; // Textura con el logo de JailGames mini Sprite *miniLogoSprite; // Sprite con el logo de JailGames mini Text *text1; // Objeto de texto para poder escribir textos en pantalla Text *text2; // Objeto de texto para poder escribir textos en pantalla Fade *fade; // Objeto para realizar fundidos en pantalla JA_Music_t *music; // Musica para el titulo // Variable int counter; // Temporizador para la pantalla de titulo Uint32 ticks; // Contador de ticks para ajustar la velocidad del programa bool demo; // Indica si el modo demo estará activo section_t nextSection; // Indica cual es la siguiente sección a cargar cuando termine el contador del titulo Uint32 ticksSpeed; // Velocidad a la que se repiten los bucles del programa int postFade; // Opción a realizar cuando termina el fundido int numControllers; // Número de mandos conectados // Inicializa los valores de las variables void init(); // 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(); public: // Constructor Title(JA_Music_t *music); // Destructor ~Title(); // Bucle para el titulo del juego void run(); };