aboutsummaryrefslogtreecommitdiff
path: root/engines/director/lingo
diff options
context:
space:
mode:
authorEugene Sandulenko2019-12-30 13:16:10 +0100
committerEugene Sandulenko2019-12-30 13:16:10 +0100
commit6810957e6db2e9f72170edbebfb11830fe519019 (patch)
treede673194832c5d3d3a4d9618f473c5843d1ace76 /engines/director/lingo
parentb6d73f54dd2c888a5ef575e6e333dc7dac2078fe (diff)
downloadscummvm-rg350-6810957e6db2e9f72170edbebfb11830fe519019.tar.gz
scummvm-rg350-6810957e6db2e9f72170edbebfb11830fe519019.tar.bz2
scummvm-rg350-6810957e6db2e9f72170edbebfb11830fe519019.zip
DIRECTOR: Simplified cast management
Diffstat (limited to 'engines/director/lingo')
-rw-r--r--engines/director/lingo/lingo-code.cpp7
-rw-r--r--engines/director/lingo/lingo-the.cpp16
-rw-r--r--engines/director/lingo/lingo.cpp7
3 files changed, 16 insertions, 14 deletions
diff --git a/engines/director/lingo/lingo-code.cpp b/engines/director/lingo/lingo-code.cpp
index 57eae5112c..c4ee5feeb1 100644
--- a/engines/director/lingo/lingo-code.cpp
+++ b/engines/director/lingo/lingo-code.cpp
@@ -337,8 +337,9 @@ void Lingo::c_assign() {
}
if (d1.type == REFERENCE) {
- if (!g_director->getCurrentScore()->_loadedText->contains(d1.u.i)) {
- if (!g_director->getCurrentScore()->_loadedText->contains(d1.u.i - 1024)) {
+ Score *score = g_director->getCurrentScore();
+ if (!score->_loadedCast->contains(d1.u.i)) {
+ if (!score->_loadedCast->contains(d1.u.i - score->_castIDoffset)) {
warning("c_assign: Unknown REFERENCE %d", d1.u.i);
g_lingo->pushVoid();
return;
@@ -349,7 +350,7 @@ void Lingo::c_assign() {
d2.toString();
- g_director->getCurrentScore()->_loadedText->getVal(d1.u.i)->setText(d2.u.s->c_str());
+ ((TextCast *)score->_loadedCast->getVal(d1.u.i))->setText(d2.u.s->c_str());
return;
}
diff --git a/engines/director/lingo/lingo-the.cpp b/engines/director/lingo/lingo-the.cpp
index a987f9c3c2..09a9fc8a55 100644
--- a/engines/director/lingo/lingo-the.cpp
+++ b/engines/director/lingo/lingo-the.cpp
@@ -704,7 +704,7 @@ Datum Lingo::getTheCast(Datum &id1, int field) {
return d;
}
- ShapeCast *shape = _vm->getCurrentScore()->_loadedShapes->getVal(id);
+ ShapeCast *shape = (ShapeCast *)_vm->getCurrentScore()->_loadedCast->getVal(id);
d.u.i = shape->_bgCol;
}
break;
@@ -716,7 +716,7 @@ Datum Lingo::getTheCast(Datum &id1, int field) {
return d;
}
- ShapeCast *shape = _vm->getCurrentScore()->_loadedShapes->getVal(id);
+ ShapeCast *shape = (ShapeCast *)_vm->getCurrentScore()->_loadedCast->getVal(id);
d.u.i = shape->_fgCol;
}
break;
@@ -797,7 +797,7 @@ void Lingo::setTheCast(Datum &id1, int field, Datum &d) {
if (castType != kCastShape) {
warning("Lingo::setTheCast(): Field %d of cast %d not found", field, id);
}
- ShapeCast *shape = score->_loadedShapes->getVal(id);
+ ShapeCast *shape = (ShapeCast *)score->_loadedCast->getVal(id);
d.toInt();
shape->_bgCol = d.u.i;
@@ -810,19 +810,19 @@ void Lingo::setTheCast(Datum &id1, int field, Datum &d) {
warning("Lingo::setTheCast(): Field %d of cast %d not found", field, id);
return;
}
- ShapeCast *shape = score->_loadedShapes->getVal(id);
+ ShapeCast *shape = (ShapeCast *)score->_loadedCast->getVal(id);
shape->_fgCol = d.u.i;
shape->_modified = 1;
}
break;
case kTheText:
if (castType == kCastText) {
- if (!score->_loadedText->contains(id)) {
+ if (score->_loadedCast->contains(id) && score->_loadedCast->getVal(id)->_type == kCastText) {
+ d.toString();
+ ((TextCast *)score->_loadedCast->getVal(id))->setText(d.u.s->c_str());
+ } else {
warning("Lingo::setTheCast(): Unknown STXT cast id %d", id);
return;
- } else {
- d.toString();
- score->_loadedText->getVal(id)->setText(d.u.s->c_str());
}
} else {
warning("Lingo::setTheCast(): Unprocessed setting text of cast %d type %d", id, castType);
diff --git a/engines/director/lingo/lingo.cpp b/engines/director/lingo/lingo.cpp
index 9c94bc6a96..3f9f4fc204 100644
--- a/engines/director/lingo/lingo.cpp
+++ b/engines/director/lingo/lingo.cpp
@@ -378,9 +378,10 @@ Common::String *Datum::toString() {
case REFERENCE:
{
int idx = u.i;
+ Score *score = g_director->getCurrentScore();
- if (!g_director->getCurrentScore()->_loadedText->contains(idx)) {
- if (!g_director->getCurrentScore()->_loadedText->contains(idx - 1024)) {
+ if (!score->_loadedCast->contains(idx)) {
+ if (!score->_loadedCast->contains(idx - score->_castIDoffset)) {
warning("toString(): Unknown REFERENCE %d", idx);
*s = "";
break;
@@ -389,7 +390,7 @@ Common::String *Datum::toString() {
}
}
- *s = g_director->getCurrentScore()->_loadedText->getVal(idx)->_ptext;
+ *s = ((TextCast *)score->_loadedCast->getVal(idx))->_ptext;
}
break;
default: