diff options
author | Eugene Sandulenko | 2008-01-01 16:42:05 +0000 |
---|---|---|
committer | Eugene Sandulenko | 2008-01-01 16:42:05 +0000 |
commit | 23313cb82ee260c08826ea95d5c67636f9667c52 (patch) | |
tree | 090290d8b7903e52c62f9c8a07c60ce6b10e7a2f /engines/sword1/control.cpp | |
parent | 308b02f4ca5d179aab3cedd8ad9bd97c0685be73 (diff) | |
download | scummvm-rg350-23313cb82ee260c08826ea95d5c67636f9667c52.tar.gz scummvm-rg350-23313cb82ee260c08826ea95d5c67636f9667c52.tar.bz2 scummvm-rg350-23313cb82ee260c08826ea95d5c67636f9667c52.zip |
Patch #1733017: "SWORD1: Possible patch for bug #1730183"
svn-id: r30124
Diffstat (limited to 'engines/sword1/control.cpp')
-rw-r--r-- | engines/sword1/control.cpp | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/engines/sword1/control.cpp b/engines/sword1/control.cpp index 0ac32162b0..c2c6befbfd 100644 --- a/engines/sword1/control.cpp +++ b/engines/sword1/control.cpp @@ -221,6 +221,14 @@ void Control::askForCd(void) { free(_screenBuf); } +static int volToBalance(int volL, int volR) { + if (volL + volR == 0) { + return 50; + } else { + return (100 * volL / (volL + volR)); + } +} + uint8 Control::runPanel(void) { _mouseDown = false; _restoreBuf = NULL; @@ -310,6 +318,25 @@ uint8 Control::runPanel(void) { delay(1000 / 12); newMode = getClicks(mode, &retVal); } while ((newMode != BUTTON_DONE) && (retVal == 0) && (!SwordEngine::_systemVars.engineQuit)); + + if (SwordEngine::_systemVars.controlPanelMode == CP_NORMAL) { + uint8 volL, volR; + _music->giveVolume(&volL, &volR); + ConfMan.setInt("music_volume", (int)((volR + volL) / 2)); + ConfMan.setInt("music_balance", volToBalance(volL, volR)); + + _sound->giveSpeechVol(&volL, &volR); + ConfMan.setInt("speech_volume", (int)((volR + volL) / 2)); + ConfMan.setInt("speech_balance", volToBalance(volL, volR)); + + _sound->giveSfxVol(&volL, &volR); + ConfMan.setInt("sfx_volume", (int)((volR + volL) / 2)); + ConfMan.setInt("sfx_balance", volToBalance(volL, volR)); + + ConfMan.setBool("subtitles", SwordEngine::_systemVars.showText == 1); + ConfMan.flushToDisk(); + } + destroyButtons(); _resMan->resClose(fontId); _resMan->resClose(redFontId); |