aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEugene Sandulenko2019-12-27 22:43:42 +0100
committerEugene Sandulenko2019-12-27 22:43:42 +0100
commiteb02162def9347d6e209bb52f00187b2109e1cb5 (patch)
treee02c6788afb35dccba03a03a47bb20ba4348fc59
parent29a07afc58bb02b04c5f9dcbc7ac6cb4095accba (diff)
downloadscummvm-rg350-eb02162def9347d6e209bb52f00187b2109e1cb5.tar.gz
scummvm-rg350-eb02162def9347d6e209bb52f00187b2109e1cb5.tar.bz2
scummvm-rg350-eb02162def9347d6e209bb52f00187b2109e1cb5.zip
DIRECTOR: LINGO: Added manipulation of sprite patterns.
TODO: Figure out where in data it is stored.
-rw-r--r--engines/director/frame.cpp2
-rw-r--r--engines/director/lingo/lingo-the.cpp6
-rw-r--r--engines/director/sprite.cpp1
-rw-r--r--engines/director/sprite.h2
4 files changed, 10 insertions, 1 deletions
diff --git a/engines/director/frame.cpp b/engines/director/frame.cpp
index f7a3e84daf..2fcb50f1f9 100644
--- a/engines/director/frame.cpp
+++ b/engines/director/frame.cpp
@@ -674,7 +674,7 @@ void Frame::renderShape(Graphics::ManagedSurface &surface, uint16 spriteId) {
// No minus one on the pattern here! MacPlotData will do that for us!
//Graphics::MacPlotData pd(&tmpSurface, &_vm->getPatterns(), 1, 1, sp->_backColor);
- Graphics::MacPlotData pd(&tmpSurface, &_vm->getPatterns(), sp->_castId, sp->_lineSize + 1, sp->_backColor);
+ Graphics::MacPlotData pd(&tmpSurface, &_vm->getPatterns(), sp->_pattern, sp->_lineSize + 1, sp->_backColor);
Common::Rect fillRect(shapeRect.width(), shapeRect.height());
switch (sp->_spriteType) {
diff --git a/engines/director/lingo/lingo-the.cpp b/engines/director/lingo/lingo-the.cpp
index 01640653e9..56dc3fe918 100644
--- a/engines/director/lingo/lingo-the.cpp
+++ b/engines/director/lingo/lingo-the.cpp
@@ -417,6 +417,9 @@ void Lingo::setTheSprite(Datum &id1, int field, Datum &d) {
case kTheEditableText:
sprite->_editableText = *d.toString();
break;
+ case kThePattern:
+ sprite->_pattern = d.u.i;
+ break;
default:
warning("Lingo::setTheSprite(): Unprocessed setting field %d of sprite", field);
}
@@ -619,6 +622,9 @@ Datum Lingo::getTheSprite(Datum &id1, int field) {
d.toString();
d.u.s = &sprite->_editableText;
break;
+ case kThePattern:
+ d.u.i = sprite->_pattern;
+ break;
default:
warning("Lingo::getTheSprite(): Unprocessed getting field %d of sprite", field);
d.type = VOID;
diff --git a/engines/director/sprite.cpp b/engines/director/sprite.cpp
index ac355fbe91..0148c6665e 100644
--- a/engines/director/sprite.cpp
+++ b/engines/director/sprite.cpp
@@ -39,6 +39,7 @@ Sprite::Sprite() {
_castId = 0;
_backColor = 255;
_foreColor = 0;
+ _pattern = 0;
_left = 0;
_right = 0;
_top = 0;
diff --git a/engines/director/sprite.h b/engines/director/sprite.h
index f37f1c84ea..f918a3a39e 100644
--- a/engines/director/sprite.h
+++ b/engines/director/sprite.h
@@ -91,6 +91,8 @@ public:
byte _moveable;
byte _backColor;
byte _foreColor;
+ uint16 _pattern;
+
uint16 _left;
uint16 _right;
uint16 _top;