[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