diff options
author | Eugene Sandulenko | 2014-04-26 17:00:11 +0300 |
---|---|---|
committer | Eugene Sandulenko | 2014-04-26 17:00:11 +0300 |
commit | e25195d8f5bffbeb7d84785311437aa19c345f03 (patch) | |
tree | c6715d5c2d630e8cfbe09fb1f6da0f0456fe4031 /engines | |
parent | 4d81792b450370af8061b1422399a22bd56c1df0 (diff) | |
download | scummvm-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.cpp | 19 |
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) { |