diff options
Diffstat (limited to 'engines')
-rw-r--r-- | engines/engine.cpp | 22 | ||||
-rw-r--r-- | engines/engine.h | 5 |
2 files changed, 24 insertions, 3 deletions
diff --git a/engines/engine.cpp b/engines/engine.cpp index 269bb0bc28..0847e27246 100644 --- a/engines/engine.cpp +++ b/engines/engine.cpp @@ -304,9 +304,25 @@ void Engine::syncSoundSettings() { int soundVolumeSFX = ConfMan.getInt("sfx_volume"); int soundVolumeSpeech = ConfMan.getInt("speech_volume"); - _mixer->setVolumeForSoundType(Audio::Mixer::kMusicSoundType, soundVolumeMusic); - _mixer->setVolumeForSoundType(Audio::Mixer::kSFXSoundType, soundVolumeSFX); - _mixer->setVolumeForSoundType(Audio::Mixer::kSpeechSoundType, soundVolumeSpeech); + bool mute = false; + if (ConfMan.hasKey("mute")) + mute = ConfMan.getBool("mute"); + + _mixer->setVolumeForSoundType(Audio::Mixer::kMusicSoundType, (mute ? 0 : soundVolumeMusic)); + _mixer->setVolumeForSoundType(Audio::Mixer::kSFXSoundType, (mute ? 0 : soundVolumeSFX)); + _mixer->setVolumeForSoundType(Audio::Mixer::kSpeechSoundType, (mute ? 0 : soundVolumeSpeech)); +} + +void Engine::flipMute() { + bool mute = false; + + if (ConfMan.hasKey("mute")) { + mute = !ConfMan.getBool("mute"); + } + + ConfMan.setBool("mute", mute); + + syncSoundSettings(); } Common::Error Engine::loadGameState(int slot) { diff --git a/engines/engine.h b/engines/engine.h index 45477f408d..ff3ce6c326 100644 --- a/engines/engine.h +++ b/engines/engine.h @@ -176,6 +176,11 @@ public: virtual void syncSoundSettings(); /** + * Flip mute all sound option. + */ + virtual void flipMute(); + + /** * Load a game state. * @param slot the slot from which a savestate should be loaded * @return returns kNoError on success, else an error code. |