#pragma once #include #include "asset.h" #include "input.h" #include "jail_audio.h" #include "screen.h" #include "sprite.h" #include "text.h" #include "utils.h" #include "const.h" #include "lang.h" #include "tiledbg.h" #include "fade.h" /* Esta clase gestiona un estado del programa. Se encarga de poner en pantalla un texto explicativo para entender como se juega. Ademas muestra algunos items y explica para qué sirven. Utiliza dos texturas de apoyo, una con el texto ya escrito y otra donde se combina tanto el texto de la primera textura como los sprites de los items. Finalmente, una ventana recorre la textura para dar el efecto de que todo se desplaza por la pantalla sobre el mosaico de fondo (gestionado por el correspondiente objeto) */ // Clase Instructions class Instructions { private: // Objetos y punteros SDL_Renderer *renderer; // El renderizador de la ventana Screen *screen; // Objeto encargado de dibujar en pantalla std::vector itemTextures; // Vector con las texturas de los items std::vector sprites; // Vector con los sprites de los items SDL_Event *eventHandler; // Manejador de eventos SDL_Texture *backbuffer; // Textura para usar como backbuffer SDL_Texture *texture; // Textura fija con el texto Asset *asset; // Objeto que gestiona todos los ficheros de recursos Input *input; // Objeto pata gestionar la entrada Text *text; // Objeto para escribir texto Tiledbg *tiledbg; // Objeto para dibujar el mosaico animado de fondo Fade *fade; // Objeto para renderizar fades JA_Music_t *music; // Musica de fondo section_t *section; // Estado del bucle principal para saber si continua o se sale // Variables int counter; // Contador int counterEnd; // Valor final para el contador Uint32 ticks; // Contador de ticks para ajustar la velocidad del programa Uint32 ticksSpeed; // Velocidad a la que se repiten los bucles del programa SDL_Rect view; // Vista del backbuffer que se va amostrar por pantalla SDL_Point spritePos; // Posición del primer sprite int itemSpace; // Espacio entre los items // Actualiza las variables void update(); // Pinta en pantalla void render(); // Comprueba los eventos void checkEvents(); // Comprueba las entradas void checkInput(); // Rellena la textura de texto void fillTexture(); // Rellena el backbuffer void fillBackbuffer(); // Inicializa los sprites de los items void iniSprites(); // Actualiza los sprites void updateSprites(); // Recarga todas las texturas void reloadTextures(); // Termina void quit(int code); public: // Constructor Instructions(Screen *screen, Asset *asset, Input *input, section_t *section, JA_Music_t *music); // Destructor ~Instructions(); // Bucle principal void run(); };