// config_yaml.hpp - Capa de persistència YAML de Config::EngineConfig // © 2026 JailDesigner // // La configuració runtime viu en Config::EngineConfig (core/config/). // Aquest fitxer afegeix una capa de persistència YAML que llegeix i // escriu aquesta struct a disc. El Director crida ConfigYaml::* directament // (init / setConfigFile / loadFromFile / saveToFile): la separació // core/game queda relaxada al Director, que és EL programa, no part del motor. #pragma once #include #include "core/config/engine_config.hpp" namespace ConfigYaml { // Única font de veritat de la configuració runtime. La capa YAML llegeix // i escriu aquí; els consumidors (Director i sistemes de core/) reben // referència a aquesta struct via injecció. inline Config::EngineConfig engine_config{ .player2 = { .keyboard = { .key_left = SDL_SCANCODE_A, .key_right = SDL_SCANCODE_D, .key_thrust = SDL_SCANCODE_W, .key_shoot = SDL_SCANCODE_LSHIFT, .key_start = SDL_SCANCODE_2, }, .gamepad_name = "", .gamepad_path = "", }, }; // Persistència YAML (no exposada a `core/`). inline std::string version{}; // Versión del config per validació inline std::string config_file_path{}; // Establert per setConfigFile() void init(); // Inicialitzar engine_config amb els valors per defecte void setConfigFile(const std::string& path); auto loadFromFile() -> bool; auto saveToFile() -> bool; } // namespace ConfigYaml