diff options
Diffstat (limited to 'engines/glk/quest')
-rw-r--r-- | engines/glk/quest/geas_glk.cpp | 3 | ||||
-rw-r--r-- | engines/glk/quest/quest.cpp | 13 | ||||
-rw-r--r-- | engines/glk/quest/quest.h | 5 |
3 files changed, 20 insertions, 1 deletions
diff --git a/engines/glk/quest/geas_glk.cpp b/engines/glk/quest/geas_glk.cpp index 6b5f8b1b3d..a6324fa197 100644 --- a/engines/glk/quest/geas_glk.cpp +++ b/engines/glk/quest/geas_glk.cpp @@ -63,7 +63,8 @@ void draw_banner() { } void glk_put_cstring(const char *s) { - g_vm->glk_put_string(s); + if (!g_vm->loadingSavegame()) + g_vm->glk_put_string(s); } GeasResult GeasGlkInterface::print_normal(const String &s) { diff --git a/engines/glk/quest/quest.cpp b/engines/glk/quest/quest.cpp index 839f58d0d1..06e4c96a65 100644 --- a/engines/glk/quest/quest.cpp +++ b/engines/glk/quest/quest.cpp @@ -55,7 +55,20 @@ void Quest::playGame() { char cur_buf[1024]; char buf[200]; + // Check for savegame to load immediate + _saveSlot = ConfMan.hasKey("save_slot") ? ConfMan.getInt("save_slot") : -1; + + // Set initial game state _runner->set_game(String(getFilename().c_str())); + + if (_saveSlot != -1) { + int saveSlot = _saveSlot; + _saveSlot = -1; + + if (loadGameState(saveSlot).getCode() == Common::kNoError) + _runner->run_command("look"); + } + banner = _runner->get_banner(); draw_banner(); diff --git a/engines/glk/quest/quest.h b/engines/glk/quest/quest.h index ed8d60eb5f..ab6e8b8d9d 100644 --- a/engines/glk/quest/quest.h +++ b/engines/glk/quest/quest.h @@ -95,6 +95,11 @@ public: * Savegames aren't supported for Quest games */ virtual Common::Error writeGameData(Common::WriteStream *ws) override; + + /** + * Returns true if a savegame is being loaded directly from the ScummVM launcher + */ + bool loadingSavegame() const { return _saveSlot != -1; } }; extern Quest *g_vm; |