diff options
-rw-r--r-- | engines/sherlock/objects.cpp | 2 | ||||
-rw-r--r-- | engines/sherlock/scene.cpp | 5 | ||||
-rw-r--r-- | engines/sherlock/screen.cpp | 8 | ||||
-rw-r--r-- | engines/sherlock/user_interface.cpp | 6 |
4 files changed, 14 insertions, 7 deletions
diff --git a/engines/sherlock/objects.cpp b/engines/sherlock/objects.cpp index cdd397f23c..7e72eff1e9 100644 --- a/engines/sherlock/objects.cpp +++ b/engines/sherlock/objects.cpp @@ -613,7 +613,7 @@ void Object::checkObject(Object &o) { if (pt.y > 128) pt.y = (pt.y - 128) * -1; else - pt.y; + pt.y--; _delta = pt; _frameNumber += 2; diff --git a/engines/sherlock/scene.cpp b/engines/sherlock/scene.cpp index 1b7a1a9cd2..b00e07a8a7 100644 --- a/engines/sherlock/scene.cpp +++ b/engines/sherlock/scene.cpp @@ -1330,7 +1330,8 @@ void Scene::doBgAnim() { )); } else { screen.flushImage(people[AL]._imageFrame, - Common::Point(people[AL]._position.x / 100, people[AL]._position.y / 100), + Common::Point(people[AL]._position.x / 100, + people[AL]._position.y / 100 - people[AL].frameHeight()), &people[AL]._oldPosition.x, &people[AL]._oldPosition.y, &people[AL]._oldSize.x, &people[AL]._oldSize.y); } @@ -1370,8 +1371,10 @@ void Scene::doBgAnim() { screen.slamArea(o._position.x, o._position.y, o._oldSize.x, o._oldSize.y); screen.slamArea(o._oldPosition.x, o._oldPosition.y, o._oldSize.x, o._oldSize.y); } else if (o._type == HIDE_SHAPE) { + // Hiding shape, so flush it out and mark it as hidden screen.flushImage(o._imageFrame, o._position, &o._oldPosition.x, &o._oldPosition.y, &o._oldSize.x, &o._oldSize.y); + o._type = HIDDEN; } } } diff --git a/engines/sherlock/screen.cpp b/engines/sherlock/screen.cpp index 7c222f3e24..098d43e827 100644 --- a/engines/sherlock/screen.cpp +++ b/engines/sherlock/screen.cpp @@ -287,8 +287,12 @@ void Screen::flushImage(ImageFrame *frame, const Common::Point &pt, // See if the areas of the old and new overlap, and if so combine the areas if (newBounds.intersects(oldBounds)) { - newBounds.extend(oldBounds); - slamRect(newBounds); + Common::Rect mergedBounds = newBounds; + mergedBounds.extend(oldBounds); + mergedBounds.right += 1; + mergedBounds.bottom += 1; + + slamRect(mergedBounds); } else { // The two areas are independent, so copy them both slamRect(newBounds); diff --git a/engines/sherlock/user_interface.cpp b/engines/sherlock/user_interface.cpp index fc94cc5a5c..b0ac0b169b 100644 --- a/engines/sherlock/user_interface.cpp +++ b/engines/sherlock/user_interface.cpp @@ -176,7 +176,7 @@ void UserInterface::handleInput() { _help = _oldHelp; } - if (_bgFound != _oldBgFound) { + if (_bgFound != _oldBgFound || _oldBgFound == -1) { _infoFlag = true; clearInfo(); @@ -438,8 +438,8 @@ void UserInterface::toggleButton(int num) { */ void UserInterface::clearInfo() { if (_infoFlag) { - _vm->_screen->bar(Common::Rect(16, INFO_LINE, SHERLOCK_SCREEN_WIDTH - 20, - INFO_LINE + 9), INFO_BLACK); + _vm->_screen->bar(Common::Rect(16, INFO_LINE, SHERLOCK_SCREEN_WIDTH - 19, + INFO_LINE + 10), INFO_BLACK); _infoFlag = false; _oldLook = -1; } |