#pragma once #include // for SDL_Renderer #include // for SDL_Window #include // for string, basic_string #include // for vector #include "lang.h" // for lang_e #include "utils.h" // for MusicFile, SoundFile // Textos constexpr char WINDOW_CAPTION[] = "Coffee Crisis Arcade Edition"; class Director { private: // Objetos y punteros SDL_Window *window_; // La ventana donde dibujamos SDL_Renderer *renderer_; // El renderizador de la ventana // Variables std::string executable_path_; // Path del ejecutable std::string system_folder_; // Carpeta del sistema donde guardar datos std::string param_file_argument_; // Argumento para gestionar el fichero con los parametros del programa std::vector sounds_; // Vector con los sonidos std::vector musics_; // Vector con las musicas // Inicializa jail_audio void initJailAudio(); // Arranca SDL y crea la ventana bool initSDL(); // Inicializa el objeto input void initInput(); // Carga los parametros para configurar el juego void loadParams(std::string file_path); // Crea el indice de ficheros bool setFileList(); // Carga los sonidos del juego void loadSounds(); // Carga las musicas del juego void loadMusics(); // Comprueba los parametros del programa void checkProgramArguments(int argc, char *argv[]); // Crea la carpeta del sistema donde guardar datos void createSystemFolder(std::string folder); // Ejecuta la sección con el logo void runLogo(); // Ejecuta la sección con la secuencia de introducción void runIntro(); // Ejecuta la sección con el titulo del juego void runTitle(); // Ejecuta la sección donde se juega al juego void runGame(); // Ejecuta la sección donde se muestran las instrucciones void runInstructions(); // Ejecuta la sección donde se muestra la tabla de puntuaciones void runHiScoreTable(); // Ejecuta el juego en modo demo void runDemoGame(); // Obtiene una fichero a partir de un lang_e std::string getLangFile(lang::lang_e lang); public: // Constructor Director(int argc, char *argv[]); // Destructor ~Director(); // Bucle principal int run(); };