aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorEugene Sandulenko2016-08-18 10:28:03 +0200
committerEugene Sandulenko2016-08-18 20:46:43 +0200
commit8e3681dda5519515783d285696c9fe5434d71941 (patch)
tree23c38e1dee9b6df21f501ec8657e529e889b2a28 /engines
parent6a622b07eea5af8144cb9095249ac237de507c1c (diff)
downloadscummvm-rg350-8e3681dda5519515783d285696c9fe5434d71941.tar.gz
scummvm-rg350-8e3681dda5519515783d285696c9fe5434d71941.tar.bz2
scummvm-rg350-8e3681dda5519515783d285696c9fe5434d71941.zip
DIRECTOR: Lingo: Handle OBJECT symbols properly
Diffstat (limited to 'engines')
-rw-r--r--engines/director/lingo/lingo-code.cpp6
-rw-r--r--engines/director/lingo/lingo.cpp2
2 files changed, 8 insertions, 0 deletions
diff --git a/engines/director/lingo/lingo-code.cpp b/engines/director/lingo/lingo-code.cpp
index a39eb61a05..014cec5a78 100644
--- a/engines/director/lingo/lingo-code.cpp
+++ b/engines/director/lingo/lingo-code.cpp
@@ -170,6 +170,9 @@ void Lingo::c_printtop(void) {
case SYMBOL:
warning("%s", d.type2str(true));
break;
+ case OBJECT:
+ warning("#%s", d.u.s->c_str());
+ break;
default:
warning("--unknown--");
}
@@ -263,8 +266,11 @@ void Lingo::c_assign() {
delete d2.u.arr;
} else if (d2.type == SYMBOL) {
d1.u.sym->u.i = d2.u.i;
+ } else if (d2.type == OBJECT) {
+ d1.u.sym->u.s = d2.u.s;
} else {
warning("c_assign: unhandled type: %s", d2.type2str());
+ d1.u.sym->u.s = d2.u.s;
}
d1.u.sym->type = d2.type;
diff --git a/engines/director/lingo/lingo.cpp b/engines/director/lingo/lingo.cpp
index 9aea9593e9..7f0fd4d8b5 100644
--- a/engines/director/lingo/lingo.cpp
+++ b/engines/director/lingo/lingo.cpp
@@ -313,6 +313,8 @@ const char *Datum::type2str(bool isk) {
return isk ? "#point" : "POINT";
case SYMBOL:
return isk ? "#symbol" : "SYMBOL";
+ case OBJECT:
+ return isk ? "#object" : "OBJECT";
default:
snprintf(res, 20, "-- (%d) --", type);
return res;