aboutsummaryrefslogtreecommitdiff
path: root/engines/xeen/xeen.cpp
diff options
context:
space:
mode:
authorPaul Gilbert2018-02-26 19:15:00 -0500
committerPaul Gilbert2018-02-26 19:15:00 -0500
commit0fc11aef63d2abbc695d64ed41053b4163aac69c (patch)
tree5c3da450b0112529f48e909a81cb58609052f1ba /engines/xeen/xeen.cpp
parent724c4e57add58362395ad6b6e79bcdaed1ff073b (diff)
downloadscummvm-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.cpp37
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();