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>
Pas 5/N del hallazgo #28.
Director deixa d'incloure game/options.hpp i les seves crides a
Options::*. El seu ctor accepta ara:
- Config::EngineConfig& cfg → la struct runtime (window, console, ...).
- Config::ConfigPersistence → 4 lambdes (init/set_path/load/save)
que delegen la persistència a la capa concreta (game/Options::*).
Cap més referència a Options:: ni a "game/..." dins del Director:
- cfg_->* substitueix tot Options::* (window, console, player1/2,
rendering, engine_config).
- persistence_.{init,save,load,set_path} substitueix les funcions
d'I/O de YAML.
run() i checkProgramArguments deixen de ser estàtics (necessiten
accés a cfg_ i persistence_). Això també desfà el smell del
hallazgo #37 (Director::run estàtic que llegia estat d'instància).
main.cpp queda com a orquestrador: construeix la struct
ConfigPersistence amb lambdes que enllacen amb Options::* i la
injecta al Director.
Afegit: Config::ConfigPersistence a engine_config.hpp.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Pas 1/N del hallazgo #28. Sense canvi de comportament:
Nou: source/core/config/engine_config.hpp
- Defineix Config::EngineConfig (POD) amb les sub-structs WindowConfig,
RenderingConfig, KeyboardBindings, GamepadBindings, PlayerBindings i
el flag console.
- Sense singletons ni virtuals; la inversió real es fa en commits
posteriors injectant Config::EngineConfig& per constructor.
Modificat: source/game/options.hpp
- Elimina les struct definitions locals (Window, Rendering, ...).
- Afegeix Options::engine_config (única font de veritat).
- Conserva Options::window, Options::rendering, player1, player2,
keyboard_controls, gamepad_controls i console com a referències
inline a camps d'engine_config. Cost runtime zero, callsites
existents no requereixen cap canvi.
Hallazgo #28 de CODE_REVIEW.md.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>