diff options
author | Walter van Niftrik | 2016-12-28 22:11:53 +0100 |
---|---|---|
committer | Walter van Niftrik | 2016-12-28 22:13:34 +0100 |
commit | cfaf749c60c4c641f11142bde53ce6b183847895 (patch) | |
tree | 61b883572e2ac27378f713c0a00590637bf23148 /engines/adl/adl_v4.cpp | |
parent | d7844bbf1790243cc317ff63143a257e08677dae (diff) | |
download | scummvm-rg350-cfaf749c60c4c641f11142bde53ce6b183847895.tar.gz scummvm-rg350-cfaf749c60c4c641f11142bde53ce6b183847895.tar.bz2 scummvm-rg350-cfaf749c60c4c641f11142bde53ce6b183847895.zip |
ADL: Implement hires5 game loop
Diffstat (limited to 'engines/adl/adl_v4.cpp')
-rw-r--r-- | engines/adl/adl_v4.cpp | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/engines/adl/adl_v4.cpp b/engines/adl/adl_v4.cpp index c979f836aa..dcf0f997c9 100644 --- a/engines/adl/adl_v4.cpp +++ b/engines/adl/adl_v4.cpp @@ -37,6 +37,51 @@ AdlEngine_v4::~AdlEngine_v4() { delete _itemPicIndex; } +void AdlEngine_v4::gameLoop() { + uint verb = 0, noun = 0; + _isRestarting = false; + + if (_isRestoring) { + // Game restored from launcher. As this version of ADL long jumps to + // the game loop after restoring, no special action is required. + _isRestoring = false; + } + + showRoom(); + + if (_isRestarting || shouldQuit()) + return; + + _canSaveNow = _canRestoreNow = true; + getInput(verb, noun); + _canSaveNow = _canRestoreNow = false; + + if (_isRestoring) { + // Game restored from GMM. Move cursor to next line and jump to + // start of game loop. + _display->printAsciiString("\r"); + _isRestoring = false; + return; + } + + if (_isRestarting || shouldQuit()) + return; + + _linesPrinted = 0; + + checkInput(verb, noun); + + if (_isRestarting || shouldQuit()) + return; + + doAllCommands(_globalCommands, verb, noun); + + if (_isRestarting || shouldQuit()) + return; + + _state.moves++; +} + void AdlEngine_v4::loadState(Common::ReadStream &stream) { _state.room = stream.readByte(); _state.region = stream.readByte(); |