71 lines
2.8 KiB
C++
71 lines
2.8 KiB
C++
#pragma once
|
|
|
|
#include <span> // Para Span
|
|
#include <string> // Para string
|
|
|
|
namespace Lang {
|
|
enum class Code : int;
|
|
}
|
|
|
|
// --- Clase Director: gestor principal de la aplicación ---
|
|
class Director {
|
|
public:
|
|
// --- Constructor y destructor ---
|
|
Director(int argc, std::span<char*> argv);
|
|
~Director();
|
|
|
|
// --- Bucle principal ---
|
|
static auto run() -> int;
|
|
|
|
// --- Debug config (accesible desde otras clases) ---
|
|
struct DebugConfig {
|
|
std::string initial_section;
|
|
std::string initial_options;
|
|
int initial_stage = 0;
|
|
bool show_render_info = true;
|
|
std::string resource_loading;
|
|
|
|
DebugConfig()
|
|
: initial_section("game"),
|
|
initial_options("1p"),
|
|
resource_loading("preload") {}
|
|
};
|
|
static inline DebugConfig debug_config;
|
|
|
|
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
|
|
static void close(); // Cierra y libera recursos
|
|
|
|
// --- Configuración inicial ---
|
|
static void loadParams(); // Carga los parámetros del programa
|
|
static void loadScoreFile(); // Carga el fichero de puntuaciones
|
|
void createSystemFolder(const std::string& folder); // Crea la carpeta del sistema
|
|
void loadDebugConfig(); // Carga debug.yaml (solo en _DEBUG)
|
|
|
|
// --- Gestión de entrada y archivos ---
|
|
void loadAssets(); // Crea el índice de archivos disponibles
|
|
void checkProgramArguments(int argc, std::span<char*> argv); // Verifica los parámetros del programa // NOLINT(modernize-avoid-c-arrays)
|
|
|
|
// --- Secciones del programa ---
|
|
static void runLogo(); // Ejecuta la pantalla con el logo
|
|
static void runIntro(); // Ejecuta la introducción del juego
|
|
static void runTitle(); // Ejecuta la pantalla de título
|
|
static void runGame(); // Inicia el juego
|
|
static void runInstructions(); // Muestra las instrucciones
|
|
static void runCredits(); // Muestra los créditos del juego
|
|
static void runHiScoreTable(); // Muestra la tabla de puntuaciones
|
|
static void runDemoGame(); // Ejecuta el modo demo
|
|
static void reset(); // Reinicia objetos y vuelve a la sección inicial
|
|
|
|
// --- Gestión de archivos de idioma ---
|
|
auto getLangFile(Lang::Code code) -> std::string; // Obtiene un fichero de idioma según el código
|
|
|
|
// --- Apagado del sistema ---
|
|
static void shutdownSystem(bool should_shutdown); // Apaga el sistema
|
|
};
|