diff options
author | Eugene Sandulenko | 2019-12-30 13:16:10 +0100 |
---|---|---|
committer | Eugene Sandulenko | 2019-12-30 13:16:10 +0100 |
commit | 6810957e6db2e9f72170edbebfb11830fe519019 (patch) | |
tree | de673194832c5d3d3a4d9618f473c5843d1ace76 /engines/director/lingo | |
parent | b6d73f54dd2c888a5ef575e6e333dc7dac2078fe (diff) | |
download | scummvm-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.cpp | 7 | ||||
-rw-r--r-- | engines/director/lingo/lingo-the.cpp | 16 | ||||
-rw-r--r-- | engines/director/lingo/lingo.cpp | 7 |
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: |