mirror of
https://github.com/scummvm/scummvm.git
synced 2026-06-20 05:45:29 +00:00
DIRECTOR: LINGO: Support getting object fields
This commit is contained in:
@@ -462,6 +462,14 @@ void Lingo::c_theentityassign() {
|
||||
g_lingo->setTheEntity(entity, id, field, d);
|
||||
}
|
||||
|
||||
void Lingo::c_objectfieldpush() {
|
||||
Common::String object(g_lingo->readString());
|
||||
int field = g_lingo->readInt();
|
||||
|
||||
Datum d = g_lingo->getObjectField(object, field);
|
||||
g_lingo->push(d);
|
||||
}
|
||||
|
||||
void Lingo::c_objectfieldassign() {
|
||||
Common::String object(g_lingo->readString());
|
||||
int field = g_lingo->readInt();
|
||||
|
||||
+663
-645
File diff suppressed because it is too large
Load Diff
@@ -410,6 +410,10 @@ expr: simpleexpr { $$ = $1; }
|
||||
WRITE_UINT32(&e, $1[0]);
|
||||
WRITE_UINT32(&f, $1[1]);
|
||||
g_lingo->code2(e, f); }
|
||||
| THEOBJECTFIELD {
|
||||
g_lingo->code1(g_lingo->c_objectfieldpush);
|
||||
g_lingo->codeString($1.s->c_str());
|
||||
g_lingo->codeInt($1.e); }
|
||||
| asgn
|
||||
| expr '+' expr { g_lingo->code1(g_lingo->c_add); }
|
||||
| expr '-' expr { g_lingo->code1(g_lingo->c_sub); }
|
||||
|
||||
@@ -842,6 +842,15 @@ void Lingo::setTheCast(Datum &id1, int field, Datum &d) {
|
||||
}
|
||||
}
|
||||
|
||||
Datum Lingo::getObjectField(Common::String &obj, int field) {
|
||||
warning("STUB: getObjectField(\"%s\", %d)", obj.c_str(), field);
|
||||
|
||||
Datum d;
|
||||
d.type = VOID;
|
||||
|
||||
return d;
|
||||
}
|
||||
|
||||
void Lingo::setObjectField(Common::String &obj, int field, Datum &d) {
|
||||
warning("STUB: setObjectField(\"%s\", %d, ...)", obj.c_str(), field);
|
||||
}
|
||||
|
||||
@@ -322,6 +322,7 @@ public:
|
||||
|
||||
static void c_theentitypush();
|
||||
static void c_theentityassign();
|
||||
static void c_objectfieldpush();
|
||||
static void c_objectfieldassign();
|
||||
|
||||
static void c_repeatwhilecode();
|
||||
@@ -573,6 +574,7 @@ public:
|
||||
Datum getTheEntity(int entity, Datum &id, int field);
|
||||
Datum getTheSprite(Datum &id, int field);
|
||||
Datum getTheCast(Datum &id, int field);
|
||||
Datum getObjectField(Common::String &obj, int field);
|
||||
void setObjectField(Common::String &obj, int field, Datum &d);
|
||||
|
||||
public:
|
||||
|
||||
Reference in New Issue
Block a user