[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