diff options
author | Paul Gilbert | 2015-07-19 20:12:08 -0400 |
---|---|---|
committer | Paul Gilbert | 2015-07-19 20:12:08 -0400 |
commit | 097b52b66180712fd9e285dd62013bc9533b2be9 (patch) | |
tree | 4fbec01a8018bdb9a052e04076919f42c6faafc2 /engines | |
parent | 87a91e69e6f9e2caa40b448e386e0b4adcb8393e (diff) | |
download | scummvm-rg350-097b52b66180712fd9e285dd62013bc9533b2be9.tar.gz scummvm-rg350-097b52b66180712fd9e285dd62013bc9533b2be9.tar.bz2 scummvm-rg350-097b52b66180712fd9e285dd62013bc9533b2be9.zip |
SHERLOCK: RT: Fix loading saves where the screen is scrolled
Diffstat (limited to 'engines')
-rw-r--r-- | engines/sherlock/scene.cpp | 11 |
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(); |