diff --git a/engines/dragons/dragons.cpp b/engines/dragons/dragons.cpp index bc7dedf0cf0..fe254dcdcc6 100644 --- a/engines/dragons/dragons.cpp +++ b/engines/dragons/dragons.cpp @@ -1797,6 +1797,11 @@ void DragonsEngine::clearAllText() { _fontManager->clearText(); } +void DragonsEngine::syncSoundSettings() { + Engine::syncSoundSettings(); + _sound->syncSoundSettings(); +} + void (*DragonsEngine::getSceneUpdateFunction())() { return _sceneUpdateFunction; } diff --git a/engines/dragons/dragons.h b/engines/dragons/dragons.h index 8ba7f5da6b6..2e5d59c8088 100644 --- a/engines/dragons/dragons.h +++ b/engines/dragons/dragons.h @@ -245,6 +245,7 @@ public: bool canLoadGameStateCurrently() override; Common::Error saveGameState(int slot, const Common::String &desc, bool isAutosave) override; bool canSaveGameStateCurrently() override; + void syncSoundSettings() override; void updateActorSequences(); void setFlags(uint32 flags); diff --git a/engines/dragons/sound.cpp b/engines/dragons/sound.cpp index 958269c47aa..d8fa99af342 100644 --- a/engines/dragons/sound.cpp +++ b/engines/dragons/sound.cpp @@ -538,4 +538,12 @@ void SoundManager::playMusic(int16 song) { delete seq; } +void SoundManager::syncSoundSettings() { + _musicVolume = CLIP(ConfMan.getInt("music_volume"), 0, 255); + _sfxVolume = CLIP(ConfMan.getInt("sfx_volume"), 0, 255); + _speechVolume = CLIP(ConfMan.getInt("speech_volume"), 0, 255); + + _midiPlayer->setVolume(_musicVolume); +} + } // End of namespace Dragons diff --git a/engines/dragons/sound.h b/engines/dragons/sound.h index b01ad873879..3c6b242f2b2 100644 --- a/engines/dragons/sound.h +++ b/engines/dragons/sound.h @@ -59,6 +59,7 @@ public: void playSpeech(uint32 textIndex); bool isSpeechPlaying(); void resumeMusic(); + void syncSoundSettings(); public: uint16 _dat_8006bb60_sound_related;