diff --git a/source/audio.cpp b/source/audio.cpp index 376a16a..1f31a11 100644 --- a/source/audio.cpp +++ b/source/audio.cpp @@ -114,4 +114,12 @@ void Audio::setMusicVolume(int volume) const int COVERTED_VOLUME = static_cast((volume / 100.0) * 128); JA_SetMusicVolume(COVERTED_VOLUME); } +} + +// Aplica la configuración +void Audio::applySettings() +{ + setSoundVolume(options.audio.sound.volume); + setMusicVolume(options.audio.music.volume); + enable(options.audio.enabled); } \ No newline at end of file diff --git a/source/audio.h b/source/audio.h index 7caa6db..6900af0 100644 --- a/source/audio.h +++ b/source/audio.h @@ -26,6 +26,7 @@ public: void disable() { enabled_ = false; } // Deshabilitar audio void enable(bool value) { enabled_ = value; } // Establecer estado general void toggleEnabled() { enabled_ = !enabled_; } // Alternar estado general + void applySettings(); // Aplica la configuración // --- Configuración de Sonidos --- void enableSound() { sound_enabled_ = true; } // Habilitar sonidos diff --git a/source/options.cpp b/source/options.cpp index 1dd389c..0518886 100644 --- a/source/options.cpp +++ b/source/options.cpp @@ -214,7 +214,7 @@ bool setOptions(const std::string &var, const std::string &value) } else if (var == "audio.volume") { - options.audio.volume = std::stoi(value); + options.audio.volume = std::clamp(std::stoi(value), 0, 100); } else if (var == "audio.music.enabled") { @@ -222,7 +222,7 @@ bool setOptions(const std::string &var, const std::string &value) } else if (var == "audio.music.volume") { - options.audio.music.volume = std::stoi(value); + options.audio.music.volume = std::clamp(std::stoi(value), 0, 100); } else if (var == "audio.sound.enabled") { @@ -230,7 +230,7 @@ bool setOptions(const std::string &var, const std::string &value) } else if (var == "audio.sound.volume") { - options.audio.sound.volume = std::stoi(value); + options.audio.sound.volume = std::clamp(std::stoi(value), 0, 100); } // Opciones de juego diff --git a/source/service_menu.cpp b/source/service_menu.cpp index 68e4cf2..f5c4235 100644 --- a/source/service_menu.cpp +++ b/source/service_menu.cpp @@ -7,6 +7,7 @@ #include "resource.h" #include "options.h" #include "section.h" // Para Name, name, Options, options, AttractMode +#include "audio.h" // Singleton ServiceMenu *ServiceMenu::instance_ = nullptr; @@ -163,15 +164,18 @@ void ServiceMenu::setSelectorLeft() void ServiceMenu::acceptSelection() { + // Carpeta if (display_options_.at(selected_).type == ValueType::FOLDER) { previous_settings_group_ = current_settings_group_; current_settings_group_ = display_options_.at(selected_).target_group; updateMenu(current_settings_group_); selected_ = 0; + return; } - else if (display_options_.at(selected_).behavior == OptionBehavior::SELECT) + // Opción + if (display_options_.at(selected_).behavior == OptionBehavior::SELECT) { if (display_options_.at(selected_).caption == "RESET") { @@ -191,6 +195,7 @@ void ServiceMenu::acceptSelection() section::options = section::Options::QUIT_WITH_CONTROLLER; return; } + return; } } @@ -278,6 +283,10 @@ void ServiceMenu::applySettings(ServiceMenu::SettingsGroup group) Screen::get()->applySettings(); break; + case SettingsGroup::AUDIO: + Audio::get()->applySettings(); + break; + default: break; }