[Scummvm-git-logs] scummvm master -> 811edc9d7ed81db43d1fb17ef18f3cf92d3285ee

sev- sev at scummvm.org
Sun Mar 12 20:27:22 CET 2017


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

Summary:
f802d26fa8 DIRECTOR: Lingo: Fix b_rollOver() implementation
a18805ae77 DIRECTOR: Fix warnings
811edc9d7e DIRECTOR: Implement safety check while Shared Cast loading


Commit: f802d26fa8ee3cec41d46370a0655de9c4a312a8
    https://github.com/scummvm/scummvm/commit/f802d26fa8ee3cec41d46370a0655de9c4a312a8
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2017-03-12T19:17:32+01:00

Commit Message:
DIRECTOR: Lingo: Fix b_rollOver() implementation

Changed paths:
    engines/director/frame.cpp
    engines/director/frame.h
    engines/director/lingo/lingo-builtins.cpp


diff --git a/engines/director/frame.cpp b/engines/director/frame.cpp
index b629e43..f19c322 100644
--- a/engines/director/frame.cpp
+++ b/engines/director/frame.cpp
@@ -1055,4 +1055,13 @@ uint16 Frame::getSpriteIDFromPos(Common::Point pos) {
 	return 0;
 }
 
+bool Frame::checkSpriteIntersection(uint16 spriteId, Common::Point pos) {
+	// Find first from front to back
+	for (int dr = _drawRects.size() - 1; dr >= 0; dr--)
+		if (_drawRects[dr]->spriteId == spriteId && _drawRects[dr]->rect.contains(pos))
+			return true;
+
+	return false;
+}
+
 } // End of namespace Director
diff --git a/engines/director/frame.h b/engines/director/frame.h
index 704319b..575d6fd 100644
--- a/engines/director/frame.h
+++ b/engines/director/frame.h
@@ -119,6 +119,8 @@ public:
 	void readChannel(Common::SeekableSubReadStreamEndian &stream, uint16 offset, uint16 size);
 	void prepareFrame(Score *score);
 	uint16 getSpriteIDFromPos(Common::Point pos);
+	bool checkSpriteIntersection(uint16 spriteId, Common::Point pos);
+
 
 private:
 	void playTransition(Score *score);
diff --git a/engines/director/lingo/lingo-builtins.cpp b/engines/director/lingo/lingo-builtins.cpp
index c94717a..d79b201 100644
--- a/engines/director/lingo/lingo-builtins.cpp
+++ b/engines/director/lingo/lingo-builtins.cpp
@@ -1234,9 +1234,8 @@ void Lingo::b_rollOver(int nargs) {
 	}
 
 	Common::Point pos = g_system->getEventManager()->getMousePos();
-	uint16 spriteId = frame->getSpriteIDFromPos(pos);
 
-	if (spriteId == arg)
+	if (frame->checkSpriteIntersection(arg, pos))
 		d.u.i = 1; // TRUE
 
 	g_lingo->push(d);


Commit: a18805ae773e8b02677abe8b3560785b7c7685c7
    https://github.com/scummvm/scummvm/commit/a18805ae773e8b02677abe8b3560785b7c7685c7
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2017-03-12T19:28:24+01:00

Commit Message:
DIRECTOR: Fix warnings

Changed paths:
    engines/director/score.cpp


diff --git a/engines/director/score.cpp b/engines/director/score.cpp
index 454831a..27943e6 100644
--- a/engines/director/score.cpp
+++ b/engines/director/score.cpp
@@ -568,6 +568,8 @@ void Score::loadCastInto(Sprite *sprite, int castId) {
 	case kCastText:
 		sprite->_textCast = _loadedText->getVal(castId);
 		break;
+	default:
+		warning("Score::loadCastInto(..., %d): Unhandled castType %d", castId, _castTypes[castId]);
 	}
 }
 
@@ -581,6 +583,9 @@ Common::Rect Score::getCastMemberInitialRect(int castId) {
 		return _loadedButtons->getVal(castId)->initialRect;
 	case kCastText:
 		return _loadedText->getVal(castId)->initialRect;
+	default:
+		warning("Score::getCastMemberInitialRect(%d): Unhandled castType %d", castId, _castTypes[castId]);
+		return Common::Rect(0, 0);
 	}
 }
 
@@ -598,6 +603,8 @@ void Score::setCastMemberModified(int castId) {
 	case kCastText:
 		_loadedText->getVal(castId)->modified = 1;
 		break;
+	default:
+		warning("Score::setCastMemberModified(%d): Unhandled castType %d", castId, _castTypes[castId]);
 	}
 }
 


Commit: 811edc9d7ed81db43d1fb17ef18f3cf92d3285ee
    https://github.com/scummvm/scummvm/commit/811edc9d7ed81db43d1fb17ef18f3cf92d3285ee
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2017-03-12T19:57:58+01:00

Commit Message:
DIRECTOR: Implement safety check while Shared Cast loading

Changed paths:
    engines/director/score.cpp


diff --git a/engines/director/score.cpp b/engines/director/score.cpp
index 27943e6..c92c0d0 100644
--- a/engines/director/score.cpp
+++ b/engines/director/score.cpp
@@ -211,7 +211,8 @@ void Score::loadSpriteImages(bool isSharedCast) {
 			if (isSharedCast) {
 				debugC(4, kDebugImages, "Shared cast BMP: id: %d", imgId);
 				pic = _vm->getSharedBMP()->getVal(imgId);
-				pic->seek(0); // TODO: this actually gets re-read every loop... we need to rewind it!
+				if (pic != NULL)
+					pic->seek(0); // TODO: this actually gets re-read every loop... we need to rewind it!
 			} else 	if (_movieArchive->hasResource(MKTAG('B', 'I', 'T', 'D'), imgId)) {
 				pic = _movieArchive->getResource(MKTAG('B', 'I', 'T', 'D'), imgId);
 			}





More information about the Scummvm-git-logs mailing list