329ae7a38e
Pas 7 final del hallazgo #28. La capa de game/options havia esdevingut exclusivament una capa de persistència YAML que llegia i escrivia Config::EngineConfig. El nom "Options" no reflectia bé aquest rol. Canvis: - Renomenats fitxers: game/options.{hpp,cpp} → game/config_yaml.{hpp,cpp} (preservant la història de git via mv). - Renomenat namespace: Options → ConfigYaml. - Esborrades del .hpp les referències-alias inline (window, rendering, player1, player2, keyboard_controls, gamepad_controls, console) que ja no tenien call-sites externs (només existien per a la transició). El .hpp ara només exposa engine_config + version + path + funcions. - A config_yaml.cpp s'introdueixen aliases internes (anonymous namespace) per mantenir llegible el codi de la implementació, sense exposar-les. - Actualitzat main.cpp per a usar ConfigYaml::*. - Actualitzats els comentaris stale a sdl_manager.hpp, director.hpp, engine_config.hpp i audio.hpp. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
44 lines
1.5 KiB
C++
44 lines
1.5 KiB
C++
// 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. La connexió amb el Director es fa via
|
|
// Config::ConfigPersistence (lambdes a `main.cpp`), mantenint `core/`
|
|
// agnòstic respecte d'aquesta capa.
|
|
|
|
#pragma once
|
|
|
|
#include <string>
|
|
|
|
#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 = "",
|
|
},
|
|
};
|
|
|
|
// 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
|