aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEugene Sandulenko2019-12-25 14:52:13 +0100
committerEugene Sandulenko2019-12-25 14:52:13 +0100
commit197bc172164152a7e3af4f7048a2c0ef8fc9bf3e (patch)
tree7b5689d1792b765f5e7f2100149b5c9b1e479692
parent3f392ca564be429715db75e89803dd6aa431798e (diff)
downloadscummvm-rg350-197bc172164152a7e3af4f7048a2c0ef8fc9bf3e.tar.gz
scummvm-rg350-197bc172164152a7e3af4f7048a2c0ef8fc9bf3e.tar.bz2
scummvm-rg350-197bc172164152a7e3af4f7048a2c0ef8fc9bf3e.zip
DIRECTOR: Correctly use ink information for sprites
-rw-r--r--engines/director/cast.cpp3
-rw-r--r--engines/director/cast.h1
-rw-r--r--engines/director/frame.cpp3
-rw-r--r--engines/director/sprite.h22
-rw-r--r--engines/director/types.h21
5 files changed, 27 insertions, 23 deletions
diff --git a/engines/director/cast.cpp b/engines/director/cast.cpp
index 804bd58a8a..7c7604b21f 100644
--- a/engines/director/cast.cpp
+++ b/engines/director/cast.cpp
@@ -251,6 +251,8 @@ void TextCast::setText(const char *text) {
ShapeCast::ShapeCast(Common::ReadStreamEndian &stream, uint16 version) {
byte flags, unk1;
+ _ink = kInkTypeCopy;
+
if (version < 4) {
flags = stream.readByte();
unk1 = stream.readByte();
@@ -260,6 +262,7 @@ ShapeCast::ShapeCast(Common::ReadStreamEndian &stream, uint16 version) {
_fgCol = (127 - stream.readByte()) & 0xff; // -128 -> 0, 127 -> 256
_bgCol = (127 - stream.readByte()) & 0xff;
_fillType = stream.readByte();
+ _ink = static_cast<InkType>(_fillType & 0x3f);
_lineThickness = stream.readByte();
_lineDirection = stream.readByte();
} else {
diff --git a/engines/director/cast.h b/engines/director/cast.h
index 66cb77ffe7..9a407e5be6 100644
--- a/engines/director/cast.h
+++ b/engines/director/cast.h
@@ -79,6 +79,7 @@ public:
byte _fillType;
byte _lineThickness;
byte _lineDirection;
+ InkType _ink;
};
class TextCast : public Cast {
diff --git a/engines/director/frame.cpp b/engines/director/frame.cpp
index 8bd1f45535..a50933fbc5 100644
--- a/engines/director/frame.cpp
+++ b/engines/director/frame.cpp
@@ -588,6 +588,7 @@ void Frame::renderSprites(Graphics::ManagedSurface &surface, bool renderTrail) {
case kRectangleSprite:
case kOutlinedRectangleSprite: // this is actually a mouse-over shape? I don't think it's a real button.
case kCastMemberSprite: // Face kit D3
+ case kLineTopBottomSprite:
castType = kCastShape;
break;
case kTextSprite:
@@ -655,6 +656,7 @@ void Frame::renderShape(Graphics::ManagedSurface &surface, uint16 spriteId) {
if (sp->_shapeCast != NULL) {
sp->_foreColor = sp->_shapeCast->_fgCol;
sp->_backColor = sp->_shapeCast->_bgCol;
+ sp->_ink = sp->_shapeCast->_ink;
}
Common::Rect shapeRect = Common::Rect(sp->_startPoint.x,
@@ -668,7 +670,6 @@ void Frame::renderShape(Graphics::ManagedSurface &surface, uint16 spriteId) {
tmpSurface.fillRect(Common::Rect(shapeRect.width(), shapeRect.height()), (_vm->getCurrentScore()->_currentMouseDownSpriteId == spriteId ? 0 : 0xff));
//tmpSurface.frameRect(Common::Rect(shapeRect.width(), shapeRect.height()), 0);
// TODO: don't override, work out how to display correctly.
- sp->_ink = kInkTypeReverse;
} else {
// No minus one on the pattern here! MacPlotData will do that for us!
Graphics::MacPlotData pd(&tmpSurface, &_vm->getPatterns(), sp->_castId, 1, sp->_backColor);
diff --git a/engines/director/sprite.h b/engines/director/sprite.h
index c7c2ad091a..f37f1c84ea 100644
--- a/engines/director/sprite.h
+++ b/engines/director/sprite.h
@@ -30,28 +30,6 @@ class ButtonCast;
class ShapeCast;
class TextCast;
-enum InkType {
- kInkTypeCopy,
- kInkTypeTransparent,
- kInkTypeReverse,
- kInkTypeGhost,
- kInkTypeNotCopy,
- kInkTypeNotTrans,
- kInkTypeNotReverse,
- kInkTypeNotGhost,
- kInkTypeMatte,
- kInkTypeMask,
- //10-31 Not used (Lingo in a Nutshell)
- kInkTypeBlend = 32,
- kInkTypeAddPin,
- kInkTypeAdd,
- kInkTypeSubPin,
- kInkTypeBackgndTrans,
- kInkTypeLight,
- kInkTypeSub,
- kInkTypeDark
-};
-
enum SpritePosition {
kSpritePositionUnk1 = 0,
kSpritePositionEnabled,
diff --git a/engines/director/types.h b/engines/director/types.h
index 708718b9b9..dad660d08c 100644
--- a/engines/director/types.h
+++ b/engines/director/types.h
@@ -113,6 +113,27 @@ enum SpriteType {
kDirMovieSprite = 18
};
+enum InkType {
+ kInkTypeCopy,
+ kInkTypeTransparent,
+ kInkTypeReverse,
+ kInkTypeGhost,
+ kInkTypeNotCopy,
+ kInkTypeNotTrans,
+ kInkTypeNotReverse,
+ kInkTypeNotGhost,
+ kInkTypeMatte,
+ kInkTypeMask,
+ //10-31 Not used (Lingo in a Nutshell)
+ kInkTypeBlend = 32,
+ kInkTypeAddPin,
+ kInkTypeAdd,
+ kInkTypeSubPin,
+ kInkTypeBackgndTrans,
+ kInkTypeLight,
+ kInkTypeSub,
+ kInkTypeDark
+};
const char *scriptType2str(ScriptType scr);