Files
orni-attack/source/game/config_yaml.hpp
T
JailDesigner 6b8f6a267d refactor(director): migra la persistència ConfigYaml al Director
main.cpp queda només amb 'Director director(argc, argv); return director.run()'.
El Director crida ConfigYaml::* directament; l'struct ConfigPersistence
desapareix de engine_config.hpp. La separació core/game es relaxa al
Director, que és EL programa, no part del motor.
2026-05-22 12:41:05 +02:00

44 lines
1.6 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. 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 <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