diff options
author | Eugene Sandulenko | 2009-05-11 19:31:55 +0000 |
---|---|---|
committer | Eugene Sandulenko | 2009-05-11 19:31:55 +0000 |
commit | d5b9437fb315292292ffa21c04b1003e656a2838 (patch) | |
tree | 9e2bd481172e0f0d8227ea42788a22eefd00c1d2 | |
parent | 2ba1da41e8e189ea5c89b56bb6d6faca80a0268f (diff) | |
download | scummvm-rg350-d5b9437fb315292292ffa21c04b1003e656a2838.tar.gz scummvm-rg350-d5b9437fb315292292ffa21c04b1003e656a2838.tar.bz2 scummvm-rg350-d5b9437fb315292292ffa21c04b1003e656a2838.zip |
Fix bug #2055836: "FW: Music is not restarted when loading a saved game"
svn-id: r40465
-rw-r--r-- | engines/cine/cine.cpp | 3 | ||||
-rw-r--r-- | engines/cine/saveload.cpp | 15 | ||||
-rw-r--r-- | engines/cine/script_fw.cpp | 13 | ||||
-rw-r--r-- | engines/cine/various.cpp | 1 | ||||
-rw-r--r-- | engines/cine/various.h | 1 |
5 files changed, 25 insertions, 8 deletions
diff --git a/engines/cine/cine.cpp b/engines/cine/cine.cpp index fde1fb6621..64a9a9dfb8 100644 --- a/engines/cine/cine.cpp +++ b/engines/cine/cine.cpp @@ -172,6 +172,9 @@ void CineEngine::initialize() { var2 = var3 = var4 = var5 = 0; + musicIsPlaying = 0; + currentDatName[0] = 0; + _preLoad = false; if (ConfMan.hasKey("save_slot")) { char saveNameBuffer[256]; diff --git a/engines/cine/saveload.cpp b/engines/cine/saveload.cpp index 4a6ea321c8..2c6ff4dcae 100644 --- a/engines/cine/saveload.cpp +++ b/engines/cine/saveload.cpp @@ -29,6 +29,7 @@ #include "cine/cine.h" #include "cine/bg_list.h" #include "cine/saveload.h" +#include "cine/sound.h" #include "cine/various.h" namespace Cine { @@ -646,7 +647,7 @@ bool CineEngine::loadPlainSaveFW(Common::SeekableReadStream &in, CineSaveGameFor in.read(currentDatName, 13); // At 0x001C: - saveVar2 = in.readSint16BE(); + musicIsPlaying = in.readSint16BE(); // At 0x001E: in.read(currentPrcName, 13); @@ -748,12 +749,10 @@ bool CineEngine::loadPlainSaveFW(Common::SeekableReadStream &in, CineSaveGameFor } if (strlen(currentDatName)) { -/* i = saveVar2; - saveVar2 = 0; - loadMusic(); - if (i) { - playMusic(); - }*/ + g_sound->loadMusic(currentDatName); + if (musicIsPlaying) { + g_sound->playMusic(); + } } return !in.ioFailed(); @@ -835,7 +834,7 @@ void CineEngine::makeSaveFW(Common::OutSaveFile &out) { out.writeUint16BE(currentDisk); out.write(currentPartName, 13); out.write(currentDatName, 13); - out.writeUint16BE(saveVar2); + out.writeUint16BE(musicIsPlaying); out.write(currentPrcName, 13); out.write(currentRelName, 13); out.write(currentMsgName, 13); diff --git a/engines/cine/script_fw.cpp b/engines/cine/script_fw.cpp index f7037db61c..0c92beb650 100644 --- a/engines/cine/script_fw.cpp +++ b/engines/cine/script_fw.cpp @@ -1632,24 +1632,37 @@ int FWScript::o1_loadMusic() { debugC(5, kCineDebugScript, "Line: %d: loadMusic(%s)", _line, param); g_sound->loadMusic(param); + + strncpy(currentDatName, param, 30); + musicIsPlaying = 0; + return 0; } int FWScript::o1_playMusic() { debugC(5, kCineDebugScript, "Line: %d: playMusic()", _line); g_sound->playMusic(); + + musicIsPlaying = 1; + return 0; } int FWScript::o1_fadeOutMusic() { debugC(5, kCineDebugScript, "Line: %d: fadeOutMusic()", _line); g_sound->fadeOutMusic(); + + musicIsPlaying = 0; + return 0; } int FWScript::o1_stopSample() { debugC(5, kCineDebugScript, "Line: %d: stopSample()", _line); g_sound->stopMusic(); + + musicIsPlaying = 0; + return 0; } diff --git a/engines/cine/various.cpp b/engines/cine/various.cpp index 5b54bccc25..1ec558c217 100644 --- a/engines/cine/various.cpp +++ b/engines/cine/various.cpp @@ -89,6 +89,7 @@ char newMsgName[20]; char currentCtName[15]; char currentPartName[15]; char currentDatName[30]; +uint16 musicIsPlaying; byte isInPause = 0; diff --git a/engines/cine/various.h b/engines/cine/various.h index 34c56cd5db..bdbbc6fb86 100644 --- a/engines/cine/various.h +++ b/engines/cine/various.h @@ -78,6 +78,7 @@ extern int16 commandVar2; extern int16 commandVar3[4]; extern char currentDatName[30]; +extern uint16 musicIsPlaying; void setTextWindow(uint16 param1, uint16 param2, uint16 param3, uint16 param4); |