[Scummvm-git-logs] scummvm master -> 2f406baab960853b1ecbc9c229976941241b81a3
sev-
sev at scummvm.org
Sat Apr 18 10:13:39 UTC 2020
This automated email contains information about 2 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
d2b9051f80 DIRECTOR: LINGO: Fix execution of '<entity> of menuitems'
2f406baab9 DIRECTOR: LINGO: Fix code generation for menu entity getters
Commit: d2b9051f806f4a98b50409f01e568ae2c1ce09b6
https://github.com/scummvm/scummvm/commit/d2b9051f806f4a98b50409f01e568ae2c1ce09b6
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-04-18T12:12:56+02:00
Commit Message:
DIRECTOR: LINGO: Fix execution of '<entity> of menuitems'
Changed paths:
engines/director/lingo/lingo-code.cpp
diff --git a/engines/director/lingo/lingo-code.cpp b/engines/director/lingo/lingo-code.cpp
index c948a400ce..51f6812994 100644
--- a/engines/director/lingo/lingo-code.cpp
+++ b/engines/director/lingo/lingo-code.cpp
@@ -50,6 +50,7 @@
#include "director/lingo/lingo.h"
#include "director/lingo/lingo-builtins.h"
#include "director/lingo/lingo-code.h"
+#include "director/lingo/lingo-the.h"
namespace Director {
@@ -436,12 +437,16 @@ void LC::c_theentityassign() {
}
void LC::c_themenuitementityassign() {
+ int entity = g_lingo->readInt();
+ int field = g_lingo->readInt();
+
Datum d = g_lingo->pop();
Datum menuId = g_lingo->pop();
- Datum menuItemId = g_lingo->pop();
+ Datum menuItemId;
- int entity = g_lingo->readInt();
- int field = g_lingo->readInt();
+ if (entity != kTheMenuItems) { // "<entity> of menuitems" has 2 parameters
+ menuItemId = g_lingo->pop();
+ }
g_lingo->setTheMenuItemEntity(entity, menuId, field, menuItemId, d);
}
Commit: 2f406baab960853b1ecbc9c229976941241b81a3
https://github.com/scummvm/scummvm/commit/2f406baab960853b1ecbc9c229976941241b81a3
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-04-18T12:12:56+02:00
Commit Message:
DIRECTOR: LINGO: Fix code generation for menu entity getters
Changed paths:
engines/director/lingo/lingo-code.cpp
engines/director/lingo/lingo-code.h
engines/director/lingo/lingo-gr.cpp
engines/director/lingo/lingo-gr.y
engines/director/lingo/lingo-the.cpp
engines/director/lingo/lingo.h
diff --git a/engines/director/lingo/lingo-code.cpp b/engines/director/lingo/lingo-code.cpp
index 51f6812994..e4ab35f9cf 100644
--- a/engines/director/lingo/lingo-code.cpp
+++ b/engines/director/lingo/lingo-code.cpp
@@ -130,6 +130,7 @@ static struct FuncDescr {
{ LC::c_telldone, "c_telldone", "" },
{ LC::c_theentityassign,"c_theentityassign","EF" },
{ LC::c_theentitypush, "c_theentitypush", "EF" }, // entity, field
+ { LC::c_themenuentitypush,"c_themenuentitypush","EF" },
{ LC::c_themenuitementityassign,"c_themenuitementityassign","EF" },
{ LC::c_varpush, "c_varpush", "s" },
{ LC::c_voidpush, "c_voidpush", "" },
@@ -426,6 +427,21 @@ void LC::c_theentitypush() {
g_lingo->push(d);
}
+void LC::c_themenuentitypush() {
+ int entity = g_lingo->readInt();
+ int field = g_lingo->readInt();
+
+ Datum menuId = g_lingo->pop();
+ Datum menuItemId;
+
+ if (entity != kTheMenuItems) { // "<entity> of menuitems" has 1 parameter
+ menuItemId = g_lingo->pop();
+ }
+
+ Datum d = g_lingo->getTheMenuItemEntity(entity, menuId, field, menuItemId);
+ g_lingo->push(d);
+}
+
void LC::c_theentityassign() {
Datum id = g_lingo->pop();
diff --git a/engines/director/lingo/lingo-code.h b/engines/director/lingo/lingo-code.h
index 1120986563..02abd91164 100644
--- a/engines/director/lingo/lingo-code.h
+++ b/engines/director/lingo/lingo-code.h
@@ -85,6 +85,7 @@ namespace LC {
void c_swap();
void c_theentitypush();
+ void c_themenuentitypush();
void c_theentityassign();
void c_themenuitementityassign();
void c_objectfieldpush();
diff --git a/engines/director/lingo/lingo-gr.cpp b/engines/director/lingo/lingo-gr.cpp
index 23102d9e3b..17b832a346 100644
--- a/engines/director/lingo/lingo-gr.cpp
+++ b/engines/director/lingo/lingo-gr.cpp
@@ -2089,10 +2089,10 @@ yyreduce:
YYERROR;
}
- warning("STUB: menuItems entity");
- g_lingo->code1(LC::c_themenuitementityassign);
+ g_lingo->code1(LC::c_themenuentitypush);
g_lingo->codeInt((yyvsp[-4].e)[0]);
g_lingo->codeInt((yyvsp[-4].e)[1]);
+ g_lingo->code1(LC::c_assign);
(yyval.code) = (yyvsp[0].code); }
#line 2098 "engines/director/lingo/lingo-gr.cpp"
break;
diff --git a/engines/director/lingo/lingo-gr.y b/engines/director/lingo/lingo-gr.y
index 30794aff0a..d7d0fbe28c 100644
--- a/engines/director/lingo/lingo-gr.y
+++ b/engines/director/lingo/lingo-gr.y
@@ -161,10 +161,10 @@ asgn: tPUT expr tINTO ID {
YYERROR;
}
- warning("STUB: menuItems entity");
- g_lingo->code1(LC::c_themenuitementityassign);
+ g_lingo->code1(LC::c_themenuentitypush);
g_lingo->codeInt($THEMENUITEMSENTITY[0]);
g_lingo->codeInt($THEMENUITEMSENTITY[1]);
+ g_lingo->code1(LC::c_assign);
$$ = $expr; }
| tPUT expr tAFTER expr { $$ = g_lingo->code1(LC::c_after); } // D3
| tPUT expr tBEFORE expr { $$ = g_lingo->code1(LC::c_before); } // D3
diff --git a/engines/director/lingo/lingo-the.cpp b/engines/director/lingo/lingo-the.cpp
index d070956d67..d5baf615c8 100644
--- a/engines/director/lingo/lingo-the.cpp
+++ b/engines/director/lingo/lingo-the.cpp
@@ -486,10 +486,17 @@ void Lingo::setTheEntity(int entity, Datum &id, int field, Datum &d) {
}
void Lingo::setTheMenuItemEntity(int entity, Datum &menuId, int field, Datum &menuItemId, Datum &d) {
- warning("STUB: setTheMenuItemEntity(%s, \"%s\", %s, \"%s\", %s)", entity2str(entity), menuId.getPrintable().c_str(), field2str(field),
+ warning("STUB: setTheMenuItemEntity(%s, %s, %s, %s, %s)", entity2str(entity), menuId.getPrintable().c_str(), field2str(field),
menuItemId.getPrintable().c_str(), d.getPrintable().c_str());
}
+Datum Lingo::getTheMenuItemEntity(int entity, Datum &menuId, int field, Datum &menuItemId) {
+ warning("STUB: getTheMenuItemEntity(%s, %s, %s, %s)", entity2str(entity), menuId.getPrintable().c_str(), field2str(field),
+ menuItemId.getPrintable().c_str());
+
+ return Datum();
+}
+
Datum Lingo::getTheSprite(Datum &id1, int field) {
Datum d;
int id = 0;
diff --git a/engines/director/lingo/lingo.h b/engines/director/lingo/lingo.h
index f61cfe55ff..b5413fe0dd 100644
--- a/engines/director/lingo/lingo.h
+++ b/engines/director/lingo/lingo.h
@@ -287,6 +287,7 @@ public:
Datum getObjectField(Common::String &obj, int field);
void setObjectField(Common::String &obj, int field, Datum &d);
Datum getObjectRef(Common::String &obj, Common::String &field);
+ Datum getTheMenuItemEntity(int entity, Datum &menuId, int field, Datum &menuItemId);
const char *entity2str(int id);
const char *field2str(int id);
More information about the Scummvm-git-logs
mailing list