aboutsummaryrefslogtreecommitdiff
path: root/engines/kyra/eobcommon.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/kyra/eobcommon.cpp')
-rw-r--r--engines/kyra/eobcommon.cpp42
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) {