diff options
author | Johannes Schickel | 2008-04-12 23:26:13 +0000 |
---|---|---|
committer | Johannes Schickel | 2008-04-12 23:26:13 +0000 |
commit | d54eaa39a14bc9ec81ffee09ed2c8f25348286df (patch) | |
tree | 4f836c97ea4f8b957cb7fb4980e93e9ab78661a5 /engines | |
parent | 1f91dc03846caecc0651101f54ad25f1864ae132 (diff) | |
download | scummvm-rg350-d54eaa39a14bc9ec81ffee09ed2c8f25348286df.tar.gz scummvm-rg350-d54eaa39a14bc9ec81ffee09ed2c8f25348286df.tar.bz2 scummvm-rg350-d54eaa39a14bc9ec81ffee09ed2c8f25348286df.zip |
Added fade out time parameter for digital sounds.
svn-id: r31489
Diffstat (limited to 'engines')
-rw-r--r-- | engines/kyra/kyra_v3.cpp | 6 | ||||
-rw-r--r-- | engines/kyra/sound.h | 3 | ||||
-rw-r--r-- | engines/kyra/sound_digital.cpp | 26 |
3 files changed, 18 insertions, 17 deletions
diff --git a/engines/kyra/kyra_v3.cpp b/engines/kyra/kyra_v3.cpp index 0d6b1934d9..d281da3bb8 100644 --- a/engines/kyra/kyra_v3.cpp +++ b/engines/kyra/kyra_v3.cpp @@ -167,11 +167,11 @@ int KyraEngine_v3::go() { break; case 3: - uninitMainMenu(); - _soundDigital->beginFadeOut(_musicSoundChannel); + _soundDigital->beginFadeOut(_musicSoundChannel, 60); _screen->fadeToBlack(); _soundDigital->stopSound(_musicSoundChannel); _musicSoundChannel = -1; + uninitMainMenu(); running = false; break; @@ -231,7 +231,7 @@ void KyraEngine_v3::playVQA(const char *name) { _screen->copyRegion(0, 0, 0, 0, 320, 200, 0, 3); _screen->hideMouse(); - _soundDigital->beginFadeOut(_musicSoundChannel); + _soundDigital->beginFadeOut(_musicSoundChannel, 60); _musicSoundChannel = -1; _screen->fadeToBlack(); vqa.setDrawPage(0); diff --git a/engines/kyra/sound.h b/engines/kyra/sound.h index c6f416db5b..456a1096ac 100644 --- a/engines/kyra/sound.h +++ b/engines/kyra/sound.h @@ -541,8 +541,9 @@ public: * fading out. * * @param channel channel number + * @param ticks fadeout time */ - void beginFadeOut(int channel); + void beginFadeOut(int channel, int ticks); private: KyraEngine *_vm; Audio::Mixer *_mixer; diff --git a/engines/kyra/sound_digital.cpp b/engines/kyra/sound_digital.cpp index 0f59e0664d..ab36423df6 100644 --- a/engines/kyra/sound_digital.cpp +++ b/engines/kyra/sound_digital.cpp @@ -46,8 +46,8 @@ public: int getRate() const { return _rate; } - void beginFadeIn(); - void beginFadeOut(); + void beginFadeIn(uint32 millis); + void beginFadeOut(uint32 millis); private: Common::SeekableReadStream *_stream; bool _loop; @@ -90,10 +90,7 @@ AUDStream::AUDStream(Common::SeekableReadStream *stream, bool loop) : _stream(st _totalSize = _stream->readUint32LE(); _loop = loop; - // TODO: Find the correct number of samples for a fade-in/out. Should - // probably take the same amount of time as a palette fade. - - _fadeSamples = 2 * getRate(); + _fadeSamples = 0; _fading = 0; // TODO?: add checks @@ -102,9 +99,9 @@ AUDStream::AUDStream(Common::SeekableReadStream *stream, bool loop) : _stream(st _loopStart = stream->pos(); - if (type == 1 && !flags) { + if (type == 1 && !flags) _endOfData = false; - } else + else warning("No AUD file (rate: %d, size: %d, flags: 0x%X, type: %d)", _rate, _totalSize, flags, type); } @@ -114,13 +111,15 @@ AUDStream::~AUDStream() { delete _stream; } -void AUDStream::beginFadeIn() { +void AUDStream::beginFadeIn(uint32 millis) { + _fadeSamples = (millis * getRate()) / 1000; if (_fading == 0) _fadeCount = 0; _fading = 1; } -void AUDStream::beginFadeOut() { +void AUDStream::beginFadeOut(uint32 millis) { + _fadeSamples = (millis * getRate()) / 1000; if (_fading == 0) _fadeCount = _fadeSamples; _fading = -1; @@ -356,8 +355,9 @@ int SoundDigital::playSound(Common::SeekableReadStream *stream, bool loop, bool return -1; } + // Just guessed if (fadeIn) - use->stream->beginFadeIn(); + use->stream->beginFadeIn(60 * _vm->tickLength()); // TODO: set correct sound type from channel id _mixer->playInputStream(Audio::Mixer::kPlainSoundType, &use->handle, use->stream); @@ -380,9 +380,9 @@ void SoundDigital::stopSound(int channel) { _sounds[channel].stream = 0; } -void SoundDigital::beginFadeOut(int channel) { +void SoundDigital::beginFadeOut(int channel, int ticks) { if (isPlaying(channel)) - _sounds[channel].stream->beginFadeOut(); + _sounds[channel].stream->beginFadeOut(ticks * _vm->tickLength()); } } // end of namespace Kyra |