From 1c3ab9e5c16da453f0057b6833043b6fb5961bad Mon Sep 17 00:00:00 2001 From: Sergio Valor Date: Sun, 17 May 2026 14:05:22 +0200 Subject: [PATCH] options: helpers readYamlField/Volume per a loadAudioConfigFromYaml --- source/game/options.cpp | 65 ++++++++++++++++++----------------------- 1 file changed, 28 insertions(+), 37 deletions(-) diff --git a/source/game/options.cpp b/source/game/options.cpp index bcbdaaf..d9e0ca2 100644 --- a/source/game/options.cpp +++ b/source/game/options.cpp @@ -568,51 +568,42 @@ namespace Options { } // Carga configuración de audio desde YAML - void loadAudioConfigFromYaml(const fkyaml::node& yaml) { // NOLINT(readability-function-cognitive-complexity) + namespace { + // Llig parent[key] cap a dst si existeix; ignora errors de format (conserva el default). + template + void readYamlField(const fkyaml::node& parent, const char* key, T& dst) { + if (!parent.contains(key)) { return; } + try { + dst = parent[key].template get_value(); + } catch (...) { /* @INTENTIONAL: camp YAML malformat → conservem default */ + } + } + + // Versió específica per a volums (clamp a [0,1]) + void readYamlVolume(const fkyaml::node& parent, const char* key, float& dst) { + if (!parent.contains(key)) { return; } + try { + dst = std::clamp(parent[key].get_value(), 0.0F, 1.0F); + } catch (...) { /* @INTENTIONAL: camp YAML malformat → conservem default */ + } + } + } // namespace + + void loadAudioConfigFromYaml(const fkyaml::node& yaml) { if (!yaml.contains("audio")) { return; } const auto& a = yaml["audio"]; - if (a.contains("enabled")) { - try { - audio.enabled = a["enabled"].get_value(); - } catch (...) { /* @INTENTIONAL: camp YAML malformat → conservem default */ - } - } - if (a.contains("volume")) { - try { - audio.volume = std::clamp(a["volume"].get_value(), 0.0F, 1.0F); - } catch (...) { /* @INTENTIONAL: camp YAML malformat → conservem default */ - } - } + readYamlField(a, "enabled", audio.enabled); + readYamlVolume(a, "volume", audio.volume); if (a.contains("music")) { const auto& m = a["music"]; - if (m.contains("enabled")) { - try { - audio.music.enabled = m["enabled"].get_value(); - } catch (...) { /* @INTENTIONAL: camp YAML malformat → conservem default */ - } - } - if (m.contains("volume")) { - try { - audio.music.volume = std::clamp(m["volume"].get_value(), 0.0F, 1.0F); - } catch (...) { /* @INTENTIONAL: camp YAML malformat → conservem default */ - } - } + readYamlField(m, "enabled", audio.music.enabled); + readYamlVolume(m, "volume", audio.music.volume); } if (a.contains("sound")) { const auto& s = a["sound"]; - if (s.contains("enabled")) { - try { - audio.sound.enabled = s["enabled"].get_value(); - } catch (...) { /* @INTENTIONAL: camp YAML malformat → conservem default */ - } - } - if (s.contains("volume")) { - try { - audio.sound.volume = std::clamp(s["volume"].get_value(), 0.0F, 1.0F); - } catch (...) { /* @INTENTIONAL: camp YAML malformat → conservem default */ - } - } + readYamlField(s, "enabled", audio.sound.enabled); + readYamlVolume(s, "volume", audio.sound.volume); } }