diff options
author | Paul Gilbert | 2018-02-26 19:15:00 -0500 |
---|---|---|
committer | Paul Gilbert | 2018-02-26 19:15:00 -0500 |
commit | 0fc11aef63d2abbc695d64ed41053b4163aac69c (patch) | |
tree | 5c3da450b0112529f48e909a81cb58609052f1ba /engines/xeen/xeen.cpp | |
parent | 724c4e57add58362395ad6b6e79bcdaed1ff073b (diff) | |
download | scummvm-rg350-0fc11aef63d2abbc695d64ed41053b4163aac69c.tar.gz scummvm-rg350-0fc11aef63d2abbc695d64ed41053b4163aac69c.tar.bz2 scummvm-rg350-0fc11aef63d2abbc695d64ed41053b4163aac69c.zip |
XEEN: Cleanup of the game title, intro, and menu launching code
Diffstat (limited to 'engines/xeen/xeen.cpp')
-rw-r--r-- | engines/xeen/xeen.cpp | 37 |
1 files changed, 33 insertions, 4 deletions
diff --git a/engines/xeen/xeen.cpp b/engines/xeen/xeen.cpp index 9acf2c51b4..e9e27c455c 100644 --- a/engines/xeen/xeen.cpp +++ b/engines/xeen/xeen.cpp @@ -58,7 +58,7 @@ XeenEngine::XeenEngine(OSystem *syst, const XeenGameDescription *gameDesc) _windows = nullptr; _noDirectionSense = false; _startupWindowActive = false; - _quitMode = QMODE_NONE; + _gameMode = GMODE_STARTUP; _mode = MODE_0; _endingScore = 0; _loadSaveSlot = -1; @@ -128,6 +128,35 @@ Common::Error XeenEngine::run() { return Common::kNoError; } +void XeenEngine::outerGameLoop() { + if (_loadSaveSlot != -1) + // Loading savegame from launcher, so Skip menu and go straight to game + _gameMode = GMODE_PLAY_GAME; + + while (!shouldQuit() && _gameMode != GMODE_QUIT) { + GameMode mode = _gameMode; + _gameMode = GMODE_NONE; + assert(mode != GMODE_NONE); + + switch (mode) { + case GMODE_STARTUP: + showStartup(); + break; + + case GMODE_MENU: + showMainMenu(); + break; + + case GMODE_PLAY_GAME: + playGame(); + break; + + default: + break; + } + } +} + int XeenEngine::getRandomNumber(int maxNumber) { return _randomSource.getRandomNumber(maxNumber); } @@ -161,7 +190,7 @@ void XeenEngine::playGame() { } void XeenEngine::play() { - _quitMode = QMODE_NONE; + _gameMode = GMODE_NONE; _interface->setup(); _screen->loadBackground("back.raw"); @@ -218,8 +247,8 @@ void XeenEngine::gameLoop() { _map->cellFlagLookup(_party->_mazePosition); if (_map->_currentIsEvent) { - _quitMode = (QuitMode)_scripts->checkEvents(); - if (shouldExit() || _quitMode) + _gameMode = (GameMode)_scripts->checkEvents(); + if (shouldExit() || _gameMode) return; } _party->giveTreasure(); |