[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