[Scummvm-cvs-logs] CVS: scummvm/scumm/imuse_digi dimuse.h,1.70,1.71 dimuse_music.cpp,1.34,1.35 dimuse_track.cpp,1.47,1.48

Pawel Kolodziejski aquadran at users.sourceforge.net
Sat Mar 12 10:54:35 CET 2005


Update of /cvsroot/scummvm/scummvm/scumm/imuse_digi
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv8922

Modified Files:
	dimuse.h dimuse_music.cpp dimuse_track.cpp 
Log Message:
some experimental changes

Index: dimuse.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/imuse_digi/dimuse.h,v
retrieving revision 1.70
retrieving revision 1.71
diff -u -d -r1.70 -r1.71
--- dimuse.h	28 Jan 2005 22:05:46 -0000	1.70
+++ dimuse.h	12 Mar 2005 18:54:06 -0000	1.71
@@ -144,6 +144,9 @@
 	void setVolume(int soundId, int volume);
 	void setPan(int soundId, int pan);
 	void setFade(int soundId, int destVolume, int delay60HzTicks);
+	int getCurMusicSoundId();
+	char *getCurMusicSoundName();
+	void setHookId(int soundId, int hookId);
 	void setMusicVolume(int vol) {}
 	void stopSound(int sound);
 	void stopAllSounds();

Index: dimuse_music.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/imuse_digi/dimuse_music.cpp,v
retrieving revision 1.34
retrieving revision 1.35
diff -u -d -r1.34 -r1.35
--- dimuse_music.cpp	12 Mar 2005 16:05:25 -0000	1.34
+++ dimuse_music.cpp	12 Mar 2005 18:54:06 -0000	1.35
@@ -286,27 +286,40 @@
 
 	switch(table->opcode) {
 		case 0:
-		case 8:
-		case 9:
 			fadeOutMusic(120);
 			break;
+		case 8:
+		case 9:
+			{
+				int soundId = getCurMusicSoundId();
+				setHookId(soundId, hookId);
+				break;
+			}
 		case 1:
+			fadeOutMusic(120);
 			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);
-				return;
+			{
+				if (table->filename[0] == 0) {
+					fadeOutMusic(60);
+					return;
+				}
+				char *soundName = getCurMusicSoundName();
+				if ((strcmp(soundName, table->filename) == 0)) {
+					int soundId = getCurMusicSoundId();
+					setFade(soundId, 127, table->fadeOut60TicksDelay);
+					setHookId(soundId, hookId);
+				} else {
+					fadeOutMusic(120);
+					startMusic(table->filename, table->soundId, table->hookId, 127);
+				}
+				break;
 			}
-			fadeOutMusic(table->fadeOut60TicksDelay);
-			startMusic(table->filename, table->soundId, table->hookId, 127);
-			break;
 		case 3:
 		case 4:
 		case 12:
@@ -314,9 +327,9 @@
 				fadeOutMusic(60);
 				return;
 			}
-			fadeOutMusic(table->fadeOut60TicksDelay);
 			if ((!sequence) && (table->atribPos != 0) &&
 					(table->atribPos == _comiStateMusicTable[_curMusicState].atribPos)) {
+				fadeOutMusic(table->fadeOut60TicksDelay);
 				startMusic(table->filename, table->soundId, 0, 127);
 				return;
 			}

Index: dimuse_track.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/imuse_digi/dimuse_track.cpp,v
retrieving revision 1.47
retrieving revision 1.48
diff -u -d -r1.47 -r1.48
--- dimuse_track.cpp	11 Mar 2005 01:10:05 -0000	1.47
+++ dimuse_track.cpp	12 Mar 2005 18:54:06 -0000	1.48
@@ -206,6 +206,43 @@
 	}
 }
 
+void IMuseDigital::setHookId(int soundId, int hookId) {
+	Common::StackLock lock(_mutex, "IMuseDigital::setHookId()");
+
+	for (int l = 0; l < MAX_DIGITAL_TRACKS; l++) {
+		Track *track = _track[l];
+		if ((track->soundId == soundId) && track->used && !track->toBeRemoved) {
+			track->curHookId = hookId;
+		}
+	}
+}
+
+int IMuseDigital::getCurMusicSoundId() {
+	int soundId = -1;
+
+	for (int l = 0; l < MAX_DIGITAL_TRACKS; l++) {
+		Track *track = _track[l];
+		if (track->used && !track->toBeRemoved && (track->volGroupId == IMUSE_VOLGRP_MUSIC)) {
+			soundId = track->soundId;
+		}
+	}
+
+	return soundId;
+}
+
+char *IMuseDigital::getCurMusicSoundName() {
+	char *soundName = NULL;
+
+	for (int l = 0; l < MAX_DIGITAL_TRACKS; l++) {
+		Track *track = _track[l];
+		if (track->used && !track->toBeRemoved && (track->volGroupId == IMUSE_VOLGRP_MUSIC)) {
+			soundName = track->soundName;
+		}
+	}
+
+	return soundName;
+}
+
 void IMuseDigital::setPan(int soundId, int pan) {
 	debug(5, "IMuseDigital::setPan(%d, %d)", soundId, pan);
 





More information about the Scummvm-git-logs mailing list