diff options
Diffstat (limited to 'engines/kyra/eobcommon.cpp')
-rw-r--r-- | engines/kyra/eobcommon.cpp | 42 |
1 files changed, 23 insertions, 19 deletions
diff --git a/engines/kyra/eobcommon.cpp b/engines/kyra/eobcommon.cpp index e0fb584e16..3f9782a343 100644 --- a/engines/kyra/eobcommon.cpp +++ b/engines/kyra/eobcommon.cpp @@ -350,27 +350,31 @@ Common::Error EobCoreEngine::go() { //initPlayBuffers loadItemDefs(); - int action = 0; - if (_gameToLoad != -1) { - if (loadGameState(_gameToLoad).getCode() != Common::kNoError) - error("Couldn't load game slot %d on startup", _gameToLoad); - _gameToLoad = -1; - } else { - action = mainMenu(); - } - - if (action == -1) { - // load game - _saveLoadMode = -1; - startupLoad(); - } else if (action == -2) { - // new game - startCharacterGeneration(); - startupNew(); - } else if (action == -3) { - // transfer party + for (bool repeatLoop = true; repeatLoop; repeatLoop ^= true) { + action = 0; + + if (_gameToLoad != -1) { + if (loadGameState(_gameToLoad).getCode() != Common::kNoError) + error("Couldn't load game slot %d on startup", _gameToLoad); + _gameToLoad = -1; + } else { + action = mainMenu(); + } + + if (action == -1) { + // load game + _saveLoadMode = -1; + startupLoad(); + } else if (action == -2) { + // new game + repeatLoop = startCharacterGeneration(); + if (repeatLoop) + startupNew(); + } else if (action == -3) { + // transfer party + } } if (!shouldQuit() && action > -3) { |