[Scummvm-cvs-logs] SF.net SVN: scummvm: [30465] scummvm/trunk/engines/scumm/imuse_digi
aquadran at users.sourceforge.net
aquadran at users.sourceforge.net
Sun Jan 13 02:03:15 CET 2008
Revision: 30465
http://scummvm.svn.sourceforge.net/scummvm/?rev=30465&view=rev
Author: aquadran
Date: 2008-01-12 17:03:15 -0800 (Sat, 12 Jan 2008)
Log Message:
-----------
fixed fadeOutMusic in transitions
Modified Paths:
--------------
scummvm/trunk/engines/scumm/imuse_digi/dimuse.h
scummvm/trunk/engines/scumm/imuse_digi/dimuse_music.cpp
scummvm/trunk/engines/scumm/imuse_digi/dimuse_track.cpp
Modified: scummvm/trunk/engines/scumm/imuse_digi/dimuse.h
===================================================================
--- scummvm/trunk/engines/scumm/imuse_digi/dimuse.h 2008-01-13 00:15:43 UTC (rev 30464)
+++ scummvm/trunk/engines/scumm/imuse_digi/dimuse.h 2008-01-13 01:03:15 UTC (rev 30465)
@@ -149,6 +149,7 @@
int getSoundIdByName(const char *soundName);
void fadeOutMusic(int fadeDelay);
+ void updateMusicFadeTrack(int fadeDelay);
Track *cloneToFadeOutTrack(Track *track, int fadeDelay);
void setFtMusicState(int stateId);
Modified: scummvm/trunk/engines/scumm/imuse_digi/dimuse_music.cpp
===================================================================
--- scummvm/trunk/engines/scumm/imuse_digi/dimuse_music.cpp 2008-01-13 00:15:43 UTC (rev 30464)
+++ scummvm/trunk/engines/scumm/imuse_digi/dimuse_music.cpp 2008-01-13 01:03:15 UTC (rev 30465)
@@ -169,6 +169,9 @@
fadeOutMusic(120);
+ if (!songName)
+ updateMusicFadeTrack(120);
+
switch (table->transitionType) {
case 0:
case 5:
@@ -176,14 +179,17 @@
case 3:
case 4:
if (table->filename[0] == 0) {
+ updateMusicFadeTrack(60);
return;
}
if (table->transitionType == 4)
_stopingSequence = true;
if ((!sequence) && (table->attribPos != 0) &&
(table->attribPos == _digStateMusicTable[_curMusicState].attribPos)) {
+ updateMusicFadeTrack(108);
startMusic(table->filename, table->soundId, 0, 127);
} else {
+ updateMusicFadeTrack(108);
startMusic(table->filename, table->soundId, hookId, 127);
}
break;
@@ -287,9 +293,13 @@
}
}
+ fadeOutMusic(120);
+
+ if (!songName)
+ updateMusicFadeTrack(120);
+
switch (table->transitionType) {
case 0:
- fadeOutMusic(120);
break;
case 8:
setHookId(table->soundId, table->hookId);
@@ -298,41 +308,32 @@
_stopingSequence = true;
setHookId(table->soundId, table->hookId);
break;
- case 1:
- if (table->filename[0] == 0) {
- fadeOutMusic(120);
- return;
- }
- fadeOutMusic(120);
- startMusic(table->filename, table->soundId, 0, 1);
- setFade(table->soundId, 127, 120);
- break;
case 2:
if (table->filename[0] == 0) {
- fadeOutMusic(60);
+ updateMusicFadeTrack(60);
return;
}
- fadeOutMusic(table->fadeOutDelay);
+ updateMusicFadeTrack(table->fadeOutDelay);
startMusic(table->filename, table->soundId, table->hookId, 127);
break;
case 3:
case 4:
case 12:
if (table->filename[0] == 0) {
- fadeOutMusic(60);
+ updateMusicFadeTrack(60);
return;
}
if (table->transitionType == 4)
_stopingSequence = true;
if ((!sequence) && (table->attribPos != 0) &&
(table->attribPos == _comiStateMusicTable[_curMusicState].attribPos)) {
- fadeOutMusic(120); // expiremental fadeDelay 120 instead from table
+ updateMusicFadeTrack(120); // expiremental fadeDelay 120 instead from table
startMusic(table->filename, table->soundId, 0, 127);
} else if (table->transitionType == 12) {
- fadeOutMusic(table->fadeOutDelay);
+ updateMusicFadeTrack(table->fadeOutDelay);
startMusic(table->filename, table->soundId, table->hookId, 127);
} else {
- fadeOutMusic(table->fadeOutDelay);
+ updateMusicFadeTrack(table->fadeOutDelay);
startMusic(table->filename, table->soundId, hookId, 127);
}
break;
Modified: scummvm/trunk/engines/scumm/imuse_digi/dimuse_track.cpp
===================================================================
--- scummvm/trunk/engines/scumm/imuse_digi/dimuse_track.cpp 2008-01-13 00:15:43 UTC (rev 30464)
+++ scummvm/trunk/engines/scumm/imuse_digi/dimuse_track.cpp 2008-01-13 01:03:15 UTC (rev 30465)
@@ -280,6 +280,22 @@
}
}
+void IMuseDigital::updateMusicFadeTrack(int fadeDelay) {
+ Common::StackLock lock(_mutex, "IMuseDigital::updateMusicFadeTrack()");
+ debug(5, "IMuseDigital::updateMusicFadeTrack");
+
+ for (int l = MAX_DIGITAL_TRACKS; l < MAX_DIGITAL_TRACKS + MAX_DIGITAL_FADETRACKS; l++) {
+ Track *track = _track[l];
+ if (track->used && !track->toBeRemoved && (track->volGroupId == IMUSE_VOLGRP_MUSIC)) {
+ track->volFadeDelay = fadeDelay;
+ track->volFadeDest = 0;
+ track->volFadeStep = (track->volFadeDest - track->vol) * 60 * (1000 / _callbackFps) / (1000 * fadeDelay);
+ track->volFadeUsed = true;
+ }
+ }
+}
+
+
IMuseDigital::Track *IMuseDigital::cloneToFadeOutTrack(Track *track, int fadeDelay) {
assert(track);
Track *fadeTrack = 0;
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