afegit sistema de audio

This commit is contained in:
2025-12-02 13:51:54 +01:00
parent 9ceb21c04f
commit e51749dbc6
10 changed files with 5685 additions and 2 deletions

View File

@@ -39,6 +39,14 @@ void init() {
// Rendering
rendering.vsync = Defaults::Rendering::VSYNC_DEFAULT;
// Audio
audio.enabled = Defaults::Audio::ENABLED;
audio.volume = Defaults::Audio::VOLUME;
audio.music.enabled = Defaults::Music::ENABLED;
audio.music.volume = Defaults::Music::VOLUME;
audio.sound.enabled = Defaults::Sound::ENABLED;
audio.sound.volume = Defaults::Sound::VOLUME;
// Version
version = std::string(Project::VERSION);
}
@@ -200,6 +208,71 @@ static void loadRenderingConfigFromYaml(const fkyaml::node& yaml) {
}
}
static void loadAudioConfigFromYaml(const fkyaml::node& yaml) {
if (yaml.contains("audio")) {
const auto& aud = yaml["audio"];
if (aud.contains("enabled")) {
try {
audio.enabled = aud["enabled"].get_value<bool>();
} catch (...) {
audio.enabled = Defaults::Audio::ENABLED;
}
}
if (aud.contains("volume")) {
try {
float val = aud["volume"].get_value<float>();
audio.volume = (val >= 0.0f && val <= 1.0f) ? val : Defaults::Audio::VOLUME;
} catch (...) {
audio.volume = Defaults::Audio::VOLUME;
}
}
if (aud.contains("music")) {
const auto& mus = aud["music"];
if (mus.contains("enabled")) {
try {
audio.music.enabled = mus["enabled"].get_value<bool>();
} catch (...) {
audio.music.enabled = Defaults::Music::ENABLED;
}
}
if (mus.contains("volume")) {
try {
float val = mus["volume"].get_value<float>();
audio.music.volume = (val >= 0.0f && val <= 1.0f) ? val : Defaults::Music::VOLUME;
} catch (...) {
audio.music.volume = Defaults::Music::VOLUME;
}
}
}
if (aud.contains("sound")) {
const auto& snd = aud["sound"];
if (snd.contains("enabled")) {
try {
audio.sound.enabled = snd["enabled"].get_value<bool>();
} catch (...) {
audio.sound.enabled = Defaults::Sound::ENABLED;
}
}
if (snd.contains("volume")) {
try {
float val = snd["volume"].get_value<float>();
audio.sound.volume = (val >= 0.0f && val <= 1.0f) ? val : Defaults::Sound::VOLUME;
} catch (...) {
audio.sound.volume = Defaults::Sound::VOLUME;
}
}
}
}
}
// Carregar configuració des del fitxer YAML
auto loadFromFile() -> bool {
const std::string CONFIG_VERSION = std::string(Project::VERSION);
@@ -246,6 +319,7 @@ auto loadFromFile() -> bool {
loadPhysicsConfigFromYaml(yaml);
loadGameplayConfigFromYaml(yaml);
loadRenderingConfigFromYaml(yaml);
loadAudioConfigFromYaml(yaml);
if (console) {
std::cout << "Config carregada correctament des de: " << config_file_path
@@ -309,7 +383,18 @@ auto saveToFile() -> bool {
file << "# RENDERITZACIÓ\n";
file << "rendering:\n";
file << " vsync: " << rendering.vsync << " # 0=disabled, 1=enabled\n";
file << " vsync: " << rendering.vsync << " # 0=disabled, 1=enabled\n\n";
file << "# AUDIO\n";
file << "audio:\n";
file << " enabled: " << (audio.enabled ? "true" : "false") << "\n";
file << " volume: " << audio.volume << " # 0.0 to 1.0\n";
file << " music:\n";
file << " enabled: " << (audio.music.enabled ? "true" : "false") << "\n";
file << " volume: " << audio.music.volume << " # 0.0 to 1.0\n";
file << " sound:\n";
file << " enabled: " << (audio.sound.enabled ? "true" : "false") << "\n";
file << " volume: " << audio.sound.volume << " # 0.0 to 1.0\n";
file.close();