#pragma once #include #include "common/asset.h" #include "common/debug.h" #include "common/input.h" #include "common/jail_audio.h" #include "common/movingsprite.h" #include "common/resource.h" #include "common/sprite.h" #include "common/text.h" #include "common/utils.h" #include "const.h" #include "credits.h" #include "demo.h" #include "game.h" #include "intro.h" #include "logo.h" #include "title.h" #include "game_over.h" #include "ending.h" #include "ending2.h" #ifndef DIRECTOR_H #define DIRECTOR_H class Director { private: // Objetos y punteros SDL_Window *window; // La ventana donde dibujamos SDL_Renderer *renderer; // El renderizador de la ventana Screen *screen; // Objeto encargado de dibujar en pantalla Resource *resource; // Objeto con los recursos Asset *asset; // Objeto que gestiona todos los ficheros de recursos Input *input; // Objeto Input para gestionar las entradas Game *game; // Objeto para gestionar la sección del juego Logo *logo; // Objeto para gestionar la sección del logo del programa Title *title; // Objeto para gestionar la pantalla de título Intro *intro; // Objeto para gestionar la introducción del juego Credits *credits; // Objeto para gestionar los creditos del juego Demo *demo; // Objeto para gestionar el modo demo, en el que se ven pantallas del juego Ending *ending; // Objeto para gestionar el final del juego Ending2 *ending2; // Objeto para gestionar el final del juego GameOver *gameOver; // Objeto para gestionar el final de la partida Debug *debug; // Objeto para getsionar la información de debug struct options_t *options; // Variable con todas las opciones del programa // Variables JA_Music music; // Musica del titulo std::string executablePath; // Path del ejecutable section_t section; // Sección y subsección actual del programa; std::string systemFolder; // Carpeta del sistema donde guardar datos // Crea e inicializa las opciones del programa void iniOptions(); // Comprueba los parametros del programa void checkProgramArguments(int argc, char *argv[]); // Carga el fichero de configuración bool loadConfig(); // Guarda el fichero de configuración bool saveConfig(); // Crea la carpeta del sistema donde guardar datos void createSystemFolder(); // Carga los recursos void loadResources(section_t section); // Asigna variables a partir de dos cadenas bool setOptions(options_t *options, std::string var, std::string value); // Inicializa jail_audio void initJailAudio(); // Arranca SDL y crea la ventana bool initSDL(); // Inicializa el objeto Input void initInput(); // Crea el indice de ficheros bool setFileList(); // Obtiene el valor de la variable Uint8 getSubsection(); // Obtiene el valor de la variable Uint8 getSection(); // Establece el valor de la variable void setSection(section_t section); // Ejecuta la seccion de juego con el logo void runLogo(); // Ejecuta la seccion de juego de la introducción void runIntro(); // Ejecuta la seccion de juego con el titulo y los menus void runTitle(); // Ejecuta la seccion de los creditos del juego void runCredits(); // Ejecuta la seccion de la demo, donde se ven pantallas del juego void runDemo(); // Ejecuta la seccion del final del juego void runEnding(); // Ejecuta la seccion del final del juego void runEnding2(); // Ejecuta la seccion del final de la partida void runGameOver(); // Ejecuta la seccion de juego donde se juega void runGame(); public: // Constructor Director(int argc, char *argv[]); // Destructor ~Director(); // Bucle principal void run(); }; #endif