diff options
author | Bastien Bouclet | 2019-10-30 05:51:22 +0100 |
---|---|---|
committer | Bastien Bouclet | 2019-10-30 19:54:12 +0100 |
commit | 8a02d0efad8a93be2525c3e439eb0b52f64d647a (patch) | |
tree | 5d717cca2acc6c85904f2bc5c13ec1aebd61cd68 /engines/mohawk/myst.cpp | |
parent | 08191db22a79f09a367e732fd30bc024882cc17b (diff) | |
download | scummvm-rg350-8a02d0efad8a93be2525c3e439eb0b52f64d647a.tar.gz scummvm-rg350-8a02d0efad8a93be2525c3e439eb0b52f64d647a.tar.bz2 scummvm-rg350-8a02d0efad8a93be2525c3e439eb0b52f64d647a.zip |
MOHAWK: MYST: Save the options to ConfMan when the game is not started
Diffstat (limited to 'engines/mohawk/myst.cpp')
-rw-r--r-- | engines/mohawk/myst.cpp | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/engines/mohawk/myst.cpp b/engines/mohawk/myst.cpp index ed3d40d2b2..b2d04e1dd5 100644 --- a/engines/mohawk/myst.cpp +++ b/engines/mohawk/myst.cpp @@ -366,6 +366,9 @@ Common::Error MohawkEngine_Myst::run() { return Common::kAudioDeviceInitFailed; } + ConfMan.registerDefault("zip_mode", false); + ConfMan.registerDefault("transition_mode", false); + _gfx = new MystGraphics(this); _video = new VideoManager(this); _sound = new MystSound(this); @@ -578,6 +581,14 @@ void MohawkEngine_Myst::runOptionsDialog() { stack = _stack; } + if (isGameStarted()) { + _optionsDialog->setZipMode(_gameState->_globals.zipMode); + _optionsDialog->setTransitions(_gameState->_globals.transitions); + } else { + _optionsDialog->setZipMode(ConfMan.getBool("zip_mode")); + _optionsDialog->setTransitions(ConfMan.getBool("transition_mode")); + } + _optionsDialog->setCanDropPage(actionsAllowed && _gameState->_globals.heldPage != kNoPage); _optionsDialog->setCanShowMap(actionsAllowed && stack->getMap()); _optionsDialog->setCanReturnToMenu(actionsAllowed && stack->getStackId() != kDemoStack); @@ -615,6 +626,16 @@ void MohawkEngine_Myst::runOptionsDialog() { quitGame(); } break; + case MystOptionsDialog::kActionSaveSettings: + if (isGameStarted()) { + _gameState->_globals.zipMode = _optionsDialog->getZipMode(); + _gameState->_globals.transitions = _optionsDialog->getTransitions(); + } else { + ConfMan.setBool("zip_mode", _optionsDialog->getZipMode()); + ConfMan.setBool("transition_mode", _optionsDialog->getTransitions()); + ConfMan.flushToDisk(); + } + break; default: if (_optionsDialog->getLoadSlot() >= 0) loadGameState(_optionsDialog->getLoadSlot()); @@ -1108,6 +1129,10 @@ void MohawkEngine_Myst::goToMainMenu() { _gfx->copyBackBufferToScreen(Common::Rect(544, 333)); } +bool MohawkEngine_Myst::isGameStarted() const { + return _prevStack || (_stack->getStackId() != kMenuStack); +} + void MohawkEngine_Myst::resumeFromMainMenu() { _card->leave(); _card.reset(); |