aboutsummaryrefslogtreecommitdiff
path: root/engines/illusions/sound.cpp
diff options
context:
space:
mode:
authorjohndoe1232018-05-17 06:22:13 +1000
committerEugene Sandulenko2018-07-20 06:43:33 +0000
commita76612ec5a91847e7e23652614d5e572af2c4aab (patch)
tree733277ce9a739a3f336c78049627225f545c442e /engines/illusions/sound.cpp
parent4637104e6d289ab42d5eb02e0f42f48133180542 (diff)
downloadscummvm-rg350-a76612ec5a91847e7e23652614d5e572af2c4aab.tar.gz
scummvm-rg350-a76612ec5a91847e7e23652614d5e572af2c4aab.tar.bz2
scummvm-rg350-a76612ec5a91847e7e23652614d5e572af2c4aab.zip
ILLUSIONS: Implement voice pausing/unpausing
(cherry picked from commit a70cf1d)
Diffstat (limited to 'engines/illusions/sound.cpp')
-rw-r--r--engines/illusions/sound.cpp32
1 files changed, 23 insertions, 9 deletions
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() {