// main.cpp - Punt d'entrada de l'aplicació // © 2026 JailDesigner // // Aquí orquestrem la capa de persistència (YAML via game/ConfigYaml::*) i // injectem el resultat al Director. El Director queda independent de // game/config_yaml.hpp i pot operar només amb Config::EngineConfig. #include #include #include "core/config/engine_config.hpp" #include "core/system/director.hpp" #include "game/config_yaml.hpp" auto main(int argc, char* argv[]) -> int { // Convertir arguments a std::vector std::vector args(argv, argv + argc); // Capa de persistència delegada: lambdes prim que enllacen el contracte // de Config::ConfigPersistence amb la implementació YAML de ConfigYaml::*. const Config::ConfigPersistence PERSISTENCE{ .init_defaults = [] { ConfigYaml::init(); }, .set_path = [](const std::string& path) { ConfigYaml::setConfigFile(path); }, .load = [] { return ConfigYaml::loadFromFile(); }, .save = [] { return ConfigYaml::saveToFile(); }, }; // El Director rep la struct d'engine_config + la capa de persistència. // No coneix ConfigYaml:: directament. Director director(args, ConfigYaml::engine_config, PERSISTENCE); return director.run(); }