Files
orni-attack/source/game/config_yaml.hpp
T
JailDesigner 3e8f2f35bf feat(input): accio MENU i assignacio de mando per path + name
Afegeix l'accio MENU a InputAction (obre el menu de servei des del mando,
equivalent a F12 al teclat) i els camps gamepad.button_start i
gamepad.button_menu al config per jugador. Tambe afegeix gamepad_path
per distingir dos mandos del mateix model i prioritza path > name >
slot a applyPlayerNBindings via el nou resolvePlayerGamepad.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-24 19:56:59 +02:00

45 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 = "",
.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