aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorPaul Gilbert2015-08-08 11:52:40 -0400
committerPaul Gilbert2015-08-08 11:52:40 -0400
commit328c0d761f68853470ff88abda235c76b7f9532d (patch)
tree8eda3631bacc8f14e0a14407cd909f61a1fabe85 /engines
parente9455457a896aa5020d8e5ec3489b4580c5056b0 (diff)
downloadscummvm-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.cpp6
-rw-r--r--engines/sherlock/tattoo/widget_credits.cpp9
-rw-r--r--engines/sherlock/tattoo/widget_credits.h5
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();