aboutsummaryrefslogtreecommitdiff
path: root/engines/mohawk/myst.cpp
diff options
context:
space:
mode:
authorBastien Bouclet2019-10-30 05:51:22 +0100
committerBastien Bouclet2019-10-30 19:54:12 +0100
commit8a02d0efad8a93be2525c3e439eb0b52f64d647a (patch)
tree5d717cca2acc6c85904f2bc5c13ec1aebd61cd68 /engines/mohawk/myst.cpp
parent08191db22a79f09a367e732fd30bc024882cc17b (diff)
downloadscummvm-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.cpp25
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();