options: helpers readYamlField/Volume per a loadAudioConfigFromYaml
This commit is contained in:
+28
-37
@@ -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 <typename T>
|
||||
void readYamlField(const fkyaml::node& parent, const char* key, T& dst) {
|
||||
if (!parent.contains(key)) { return; }
|
||||
try {
|
||||
dst = parent[key].template get_value<T>();
|
||||
} 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<float>(), 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<bool>();
|
||||
} catch (...) { /* @INTENTIONAL: camp YAML malformat → conservem default */
|
||||
}
|
||||
}
|
||||
if (a.contains("volume")) {
|
||||
try {
|
||||
audio.volume = std::clamp(a["volume"].get_value<float>(), 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<bool>();
|
||||
} catch (...) { /* @INTENTIONAL: camp YAML malformat → conservem default */
|
||||
}
|
||||
}
|
||||
if (m.contains("volume")) {
|
||||
try {
|
||||
audio.music.volume = std::clamp(m["volume"].get_value<float>(), 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<bool>();
|
||||
} catch (...) { /* @INTENTIONAL: camp YAML malformat → conservem default */
|
||||
}
|
||||
}
|
||||
if (s.contains("volume")) {
|
||||
try {
|
||||
audio.sound.volume = std::clamp(s["volume"].get_value<float>(), 0.0F, 1.0F);
|
||||
} catch (...) { /* @INTENTIONAL: camp YAML malformat → conservem default */
|
||||
}
|
||||
}
|
||||
readYamlField(s, "enabled", audio.sound.enabled);
|
||||
readYamlVolume(s, "volume", audio.sound.volume);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user