#pragma once #include // Para manejar cadenas de texto namespace lang { enum class Code : int; } class Director { public: // Constructor Director(int argc, const char *argv[]); // Destructor ~Director(); // Bucle principal de la aplicación int run(); private: // Variables internas std::string executable_path_; // Ruta del ejecutable std::string system_folder_; // Carpeta del sistema para almacenar datos // Inicialización y cierre del sistema void init(); // Inicializa la aplicación void close(); // Cierra y libera recursos // Configuración inicial void loadParams(); // Carga los parámetros del programa void loadScoreFile(); // Carga el fichero de puntuaciones void createSystemFolder(const std::string &folder); // Crea la carpeta del sistema // Gestión de entrada y archivos void bindInputs(); // Asigna botones y teclas al sistema de entrada void setFileList(); // Crea el índice de archivos disponibles void checkProgramArguments(int argc, const char *argv[]); // Verifica los parámetros del programa // Diferentes secciones del programa void runLogo(); // Ejecuta la pantalla con el logo void runIntro(); // Ejecuta la introducción del juego void runTitle(); // Ejecuta la pantalla de título void runGame(); // Inicia el juego void runInstructions(); // Muestra las instrucciones void runCredits(); // Muestra los créditos del juego void runHiScoreTable(); // Muestra la tabla de puntuaciones void runDemoGame(); // Ejecuta el modo demo void reset(); // Reinicia objetos y vuelve a la sección inicial // Gestión de archivos de idioma std::string getLangFile(lang::Code code); // Obtiene un fichero de idioma según el código #ifdef ARCADE void shutdownSystem(bool should_shutdown); // Apaga el sistema (modo arcade) #endif };