aboutsummaryrefslogtreecommitdiff
path: root/engines/adl/adl_v4.cpp
diff options
context:
space:
mode:
authorWalter van Niftrik2016-12-28 22:11:53 +0100
committerWalter van Niftrik2016-12-28 22:13:34 +0100
commitcfaf749c60c4c641f11142bde53ce6b183847895 (patch)
tree61b883572e2ac27378f713c0a00590637bf23148 /engines/adl/adl_v4.cpp
parentd7844bbf1790243cc317ff63143a257e08677dae (diff)
downloadscummvm-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.cpp45
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();