#pragma once #include // Para SDL_Renderer #include // Para SDL_Window #include // Para string namespace lang { enum class Code : int; } // lines 9-9 // 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 #ifndef VERBOSE std::streambuf *orig_buf; // Puntero al buffer de flujo original para restaurar std::cout #endif // Variables std::string executable_path_; // Path del ejecutable std::string system_folder_; // Carpeta del sistema donde guardar datos // Inicializa jail_audio void initJailAudio(); // Arranca SDL y crea la ventana bool initSDL(); // Asigna los botones y teclas al objeto Input void bindInputs(); // Crea el indice de ficheros void setFileList(); // Comprueba los parametros del programa void checkProgramArguments(int argc, const char *argv[]); // Crea la carpeta del sistema donde guardar datos void createSystemFolder(const 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 muestran los creditos del programa void runCredits(); // Ejecuta la sección donde se muestra la tabla de puntuaciones void runHiScoreTable(); // Ejecuta el juego en modo demo void runDemoGame(); // Ejecuta la sección init void runInit(); // Obtiene una fichero a partir de un lang::Code std::string getLangFile(lang::Code code); #ifdef ARCADE // Apaga el sistema void shutdownSystem(); #endif // Inicializa todo void init(); // Cierra todo void close(); // Carga los parametros void loadParams(); // Carga el fichero de puntuaciones void loadScoreFile(); public: // Constructor Director(int argc, const char *argv[]); // Destructor ~Director(); // Bucle principal int run(); };