[Scummvm-cvs-logs] SF.net SVN: scummvm: [31489] scummvm/trunk/engines/kyra
lordhoto at users.sourceforge.net
lordhoto at users.sourceforge.net
Sun Apr 13 01:26:13 CEST 2008
Revision: 31489
http://scummvm.svn.sourceforge.net/scummvm/?rev=31489&view=rev
Author: lordhoto
Date: 2008-04-12 16:26:13 -0700 (Sat, 12 Apr 2008)
Log Message:
-----------
Added fade out time parameter for digital sounds.
Modified Paths:
--------------
scummvm/trunk/engines/kyra/kyra_v3.cpp
scummvm/trunk/engines/kyra/sound.h
scummvm/trunk/engines/kyra/sound_digital.cpp
Modified: scummvm/trunk/engines/kyra/kyra_v3.cpp
===================================================================
--- scummvm/trunk/engines/kyra/kyra_v3.cpp 2008-04-12 23:17:21 UTC (rev 31488)
+++ scummvm/trunk/engines/kyra/kyra_v3.cpp 2008-04-12 23:26:13 UTC (rev 31489)
@@ -167,11 +167,11 @@
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 @@
_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);
Modified: scummvm/trunk/engines/kyra/sound.h
===================================================================
--- scummvm/trunk/engines/kyra/sound.h 2008-04-12 23:17:21 UTC (rev 31488)
+++ scummvm/trunk/engines/kyra/sound.h 2008-04-12 23:26:13 UTC (rev 31489)
@@ -541,8 +541,9 @@
* 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;
Modified: scummvm/trunk/engines/kyra/sound_digital.cpp
===================================================================
--- scummvm/trunk/engines/kyra/sound_digital.cpp 2008-04-12 23:17:21 UTC (rev 31488)
+++ scummvm/trunk/engines/kyra/sound_digital.cpp 2008-04-12 23:26:13 UTC (rev 31489)
@@ -46,8 +46,8 @@
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 @@
_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 @@
_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 @@
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 @@
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 @@
_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
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Scummvm-git-logs
mailing list