diff options
Diffstat (limited to 'engines')
| -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;  	}  | 
