diff options
author | Paul Gilbert | 2015-08-08 11:52:40 -0400 |
---|---|---|
committer | Paul Gilbert | 2015-08-08 11:52:40 -0400 |
commit | 328c0d761f68853470ff88abda235c76b7f9532d (patch) | |
tree | 8eda3631bacc8f14e0a14407cd909f61a1fabe85 /engines | |
parent | e9455457a896aa5020d8e5ec3489b4580c5056b0 (diff) | |
download | scummvm-rg350-328c0d761f68853470ff88abda235c76b7f9532d.tar.gz scummvm-rg350-328c0d761f68853470ff88abda235c76b7f9532d.tar.bz2 scummvm-rg350-328c0d761f68853470ff88abda235c76b7f9532d.zip |
SHERLOCK: RT: Fix loading savegames when credits are active
Diffstat (limited to 'engines')
-rw-r--r-- | engines/sherlock/tattoo/tattoo_scene.cpp | 6 | ||||
-rw-r--r-- | engines/sherlock/tattoo/widget_credits.cpp | 9 | ||||
-rw-r--r-- | engines/sherlock/tattoo/widget_credits.h | 5 |
3 files changed, 17 insertions, 3 deletions
diff --git a/engines/sherlock/tattoo/tattoo_scene.cpp b/engines/sherlock/tattoo/tattoo_scene.cpp index 3708eb08e5..20e495bb01 100644 --- a/engines/sherlock/tattoo/tattoo_scene.cpp +++ b/engines/sherlock/tattoo/tattoo_scene.cpp @@ -787,10 +787,14 @@ int TattooScene::findBgShape(const Common::Point &pt) { void TattooScene::synchronize(Serializer &s) { TattooEngine &vm = *(TattooEngine *)_vm; + TattooUserInterface &ui = *(TattooUserInterface *)_vm->_ui; Scene::synchronize(s); - if (s.isLoading()) + if (s.isLoading()) { + // In case we were showing the intro prologue or the ending credits, stop them vm._runningProlog = false; + ui._creditsWidget.close(); + } } int TattooScene::closestZone(const Common::Point &pt) { diff --git a/engines/sherlock/tattoo/widget_credits.cpp b/engines/sherlock/tattoo/widget_credits.cpp index dcb73b5adb..b8e297709f 100644 --- a/engines/sherlock/tattoo/widget_credits.cpp +++ b/engines/sherlock/tattoo/widget_credits.cpp @@ -113,6 +113,11 @@ void WidgetCredits::initCredits() { delete stream; } +void WidgetCredits::close() { + _creditsActive = false; + _creditLines.clear(); +} + void WidgetCredits::drawCredits() { Screen &screen = *_vm->_screen; Common::Rect screenRect(0, 0, screen.w(), screen.h()); @@ -199,9 +204,9 @@ void WidgetCredits::eraseCredits() { } if (_creditLines[_creditLines.size() - 1]._position.y < -_creditSpeed) { + // Completely finished credits display. Note that the credits will still remain flagged as active, + // so that the user interface knows not to allow and standard scene interaction _creditLines.clear(); - _creditsActive = false; - _vm->setFlags(!3000); } } diff --git a/engines/sherlock/tattoo/widget_credits.h b/engines/sherlock/tattoo/widget_credits.h index 5c0504944e..d31c6ac216 100644 --- a/engines/sherlock/tattoo/widget_credits.h +++ b/engines/sherlock/tattoo/widget_credits.h @@ -62,6 +62,11 @@ public: void initCredits(); /** + * Closes down credits display + */ + void close(); + + /** * Draw credits on the screen */ void drawCredits(); |