[Scummvm-cvs-logs] scummvm master -> 384dad67297188c5d171d0ceff8c5d401ea2ac42

dreammaster dreammaster at scummvm.org
Sat Jun 6 03:17:59 CEST 2015


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
384dad6729 SHERLOCK: Fixes for RT object sequence handling


Commit: 384dad67297188c5d171d0ceff8c5d401ea2ac42
    https://github.com/scummvm/scummvm/commit/384dad67297188c5d171d0ceff8c5d401ea2ac42
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2015-06-05T21:16:52-04:00

Commit Message:
SHERLOCK: Fixes for RT object sequence handling

Changed paths:
    engines/sherlock/objects.cpp
    engines/sherlock/tattoo/tattoo_scene.cpp



diff --git a/engines/sherlock/objects.cpp b/engines/sherlock/objects.cpp
index 6253712..daef54e 100644
--- a/engines/sherlock/objects.cpp
+++ b/engines/sherlock/objects.cpp
@@ -31,7 +31,7 @@ namespace Sherlock {
 #define START_FRAME 0
 
 #define UPPER_LIMIT 0
-#define LOWER_LIMIT CONTROLS_Y
+#define LOWER_LIMIT (IS_SERRATED_SCALPEL ? CONTROLS_Y : SHERLOCK_SCREEN_HEIGHT)
 #define LEFT_LIMIT 0
 #define RIGHT_LIMIT SHERLOCK_SCREEN_WIDTH
 #define NUM_ADJUSTED_WALKS 21
@@ -960,6 +960,8 @@ bool Object::checkEndOfSequence() {
 				screen._backBuffer1.transBlitFrom(*_imageFrame, _position);
 				screen._backBuffer2.transBlitFrom(*_imageFrame, _position);
 				_type = INVALID;
+			} else if (IS_ROSE_TATTOO && _talkSeq && seq == 0) {
+				setObjTalkSequence(_talkSeq);
 			} else {
 				setObjSequence(seq, false);
 			}
@@ -1270,8 +1272,22 @@ void Object::adjustObject() {
 	if (_type == REMOVE)
 		return;
 
+	// Move the object's position
 	_position += _delta;
 
+	if (IS_ROSE_TATTOO && (_delta.x || _delta.y)) {
+		int t;
+		_noShapeSize.x += _delta.x;
+		t = _noShapeSize.x / (FIXED_INT_MULTIPLIER / 10);
+		_noShapeSize.x -= t * (FIXED_INT_MULTIPLIER / 10);
+		_position.x += t;
+
+		_noShapeSize.y += _delta.y;
+		t = _noShapeSize.y / (FIXED_INT_MULTIPLIER / 10);
+		_noShapeSize.y -= t * (FIXED_INT_MULTIPLIER / 10);
+		_position.y += t;
+	}
+
 	if (_position.y > LOWER_LIMIT)
 		_position.y = LOWER_LIMIT;
 
diff --git a/engines/sherlock/tattoo/tattoo_scene.cpp b/engines/sherlock/tattoo/tattoo_scene.cpp
index 5f2e198..904d87c 100644
--- a/engines/sherlock/tattoo/tattoo_scene.cpp
+++ b/engines/sherlock/tattoo/tattoo_scene.cpp
@@ -387,8 +387,6 @@ void TattooScene::doBgAnim() {
 
 	doBgAnimCheckCursor();
 
-
-	screen.setDisplayBounds(Common::Rect(0, 0, SHERLOCK_SCREEN_WIDTH, SHERLOCK_SCENE_HEIGHT));
 	talk._talkToAbort = false;
 
 	// Check the characters and sprites for updates
@@ -402,6 +400,10 @@ void TattooScene::doBgAnim() {
 			_bgShapes[idx].checkObject();
 	}
 
+	// If one of the objects has signalled a call to a talk file, to go to another scene, exit immediately
+	if (_goToScene != -1)
+		return;
+
 	// Erase any affected background areas
 	doBgAnimEraseBackground();
 






More information about the Scummvm-git-logs mailing list