diff options
Diffstat (limited to 'engines/sherlock/music.cpp')
-rw-r--r-- | engines/sherlock/music.cpp | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/engines/sherlock/music.cpp b/engines/sherlock/music.cpp index 7ab5cd4b4f..da4aec6994 100644 --- a/engines/sherlock/music.cpp +++ b/engines/sherlock/music.cpp @@ -26,6 +26,7 @@ #include "sherlock/sherlock.h" #include "sherlock/music.h" #include "sherlock/scalpel/drivers/mididriver.h" +#include "audio/audiostream.h" // for Miles Audio (Sherlock Holmes 2) #include "audio/miles.h" // for 3DO digital music @@ -222,13 +223,14 @@ Music::Music(SherlockEngine *vm, Audio::Mixer *mixer) : _vm(vm), _mixer(mixer) { _midiParser = NULL; _musicType = MT_NULL; _musicPlaying = false; - _musicOn = false; _midiOption = false; - _musicVolume = 0; + _midiMusicData = nullptr; + _musicVolume = ConfMan.hasKey("music_volume") ? ConfMan.getInt("music_volume") : 255; + _musicOn = false; if (IS_3DO) { // 3DO - uses digital samples for music - _musicOn = true; + _musicOn = ConfMan.hasKey("music_mute") ? !ConfMan.getBool("music_mute") : true; return; } @@ -327,7 +329,7 @@ Music::Music(SherlockEngine *vm, Audio::Mixer *mixer) : _vm(vm), _mixer(mixer) { } } - _musicOn = true; + _musicOn = ConfMan.hasKey("music_mute") ? !ConfMan.getBool("music_mute") : true; } } @@ -470,8 +472,8 @@ bool Music::playMusic(const Common::String &name) { } } + _midiMusicData = midiMusicData; _midiParser->loadMusic(midiMusicData, midiMusicDataSize); - } else { // 3DO: sample based Audio::AudioStream *musicStream; @@ -517,6 +519,7 @@ void Music::freeSong() { _midiParser->unloadMusic(); } + _midiMusicData = nullptr; _musicPlaying = false; } @@ -578,6 +581,7 @@ bool Music::waitUntilMSec(uint32 msecTarget, uint32 msecMax, uint32 additionalDe void Music::setMusicVolume(int volume) { _musicVolume = volume; + _musicOn = volume > 0; _vm->_mixer->setVolumeForSoundType(Audio::Mixer::kMusicSoundType, volume); } |