From a76612ec5a91847e7e23652614d5e572af2c4aab Mon Sep 17 00:00:00 2001 From: johndoe123 Date: Thu, 17 May 2018 06:22:13 +1000 Subject: ILLUSIONS: Implement voice pausing/unpausing (cherry picked from commit a70cf1d) --- engines/illusions/sound.cpp | 32 +++++++++++++++++++++++--------- 1 file changed, 23 insertions(+), 9 deletions(-) (limited to 'engines/illusions/sound.cpp') diff --git a/engines/illusions/sound.cpp b/engines/illusions/sound.cpp index 1e8ca49f88..d8b03169ea 100644 --- a/engines/illusions/sound.cpp +++ b/engines/illusions/sound.cpp @@ -229,7 +229,7 @@ void MidiPlayer::endOfTrack() { // VoicePlayer -VoicePlayer::VoicePlayer() { +VoicePlayer::VoicePlayer() : _wasPlaying(false), _isPaused(false) { } VoicePlayer::~VoicePlayer() { @@ -267,6 +267,22 @@ void VoicePlayer::stop() { _voiceName.clear(); } +void VoicePlayer::pause() { + if (!_isPaused) { + _isPaused = true; + _wasPlaying = isPlaying(); + g_system->getMixer()->pauseHandle(_soundHandle, true); + } +} + +void VoicePlayer::unpause() { + if (_isPaused) { + _isPaused = false; + if (_wasPlaying) + g_system->getMixer()->pauseHandle(_soundHandle, false); + } +} + bool VoicePlayer::isPlaying() { return g_system->getMixer()->isSoundHandleActive(_soundHandle); } @@ -280,12 +296,6 @@ bool VoicePlayer::isCued() { return _voiceStatus == 2; } -void VoicePlayer::pause(bool paused) { - if (isPlaying()) { - g_system->getMixer()->pauseHandle(_soundHandle, paused); - } -} - // Sound Sound::Sound(uint32 soundEffectId, uint32 soundGroupId, bool looping) @@ -394,8 +404,12 @@ void SoundMan::stopVoice() { _voicePlayer->stop(); } -void SoundMan::pauseVoice(bool paused) { - _voicePlayer->pause(paused); +void SoundMan::pauseVoice() { + _voicePlayer->pause(); +} + +void SoundMan::unpauseVoice() { + _voicePlayer->unpause(); } bool SoundMan::isVoicePlaying() { -- cgit v1.2.3