aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorEugene Sandulenko2014-04-26 17:00:11 +0300
committerEugene Sandulenko2014-04-26 17:00:11 +0300
commite25195d8f5bffbeb7d84785311437aa19c345f03 (patch)
treec6715d5c2d630e8cfbe09fb1f6da0f0456fe4031 /engines
parent4d81792b450370af8061b1422399a22bd56c1df0 (diff)
downloadscummvm-rg350-e25195d8f5bffbeb7d84785311437aa19c345f03.tar.gz
scummvm-rg350-e25195d8f5bffbeb7d84785311437aa19c345f03.tar.bz2
scummvm-rg350-e25195d8f5bffbeb7d84785311437aa19c345f03.zip
FULLPIPE: Implement Sound::play()
Diffstat (limited to 'engines')
-rw-r--r--engines/fullpipe/sound.cpp19
1 files changed, 12 insertions, 7 deletions
diff --git a/engines/fullpipe/sound.cpp b/engines/fullpipe/sound.cpp
index 8280d64b6e..271b103c03 100644
--- a/engines/fullpipe/sound.cpp
+++ b/engines/fullpipe/sound.cpp
@@ -126,7 +126,17 @@ void Sound::setPanAndVolume(int vol, int pan) {
}
void Sound::play(int flag) {
- warning("STUB: Sound::play()");
+ Audio::SoundHandle handle = getHandle();
+
+ if (g_fp->_mixer->isSoundHandleActive(handle))
+ return;
+
+ byte *soundData = loadData();
+ Common::MemoryReadStream *dataStream = new Common::MemoryReadStream(soundData, getDataSize());
+ Audio::RewindableAudioStream *wav = Audio::makeWAVStream(dataStream, DisposeAfterUse::YES);
+ Audio::AudioStream *audioStream = new Audio::LoopingAudioStream(wav, (flag == 1) ? 0 : 1);
+
+ g_fp->_mixer->playStream(Audio::Mixer::kSFXSoundType, &handle, audioStream);
}
void Sound::freeSound() {
@@ -300,12 +310,7 @@ void FullpipeEngine::playSound(int id, int flag) {
return;
}
- byte *soundData = sound->loadData();
- Common::MemoryReadStream *dataStream = new Common::MemoryReadStream(soundData, sound->getDataSize());
- Audio::RewindableAudioStream *wav = Audio::makeWAVStream(dataStream, DisposeAfterUse::YES);
- Audio::AudioStream *audioStream = new Audio::LoopingAudioStream(wav, (flag == 1) ? 0 : 1);
- Audio::SoundHandle handle = sound->getHandle();
- _mixer->playStream(Audio::Mixer::kSFXSoundType, &handle, audioStream);
+ sound->play(flag);
}
void FullpipeEngine::playTrack(GameVar *sceneVar, const char *name, bool delayed) {