aboutsummaryrefslogtreecommitdiff
path: root/scumm
diff options
context:
space:
mode:
authorPaweł Kołodziejski2003-06-23 21:23:10 +0000
committerPaweł Kołodziejski2003-06-23 21:23:10 +0000
commita1f760b9443e6622d269d0f51ae9dbfe951afbe3 (patch)
tree65fd5f902976e359788f832ef1b6f2483492ff7d /scumm
parentc848e724a4035fb2b4fb38a4e235072f832fe6e4 (diff)
downloadscummvm-rg350-a1f760b9443e6622d269d0f51ae9dbfe951afbe3.tar.gz
scummvm-rg350-a1f760b9443e6622d269d0f51ae9dbfe951afbe3.tar.bz2
scummvm-rg350-a1f760b9443e6622d269d0f51ae9dbfe951afbe3.zip
this should prevent changing music in some room in the DIG
svn-id: r8641
Diffstat (limited to 'scumm')
-rw-r--r--scumm/imuse_digi.cpp3
-rw-r--r--scumm/sound.cpp6
-rw-r--r--scumm/sound.h3
3 files changed, 8 insertions, 4 deletions
diff --git a/scumm/imuse_digi.cpp b/scumm/imuse_digi.cpp
index 52edba2ff8..68e0a71789 100644
--- a/scumm/imuse_digi.cpp
+++ b/scumm/imuse_digi.cpp
@@ -1134,7 +1134,8 @@ int32 IMuseDigital::doCommand(int a, int b, int c, int d, int e, int f, int g, i
if (_digStateMusicMap[l].room == b) {
int16 music = _digStateMusicMap[l].table_index;
debug(5, "Play imuse music: %s, %s, %s", _digStateMusicTable[music].name, _digStateMusicTable[music].title, _digStateMusicTable[music].filename);
- if (_digStateMusicTable[music].filename[0] != 0) {
+ if ((_digStateMusicTable[music].filename[0] != 0) &&
+ (strcmp(_digStateMusicTable[_digStateMusicTable[music].unk3].filename, _scumm->_sound->_nameBundleMusic) != 0) ) {
_scumm->_sound->playBundleMusic((const char *)_digStateMusicTable[music].filename);
}
return 0;
diff --git a/scumm/sound.cpp b/scumm/sound.cpp
index 3d6ea2a222..303b97f43c 100644
--- a/scumm/sound.cpp
+++ b/scumm/sound.cpp
@@ -87,7 +87,7 @@ Sound::Sound(Scumm *parent) {
memset(this,0,sizeof(Sound)); // palmos
_scumm = parent;
- _nameBundleMusic = NULL;
+ _nameBundleMusic = "";
_musicBundleBufFinal = NULL;
_musicBundleBufOutput = NULL;
_musicDisk = 0;
@@ -1001,7 +1001,7 @@ void Sound::playBundleMusic(const char *song) {
return;
}
- if (_nameBundleMusic == NULL) {
+ if (_nameBundleMusic[0] == 0) {
_outputMixerSize = 66150; // ((22050 * 2 * 2) / 4) * 3
if (_scumm->_gameId == GID_CMI) {
char bunfile[20];
@@ -1063,7 +1063,7 @@ void Sound::bundleMusicHandler(Scumm *scumm) {
if (_musicBundleToBeRemoved == true) {
_scumm->_timer->releaseProcedure(&music_handler);
- _nameBundleMusic = NULL;
+ _nameBundleMusic = "";
if (_bundleMusicTrack != -1) {
_scumm->_mixer->stop(_bundleMusicTrack);
}
diff --git a/scumm/sound.h b/scumm/sound.h
index ce50c3a198..842912f4e4 100644
--- a/scumm/sound.h
+++ b/scumm/sound.h
@@ -41,7 +41,10 @@ protected:
bool _soundsPaused2;
bool _soundVolumePreset;
+public:
const char *_nameBundleMusic;
+
+protected:
const char *_newNameBundleMusic;
byte _musicDisk;
byte _voiceDisk;