diff options
Diffstat (limited to 'engines')
-rw-r--r-- | engines/sword1/control.cpp | 5 | ||||
-rw-r--r-- | engines/sword1/sound.cpp | 10 |
2 files changed, 14 insertions, 1 deletions
diff --git a/engines/sword1/control.cpp b/engines/sword1/control.cpp index 09d2197f2a..e5f3b9a04c 100644 --- a/engines/sword1/control.cpp +++ b/engines/sword1/control.cpp @@ -416,7 +416,10 @@ uint8 Control::runPanel(void) { _system->copyRectToScreen(_screenBuf, 640, 0, 0, 640, 480); free(_screenBuf); _mouse->controlPanel(false); - _music->startMusic(Logic::_scriptVars[CURRENT_MUSIC], 1); + if (retVal == CONTROL_NOTHING_DONE) { + _music->startMusic(Logic::_scriptVars[CURRENT_MUSIC], 1); + _sound->newScreen(Logic::_scriptVars[SCREEN]); + } _panelShown = false; return retVal; } diff --git a/engines/sword1/sound.cpp b/engines/sword1/sound.cpp index 6ad946b28d..69db0ca40f 100644 --- a/engines/sword1/sound.cpp +++ b/engines/sword1/sound.cpp @@ -226,6 +226,16 @@ void Sound::newScreen(uint32 screen) { closeCowSystem(); initCowSystem(); } + + // Start the room's looping sounds. + for (uint16 cnt = 0; cnt < TOTAL_FX_PER_ROOM; cnt++) { + uint16 fxNo = _roomsFixedFx[screen][cnt]; + if (fxNo) { + if (_fxList[fxNo].type == FX_LOOP) + addToQueue(fxNo); + } else + break; + } } void Sound::quitScreen(void) { |