diff options
| author | Torbjörn Andersson | 2008-08-03 07:40:04 +0000 | 
|---|---|---|
| committer | Torbjörn Andersson | 2008-08-03 07:40:04 +0000 | 
| commit | 4984a28ca50aa4e942e34f3f47b008fb0228060e (patch) | |
| tree | 04d96be83d71e3622f551cda4fc44ea4ea9e608e | |
| parent | 4c74db446385611a158efcdab67a27107d8b20aa (diff) | |
| download | scummvm-rg350-4984a28ca50aa4e942e34f3f47b008fb0228060e.tar.gz scummvm-rg350-4984a28ca50aa4e942e34f3f47b008fb0228060e.tar.bz2 scummvm-rg350-4984a28ca50aa4e942e34f3f47b008fb0228060e.zip  | |
Fixed #2021902 ("DRASCULA: Can't adjust the volume inside the game"). I can't
verify that this matches the original behaviour, but at least it's better now.
svn-id: r33558
| -rw-r--r-- | engines/drascula/sound.cpp | 29 | 
1 files changed, 14 insertions, 15 deletions
diff --git a/engines/drascula/sound.cpp b/engines/drascula/sound.cpp index 840d6c7cb5..2eb40e2e30 100644 --- a/engines/drascula/sound.cpp +++ b/engines/drascula/sound.cpp @@ -37,23 +37,25 @@ void DrasculaEngine::updateVolume(Audio::Mixer::SoundType soundType, int prevVol  }  void DrasculaEngine::volumeControls() { -	int masterVolume, voiceVolume, musicVolume; -  	copyRect(1, 56, 73, 63, 177, 97, tableSurface, screenSurface);  	updateScreen(73, 63, 73, 63, 177, 97, screenSurface); -	masterVolume = 72 + 61 - ((_mixer->getVolumeForSoundType(Audio::Mixer::kPlainSoundType) / 16) * 4); -	voiceVolume = 72 + 61 - ((_mixer->getVolumeForSoundType(Audio::Mixer::kSFXSoundType) / 16) * 4); -	musicVolume = 72 + 61 - ((_mixer->getVolumeForSoundType(Audio::Mixer::kMusicSoundType) / 16) * 4); -  	for (;;) { +		int masterVolume = CLIP((_mixer->getVolumeForSoundType(Audio::Mixer::kPlainSoundType) / 16), 0, 15); +		int voiceVolume = CLIP((_mixer->getVolumeForSoundType(Audio::Mixer::kSFXSoundType) / 16), 0, 15); +		int musicVolume = CLIP((_mixer->getVolumeForSoundType(Audio::Mixer::kMusicSoundType) / 16), 0, 15); + +		int masterVolumeY = 72 + 61 - masterVolume * 4; +		int voiceVolumeY = 72 + 61 - voiceVolume * 4; +		int musicVolumeY = 72 + 61 - musicVolume * 4; +  		updateRoom();  		copyRect(1, 56, 73, 63, 177, 97, tableSurface, screenSurface); -		copyBackground(183, 56, 82, masterVolume, 39, 2 + ((_mixer->getVolumeForSoundType(Audio::Mixer::kPlainSoundType) / 16) * 4), tableSurface, screenSurface); -		copyBackground(183, 56, 138, voiceVolume, 39, 2 + ((_mixer->getVolumeForSoundType(Audio::Mixer::kSFXSoundType) / 16) * 4), tableSurface, screenSurface); -		copyBackground(183, 56, 194, musicVolume, 39, 2 + ((_mixer->getVolumeForSoundType(Audio::Mixer::kMusicSoundType) / 16) * 4), tableSurface, screenSurface); +		copyBackground(183, 56, 82, masterVolumeY, 39, 2 + masterVolume * 4, tableSurface, screenSurface); +		copyBackground(183, 56, 138, voiceVolumeY, 39, 2 + voiceVolume * 4, tableSurface, screenSurface); +		copyBackground(183, 56, 194, musicVolumeY, 39, 2 + musicVolume * 4, tableSurface, screenSurface);  		setCursorTable(); @@ -68,18 +70,15 @@ void DrasculaEngine::volumeControls() {  		if (leftMouseButton == 1) {  			delay(100);  			if (mouseX > 80 && mouseX < 121) { -				updateVolume(Audio::Mixer::kPlainSoundType, mouseY); -				masterVolume = 72 + 61 - ((_mixer->getVolumeForSoundType(Audio::Mixer::kPlainSoundType) / 16) * 4); +				updateVolume(Audio::Mixer::kPlainSoundType, masterVolumeY);  			}  			if (mouseX > 136 && mouseX < 178) { -				updateVolume(Audio::Mixer::kSFXSoundType, mouseY); -				voiceVolume = 72 + 61 - ((_mixer->getVolumeForSoundType(Audio::Mixer::kSFXSoundType) / 16) * 4); +				updateVolume(Audio::Mixer::kSFXSoundType, voiceVolumeY);  			}  			if (mouseX > 192 && mouseX < 233) { -				updateVolume(Audio::Mixer::kMusicSoundType, mouseY); -				musicVolume = 72 + 61 - ((_mixer->getVolumeForSoundType(Audio::Mixer::kMusicSoundType) / 16) * 4); +				updateVolume(Audio::Mixer::kMusicSoundType, musicVolumeY);  			}  		}  | 
