aboutsummaryrefslogtreecommitdiff
path: root/engines/mohawk/sound.cpp
diff options
context:
space:
mode:
authorBastien Bouclet2010-11-29 20:49:42 +0000
committerBastien Bouclet2010-11-29 20:49:42 +0000
commit6a4ff1a9b52c2dd31b951ad9e3362da5f29b37fc (patch)
tree36e188ea9a80978b02319c5a89b04ba33391f98d /engines/mohawk/sound.cpp
parent5f8e6e3824823869fdb2fd5d4dae334817d318be (diff)
downloadscummvm-rg350-6a4ff1a9b52c2dd31b951ad9e3362da5f29b37fc.tar.gz
scummvm-rg350-6a4ff1a9b52c2dd31b951ad9e3362da5f29b37fc.tar.bz2
scummvm-rg350-6a4ff1a9b52c2dd31b951ad9e3362da5f29b37fc.zip
MOHAWK : Finished implementing Selenitic sound receiver
svn-id: r54593
Diffstat (limited to 'engines/mohawk/sound.cpp')
-rw-r--r--engines/mohawk/sound.cpp21
1 files changed, 21 insertions, 0 deletions
diff --git a/engines/mohawk/sound.cpp b/engines/mohawk/sound.cpp
index d801907bd0..41d7000ad8 100644
--- a/engines/mohawk/sound.cpp
+++ b/engines/mohawk/sound.cpp
@@ -96,6 +96,8 @@ Audio::SoundHandle *Sound::playSound(uint16 id, byte volume, bool loop) {
audStream = Audio::makeWAVStream(_vm->getResource(ID_MSND, id), DisposeAfterUse::YES);
} else
audStream = makeMohawkWaveStream(_vm->getResource(ID_MSND, id));
+
+ handle->name = _vm->getResourceName(ID_MSND, id);
break;
case GType_ZOOMBINI:
audStream = makeMohawkWaveStream(_vm->getResource(ID_SND, id));
@@ -119,6 +121,25 @@ Audio::SoundHandle *Sound::playSound(uint16 id, byte volume, bool loop) {
return NULL;
}
+Audio::SoundHandle *Sound::replaceSound(uint16 id, byte volume, bool loop) {
+ debug (0, "Replacing sound %d", id);
+
+ //TODO: The original engine does fading
+
+ Common::String name = _vm->getResourceName(ID_MSND, id);
+
+ // Check if sound is already playing
+ for (uint32 i = 0; i < _handles.size(); i++) {
+ if (_vm->_mixer->isSoundHandleActive(_handles[i].handle)
+ && name.equals(_handles[i].name)) {
+ return &_handles[i].handle;
+ }
+ }
+
+ stopSound();
+ return playSound(id, volume, loop);
+}
+
void Sound::playSoundBlocking(uint16 id, byte volume) {
Audio::SoundHandle *handle = playSound(id, volume);