diff options
author | Bastien Bouclet | 2018-06-21 21:16:25 +0200 |
---|---|---|
committer | Bastien Bouclet | 2018-06-29 13:31:54 +0200 |
commit | e7cb40dde57f5331db014eb61ff115baa7917148 (patch) | |
tree | 7d464d13f8141696d692d10977bb20eacfaa52c2 /engines/mohawk/riven.cpp | |
parent | 45ab57209f965a4804286e072f181bf98b3af6b4 (diff) | |
download | scummvm-rg350-e7cb40dde57f5331db014eb61ff115baa7917148.tar.gz scummvm-rg350-e7cb40dde57f5331db014eb61ff115baa7917148.tar.bz2 scummvm-rg350-e7cb40dde57f5331db014eb61ff115baa7917148.zip |
MOHAWK: RIVEN: Use an in-game thumbnail when saving from the menu
Instead of a thumbnail of the menu itself.
Diffstat (limited to 'engines/mohawk/riven.cpp')
-rw-r--r-- | engines/mohawk/riven.cpp | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/engines/mohawk/riven.cpp b/engines/mohawk/riven.cpp index 9b9080da8a..5faebf8f1e 100644 --- a/engines/mohawk/riven.cpp +++ b/engines/mohawk/riven.cpp @@ -26,6 +26,7 @@ #include "common/keyboard.h" #include "common/translation.h" #include "common/system.h" +#include "graphics/scaler.h" #include "gui/saveload.h" #include "gui/message.h" @@ -337,6 +338,9 @@ void MohawkEngine_Riven::goToMainMenu() { return; } + _menuTumbnail.reset(new Graphics::Surface()); + createThumbnailFromScreen(_menuTumbnail.get()); + changeToStack(kStackAspit); changeToCard(1); } @@ -348,6 +352,7 @@ void MohawkEngine_Riven::resumeFromMainMenu() { changeToCard(_menuSavedCard); _menuSavedStack = -1; _menuSavedCard = -1; + _menuTumbnail.reset(); } bool MohawkEngine_Riven::isGameStarted() const { @@ -584,11 +589,14 @@ void MohawkEngine_Riven::startNewGame() { // Clear all the state data _menuSavedStack = -1; _menuSavedCard = -1; + _menuTumbnail.reset(); _vars.clear(); initVars(); _zipModeData.clear(); + + setTotalPlayTime(0); } void MohawkEngine_Riven::runLoadDialog() { @@ -627,6 +635,7 @@ Common::Error MohawkEngine_Riven::loadGameState(int slot) { if (loadError.getCode() == Common::kNoError) { _menuSavedStack = -1; _menuSavedCard = -1; + _menuTumbnail.reset(); } return loadError; @@ -649,7 +658,8 @@ Common::Error MohawkEngine_Riven::saveGameState(int slot, const Common::String & _vars["CurrentCardID"] = _menuSavedCard; } - Common::Error error = _saveLoad->saveGame(slot, desc, false); + const Graphics::Surface *thumbnail = _menuSavedStack != -1 ? _menuTumbnail.get() : nullptr; + Common::Error error = _saveLoad->saveGame(slot, desc, thumbnail, false); if (_menuSavedStack != -1) { _vars["CurrentStackID"] = 1; @@ -681,7 +691,8 @@ void MohawkEngine_Riven::tryAutoSaving() { return; // Can't autosave ever, try again after the next autosave delay } - Common::Error saveError = _saveLoad->saveGame(RivenSaveLoad::kAutoSaveSlot, "Autosave", true); + const Graphics::Surface *thumbnail = _menuSavedStack != -1 ? _menuTumbnail.get() : nullptr; + Common::Error saveError = _saveLoad->saveGame(RivenSaveLoad::kAutoSaveSlot, "Autosave", thumbnail, true); if (saveError.getCode() != Common::kNoError) warning("Attempt to autosave has failed."); } |