diff options
Diffstat (limited to 'engines/tucker')
-rw-r--r-- | engines/tucker/detection.cpp | 5 | ||||
-rw-r--r-- | engines/tucker/tucker.cpp | 14 |
2 files changed, 13 insertions, 6 deletions
diff --git a/engines/tucker/detection.cpp b/engines/tucker/detection.cpp index f0437d2f87..7404abc2e7 100644 --- a/engines/tucker/detection.cpp +++ b/engines/tucker/detection.cpp @@ -122,8 +122,8 @@ static const ADParams detectionParams = { 0, // Flags 0, - // Additional GUI options (for every game} - Common::GUIO_NOLAUNCHLOAD, + // Additional GUI options (for every game) + Common::GUIO_NONE, // Maximum directory depth 1, // List of directory globs @@ -156,6 +156,7 @@ public: virtual bool hasFeature(MetaEngineFeature f) const { switch (f) { case kSupportsListSaves: + case kSupportsLoadingDuringStartup: case kSupportsDeleteSave: return true; default: diff --git a/engines/tucker/tucker.cpp b/engines/tucker/tucker.cpp index d3a6b4162b..e41cbfbeef 100644 --- a/engines/tucker/tucker.cpp +++ b/engines/tucker/tucker.cpp @@ -124,10 +124,7 @@ void TuckerEngine::restart() { _timerCounter2 = 0; _partNum = _currentPartNum = 0; _locationNum = 0; - _nextLocationNum = ConfMan.getInt("boot_param"); - if (_nextLocationNum == 0) { - _nextLocationNum = (_gameFlags & kGameFlagDemo) == 0 ? kStartupLocationGame : kStartupLocationDemo; - } + _nextLocationNum = (_gameFlags & kGameFlagDemo) == 0 ? kStartupLocationGame : kStartupLocationDemo; _gamePaused = false; _gameDebug = false; _displayGameHints = false; @@ -353,6 +350,15 @@ void TuckerEngine::mainLoop() { _spriteAnimationFrameIndex = _spriteAnimationsTable[14].firstFrameIndex; + if (ConfMan.hasKey("save_slot")) { + const int slot = ConfMan.getInt("save_slot"); + if (slot >= 0 && slot <= kLastSaveSlot) { + loadGameState(slot); + } + } else if (ConfMan.hasKey("boot_param")) { + _nextLocationNum = ConfMan.getInt("boot_param"); + } + do { ++_syncCounter; if (_flagsTable[137] != _flagsTable[138]) { |