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 /engines | |
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
Diffstat (limited to 'engines')
-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); } } |