aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Gilbert2015-07-19 20:12:08 -0400
committerPaul Gilbert2015-07-19 20:12:08 -0400
commit097b52b66180712fd9e285dd62013bc9533b2be9 (patch)
tree4fbec01a8018bdb9a052e04076919f42c6faafc2
parent87a91e69e6f9e2caa40b448e386e0b4adcb8393e (diff)
downloadscummvm-rg350-097b52b66180712fd9e285dd62013bc9533b2be9.tar.gz
scummvm-rg350-097b52b66180712fd9e285dd62013bc9533b2be9.tar.bz2
scummvm-rg350-097b52b66180712fd9e285dd62013bc9533b2be9.zip
SHERLOCK: RT: Fix loading saves where the screen is scrolled
-rw-r--r--engines/sherlock/scene.cpp11
1 files changed, 10 insertions, 1 deletions
diff --git a/engines/sherlock/scene.cpp b/engines/sherlock/scene.cpp
index a33574030f..328bf647d4 100644
--- a/engines/sherlock/scene.cpp
+++ b/engines/sherlock/scene.cpp
@@ -1210,6 +1210,15 @@ void Scene::transitionToScene() {
// Standard info, so set it
people[HOLMES]._position = hSavedPos;
people[HOLMES]._sequenceNumber = hSavedFacing;
+
+ if (saves._justLoaded && IS_ROSE_TATTOO) {
+ Tattoo::TattooUserInterface &ui = *(Tattoo::TattooUserInterface *)_vm->_ui;
+
+ // For scrolling scenes, make sure the player is on-screen
+ ui._targetScroll.x = CLIP(people[HOLMES]._position.x / FIXED_INT_MULTIPLIER -
+ SHERLOCK_SCREEN_WIDTH / 8 - 250, 0, screen._backBuffer1.w() - SHERLOCK_SCREEN_WIDTH);
+ screen._currentScroll = ui._targetScroll;
+ }
} else {
// It's canimation information
cAnimNum = hSavedFacing - 101;
@@ -1283,7 +1292,7 @@ void Scene::transitionToScene() {
screen.fadeIntoScreen3DO(3);
}
} else {
- screen.blitFrom(screen._backBuffer1);
+ screen.slamArea(screen._currentScroll.x, screen._currentScroll.y, SHERLOCK_SCREEN_WIDTH, SHERLOCK_SCREEN_HEIGHT);
}
screen.update();