diff options
author | Paul Gilbert | 2007-10-25 10:39:19 +0000 |
---|---|---|
committer | Paul Gilbert | 2007-10-25 10:39:19 +0000 |
commit | 864ed910fa3cf56abb3ec3907d4bac226cc03490 (patch) | |
tree | a503a21f983113801f45b5855130be94ac270c9f | |
parent | c0f285693c72a4e1fbfb75720ee5ff76e4db15a1 (diff) | |
download | scummvm-rg350-864ed910fa3cf56abb3ec3907d4bac226cc03490.tar.gz scummvm-rg350-864ed910fa3cf56abb3ec3907d4bac226cc03490.tar.bz2 scummvm-rg350-864ed910fa3cf56abb3ec3907d4bac226cc03490.zip |
Bugfix to make sound toggle work correctly, and added flag state to savegames
svn-id: r29257
-rw-r--r-- | engines/lure/game.cpp | 8 | ||||
-rw-r--r-- | engines/lure/game.h | 1 | ||||
-rw-r--r-- | engines/lure/sound.cpp | 4 |
3 files changed, 12 insertions, 1 deletions
diff --git a/engines/lure/game.cpp b/engines/lure/game.cpp index 2f95bcb01c..b4b983bf8f 100644 --- a/engines/lure/game.cpp +++ b/engines/lure/game.cpp @@ -877,7 +877,9 @@ void Game::doSound() { _soundFlag = !_soundFlag; menu.getMenu(2).entries()[2] = sl.getString(_soundFlag ? S_SOUND_ON : S_SOUND_OFF); - Sound.setVolume(_soundFlag ? DEFAULT_VOLUME : 0); + + // Stop all currently playing sounds + Sound.killSounds(); } void Game::handleBootParam(int value) { @@ -980,6 +982,7 @@ bool Game::getYN() { void Game::saveToStream(WriteStream *stream) { stream->writeByte(_fastTextFlag); + stream->writeByte(_soundFlag); } void Game::loadFromStream(ReadStream *stream) { @@ -988,6 +991,9 @@ void Game::loadFromStream(ReadStream *stream) { _fastTextFlag = stream->readByte() != 0; menu.getMenu(2).entries()[1] = sl.getString(_fastTextFlag ? S_FAST_TEXT : S_SLOW_TEXT); + + _soundFlag = stream->readByte() != 0; + menu.getMenu(2).entries()[2] = sl.getString(_soundFlag ? S_SOUND_ON : S_SOUND_OFF); } diff --git a/engines/lure/game.h b/engines/lure/game.h index bb7c2d6d7e..078fe9b3ee 100644 --- a/engines/lure/game.h +++ b/engines/lure/game.h @@ -79,6 +79,7 @@ public: void setState(uint8 flags) { _state = flags; } bool &preloadFlag() { return _preloadFlag; } bool fastTextFlag() { return _fastTextFlag; } + bool soundFlag() { return _soundFlag; } // Menu item support methods void doDebugMenu(); diff --git a/engines/lure/sound.cpp b/engines/lure/sound.cpp index 5da2519c72..850b549519 100644 --- a/engines/lure/sound.cpp +++ b/engines/lure/sound.cpp @@ -365,6 +365,10 @@ void SoundManager::musicInterface_Play(uint8 soundNumber, uint8 channelNumber) { // Only play sounds if a sound driver is active return; + if (!Game::getReference().soundFlag()) + // Don't play sounds if sound is turned off + return; + uint32 dataOfs = READ_LE_UINT32(_soundData->data() + soundNum * 4 + 2); uint8 *soundStart = _soundData->data() + dataOfs; uint32 dataSize; |