#pragma once #include // for SDL_Renderer #include // for Uint32 #include // for shared_ptr #include // for string #include // for vector #include "scoreboard.h" // for board_t class Asset; // lines 11-11 class Debug; // lines 12-12 class Input; // lines 13-13 class ItemTracker; // lines 14-14 class Resource; // lines 15-15 class Room; // lines 16-16 class Screen; // lines 17-17 class Text; // lines 18-18 class Demo { private: // Objetos y punteros Screen *screen_; // Objeto encargado de manejar el renderizador SDL_Renderer *renderer_; // El renderizador de la ventana 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 Debug *debug_; // Objeto para gestionar la información de debug std::shared_ptr room_; // Objeto encargado de gestionar cada habitación del juego std::shared_ptr text_; // Objeto para los textos del juego std::shared_ptr scoreboard_; // Objeto encargado de gestionar el marcador // Variables Uint32 ticks_; // Contador de ticks para ajustar la velocidad del programa std::string current_room_; // Fichero de la habitación actual ScoreboardData board_; // Estructura con los datos del marcador int counter_; // Contador para el modo demo int room_time_; // Tiempo que se muestra cada habitacion int room_index_; // 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(); };