#pragma once #include // Para SDL_Event #include // Para SDL_Renderer #include // Para Uint32 #include // Para string, basic_string #include // Para vector #include "scoreboard.h" // Para board_t class Asset; class Debug; class Input; class ItemTracker; class Resource; class Room; class Screen; class Text; struct options_t; struct section_t; class Demo { private: // Objetos y punteros Screen *screen; // Objeto encargado de manejar el renderizador SDL_Renderer *renderer; // El renderizador de la ventana SDL_Event *eventHandler; // Manejador de eventos Room *room; // Objeto encargado de gestionar cada habitación del juego Resource *resource; // Objeto con los recursos Asset *asset; // Objeto con la ruta a todos los ficheros de recursos Input *input; // Objeto pata gestionar la entrada Text *text; // Objeto para los textos del juego Scoreboard *scoreboard; // Objeto encargado de gestionar el marcador ItemTracker *itemTracker; // Lleva el control de los objetos recogidos Debug *debug; // Objeto para gestionar la información de debug // Variables Uint32 ticks; // Contador de ticks para ajustar la velocidad del programa Uint32 ticksSpeed; // Velocidad a la que se repiten los bucles del programa std::string currentRoom; // Fichero de la habitación actual board_t board; // Estructura con los datos del marcador int counter; // Contador para el modo demo int roomTime; // Tiempo que se muestra cada habitacion int roomIndex; // Indice para el vector de habitaciones std::vector rooms; // Listado con los mapas de la demo // Actualiza el juego, las variables, comprueba la entrada, etc. void update(); // Pinta los objetos en pantalla void render(); // Comprueba los eventos de la cola void checkEvents(); // Comprueba las entradas void checkInput(); // Escribe el nombre de la pantalla void renderRoomName(); // Recarga todas las texturas void reLoadTextures(); // Cambia la paleta void switchPalette(); // Cambia de habitación bool changeRoom(std::string file); // Comprueba si se ha de cambiar de habitación void checkRoomChange(); // Pone el color del marcador en función del color del borde de la habitación void setScoreBoardColor(); public: // Constructor Demo(); // Destructor ~Demo(); // Bucle para el juego void run(); };