[Scummvm-cvs-logs] scummvm master -> 456e5956e09406dc618ab49518dd83dec0e59641

dreammaster dreammaster at scummvm.org
Sat Feb 6 01:32:17 CET 2016


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
456e5956e0 SHERLOCK: RT: Properly hook up volume and mute toggles in Options dialog


Commit: 456e5956e09406dc618ab49518dd83dec0e59641
    https://github.com/scummvm/scummvm/commit/456e5956e09406dc618ab49518dd83dec0e59641
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2016-02-05T19:31:35-05:00

Commit Message:
SHERLOCK: RT: Properly hook up volume and mute toggles in Options dialog

Changed paths:
    engines/sherlock/music.cpp
    engines/sherlock/sherlock.cpp
    engines/sherlock/sound.cpp
    engines/sherlock/tattoo/widget_options.cpp



diff --git a/engines/sherlock/music.cpp b/engines/sherlock/music.cpp
index 43b7275..5ea3318 100644
--- a/engines/sherlock/music.cpp
+++ b/engines/sherlock/music.cpp
@@ -222,14 +222,13 @@ 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;
 
 	if (IS_3DO) {
 		// 3DO - uses digital samples for music
-		_musicOn = true;
+		_musicOn = ConfMan.hasKey("music_mute") ? !ConfMan.getBool("music_mute") : true;
 		return;
 	}
 
@@ -328,7 +327,7 @@ Music::Music(SherlockEngine *vm, Audio::Mixer *mixer) : _vm(vm), _mixer(mixer) {
 			}
 		}
 
-		_musicOn = true;
+		_musicOn = ConfMan.hasKey("music_mute") ? !ConfMan.getBool("music_mute") : true;
 	}
 }
 
@@ -580,6 +579,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);
 }
 
diff --git a/engines/sherlock/sherlock.cpp b/engines/sherlock/sherlock.cpp
index d09fd0b..e068ac4 100644
--- a/engines/sherlock/sherlock.cpp
+++ b/engines/sherlock/sherlock.cpp
@@ -239,6 +239,9 @@ void SherlockEngine::saveConfig() {
 	ConfMan.setBool("mute", !_sound->_digitized);
 	ConfMan.setBool("music_mute", !_music->_musicOn);
 	ConfMan.setBool("speech_mute", !_sound->_speechOn);
+	ConfMan.setInt("music_volume", _music->_musicVolume);
+	ConfMan.setInt("sfx_volume", _sound->_soundVolume);
+	ConfMan.setInt("speech_volume", _sound->_soundVolume);
 
 	ConfMan.setInt("font", _screen->fontNumber());
 	ConfMan.setBool("fade_style", _screen->_fadeStyle);
diff --git a/engines/sherlock/sound.cpp b/engines/sherlock/sound.cpp
index 56ac2a5..5a9f0c2 100644
--- a/engines/sherlock/sound.cpp
+++ b/engines/sherlock/sound.cpp
@@ -58,10 +58,9 @@ Sound::Sound(SherlockEngine *vm, Audio::Mixer *mixer) : _vm(vm), _mixer(mixer) {
 	_soundPlaying = false;
 	_speechPlaying = false;
 	_curPriority = 0;
-	_soundVolume = 255;
-
-	_soundOn = true;
-	_speechOn = true;
+	_soundVolume = ConfMan.hasKey("sfx_volume") ? ConfMan.getInt("sfx_volume") : 255;
+	_soundOn = ConfMan.hasKey("mute") ? !ConfMan.getBool("mute") : true;
+	_speechOn = ConfMan.hasKey("speech_mute") ? !ConfMan.getBool("speech_mute") : true;
 
 	if (IS_3DO) {
 		// 3DO: we don't need to prepare anything for sound
@@ -239,7 +238,10 @@ Audio::SoundHandle &Sound::getFreeSoundHandle() {
 }
 
 void Sound::setVolume(int volume) {
-	warning("TODO: setVolume - %d", volume);
+	_soundVolume = volume;
+	_vm->_mixer->setVolumeForSoundType(Audio::Mixer::kSFXSoundType, volume);
+	_vm->_mixer->setVolumeForSoundType(Audio::Mixer::kSpeechSoundType, volume);
+	_vm->_mixer->setVolumeForSoundType(Audio::Mixer::kPlainSoundType, volume);
 }
 
 void Sound::playSpeech(const Common::String &name) {
diff --git a/engines/sherlock/tattoo/widget_options.cpp b/engines/sherlock/tattoo/widget_options.cpp
index 5dc6fc5..92bd10b 100644
--- a/engines/sherlock/tattoo/widget_options.cpp
+++ b/engines/sherlock/tattoo/widget_options.cpp
@@ -130,10 +130,9 @@ void WidgetOptions::handleEvents() {
 		else if (_digiSliderX > _bounds.width() - _surface.widestChar())
 			_digiSliderX = _bounds.width() - _surface.widestChar();
 
-		int temp = sound._soundVolume;
-		sound._soundVolume = (_digiSliderX - _surface.widestChar()) * 255 / (_bounds.width() - _surface.widestChar() * 2);
-		if (sound._soundVolume != temp) {
-			sound.setVolume(sound._soundVolume);
+		int newVolume = (_digiSliderX - _surface.widestChar()) * 255 / (_bounds.width() - _surface.widestChar() * 2);
+		if (newVolume != sound._soundVolume) {
+			sound.setVolume(newVolume);
 			vm.saveConfig();
 		}
 
@@ -188,7 +187,7 @@ void WidgetOptions::handleEvents() {
 
 		case 5:
 			// Toggle Voices
-			sound._voices = !sound._voices;
+			sound._speechOn = !sound._speechOn;
 
 			render(OP_NAMES);
 			vm.saveConfig();
@@ -326,7 +325,7 @@ void WidgetOptions::render(OptionRenderMode mode) {
 				break;
 
 			case 5:
-				str = Common::String::format("%s %s", FIXED(Voices), OFF_ON[sound._voices]);
+				str = Common::String::format("%s %s", FIXED(Voices), OFF_ON[sound._speechOn]);
 				break;
 
 			case 6: {






More information about the Scummvm-git-logs mailing list