#pragma once #include // for SDL_Renderer #include // for SDL_Window #include // for string class Asset; // lines 6-6 class Debug; // lines 8-8 class Input; // lines 14-14 class Resource; // lines 17-17 class Screen; // lines 18-18 struct JA_Music_t; // lines 20-20 struct options_t; // lines 21-21 struct section_t; // lines 22-22 class Director { private: // Objetos y punteros SDL_Window *window_; // La ventana donde dibujamos SDL_Renderer *renderer_; // El renderizador de la ventana Resource *resource_; // Objeto con los recursos Debug *debug_; // Objeto para gestionar la información de debug struct options_t *options; // Variable con todas las opciones del programa section_t *section; // Sección y subsección actual del programa; // Variables JA_Music_t *title_music_; // Musica del titulo std::string executable_path_; // Path del ejecutable std::string system_folder_; // Carpeta del sistema donde guardar datos // Crea e inicializa las opciones del programa void initOptions(); // Comprueba los parametros del programa void checkProgramArguments(int argc, const 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(const std::string &folder); // 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(); // Ejecuta la seccion de juego con el logo void runLogo(); // Ejecuta la seccion de juego de la pantalla de carga void runLoadingScreen(); // 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, const char *argv[]); // Destructor ~Director(); // Bucle principal int run(); };