[Scummvm-git-logs] scummvm master -> 77807884e1a763a4851a63bf0c1553a28dee3839
sev-
noreply at scummvm.org
Wed Oct 8 23:43:10 UTC 2025
This automated email contains information about 2 new commits which have been
pushed to the 'scummvm' repo located at https://api.github.com/repos/scummvm/scummvm .
Summary:
c801a8e70f DIRECTOR: LINGO: Added more keyword stubs, implemented 'the mouseMember'
77807884e1 DIRECTOR: LINGO: Added stubs for more D6+ keywords
Commit: c801a8e70fab3ac727a2160cf1350779fe2f0bcb
https://github.com/scummvm/scummvm/commit/c801a8e70fab3ac727a2160cf1350779fe2f0bcb
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2025-10-09T01:42:52+02:00
Commit Message:
DIRECTOR: LINGO: Added more keyword stubs, implemented 'the mouseMember'
Changed paths:
engines/director/castmember/castmember.cpp
engines/director/lingo/lingo-the.cpp
engines/director/lingo/lingo-the.h
diff --git a/engines/director/castmember/castmember.cpp b/engines/director/castmember/castmember.cpp
index 747b4018b31..02aa2d72521 100644
--- a/engines/director/castmember/castmember.cpp
+++ b/engines/director/castmember/castmember.cpp
@@ -151,6 +151,7 @@ bool CastMember::hasField(int field) {
case kTheHeight:
case kTheHilite:
case kTheLoaded:
+ case kTheMediaReady:
case kTheModified:
case kTheMemberNum:
case kTheName:
@@ -208,6 +209,9 @@ Datum CastMember::getField(int field) {
case kTheLoaded:
d = 1; // Not loaded handled in Lingo::getTheCast
break;
+ case kTheMediaReady:
+ d = 1; // Media is always downloaded from internet in ScummVM
+ break;
case kTheModified:
d = (int)_isChanged;
break;
diff --git a/engines/director/lingo/lingo-the.cpp b/engines/director/lingo/lingo-the.cpp
index 7d812dd5f12..3abc3d1a13d 100644
--- a/engines/director/lingo/lingo-the.cpp
+++ b/engines/director/lingo/lingo-the.cpp
@@ -120,6 +120,7 @@ TheEntity entities[] = { // hasId ver. isFunction
{ kTheMouseH, "mouseH", false, 200, true }, // D2 f
{ kTheMouseItem, "mouseItem", false, 300, true }, // D3 f
{ kTheMouseLine, "mouseLine", false, 300, true }, // D3 f
+ { kTheMouseMember, "mouseMember", false, 600, true }, // D6 f
{ kTheMouseUp, "mouseUp", false, 200, true }, // D2 f
{ kTheMouseUpScript, "mouseUpScript", false, 200, false },// D2 p
{ kTheMouseV, "mouseV", false, 200, true }, // D2 f
@@ -255,6 +256,7 @@ const TheEntityField fields[] = {
{ kTheCast, "height", kTheHeight, 400 },// D4 p
{ kTheCast, "loaded", kTheLoaded, 400 },// D4 p
{ kTheCast, "media", kTheMedia, 500 },// D5 p
+ { kTheCast, "mediaReady", kTheMediaReady, 600 },// D6 p
{ kTheCast, "memberNum", kTheMemberNum, 500 },// D5 p
{ kTheCast, "modified", kTheModified, 400 },// D4 p
{ kTheCast, "name", kTheName, 300 },// D3 p
@@ -870,6 +872,17 @@ Datum Lingo::getTheEntity(int entity, Datum &id, int field) {
d = ch->getMouseLine(pos.x, pos.y);
}
break;
+ case kTheMouseMember:
+ {
+ Common::Point pos = g_director->getCurrentWindow()->getMousePos();
+ uint16 spriteId = score->getSpriteIDFromPos(pos);
+ if (spriteId) {
+ d = score->getSpriteById(spriteId)->_cast;
+ } else {
+ d = getVoid();
+ }
+ }
+ break;
case kTheMouseUp:
d = g_system->getEventManager()->getButtonState() & (1 << Common::MOUSE_BUTTON_LEFT | 1 << Common::MOUSE_BUTTON_RIGHT) ? 0 : 1;
break;
@@ -1641,6 +1654,10 @@ Datum Lingo::getTheSprite(Datum &id1, int field) {
case kTheLocV:
d = channel->getPosition().y;
break;
+ case kTheMostRecentCuePoint:
+ warning("STUB: the mostRecentCuePoint");
+ d = 0;
+ break;
case kTheMoveableSprite:
d = sprite->_moveable;
break;
diff --git a/engines/director/lingo/lingo-the.h b/engines/director/lingo/lingo-the.h
index 7ba9759fa13..84ade981f65 100644
--- a/engines/director/lingo/lingo-the.h
+++ b/engines/director/lingo/lingo-the.h
@@ -104,6 +104,7 @@ enum TheEntityType {
kTheMouseH,
kTheMouseItem,
kTheMouseLine,
+ kTheMouseMember,
kTheMouseUp,
kTheMouseUpScript,
kTheMouseV,
@@ -239,6 +240,7 @@ enum TheFieldType {
kTheLoop,
kTheMargin,
kTheMedia,
+ kTheMediaReady,
kTheMember,
kTheMemberNum,
kTheModal,
Commit: 77807884e1a763a4851a63bf0c1553a28dee3839
https://github.com/scummvm/scummvm/commit/77807884e1a763a4851a63bf0c1553a28dee3839
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2025-10-09T01:42:52+02:00
Commit Message:
DIRECTOR: LINGO: Added stubs for more D6+ keywords
Changed paths:
engines/director/lingo/lingo-builtins.cpp
engines/director/lingo/lingo-builtins.h
engines/director/lingo/lingo-events.cpp
engines/director/lingo/lingo-the.cpp
engines/director/lingo/lingo-the.h
engines/director/types.h
diff --git a/engines/director/lingo/lingo-builtins.cpp b/engines/director/lingo/lingo-builtins.cpp
index 685754d1b4a..e6b88e76020 100644
--- a/engines/director/lingo/lingo-builtins.cpp
+++ b/engines/director/lingo/lingo-builtins.cpp
@@ -147,6 +147,7 @@ static const BuiltinProto builtins[] = {
{ "return", LB::b_return, 0, 1, 200, CBLTIN }, // D2 f
{ "shutDown", LB::b_shutDown, 0, 0, 200, CBLTIN }, // D2 c
{ "startTimer", LB::b_startTimer, 0, 0, 200, CBLTIN }, // D2 c
+ { "stopEvent", LB::b_stopEvent, 0, 0, 600, CBLTIN }, // D6 c
// when keyDown // D2
// when mouseDown // D2
// when mouseUp // D2
@@ -171,6 +172,7 @@ static const BuiltinProto builtins[] = {
{ "printFrom", LB::b_printFrom, -1,0, 200, CBLTIN }, // D2 c
{ "put", LB::b_put, -1,0, 200, CBLTIN }, // D2
// set // D2
+ { "setPref", LB::b_setPref, 2, 2, 600, CBLTIN }, // D6 c
{ "showGlobals", LB::b_showGlobals, 0, 0, 200, CBLTIN }, // D2 c
{ "showLocals", LB::b_showLocals, 0, 0, 200, CBLTIN }, // D2 c
// Score
@@ -196,6 +198,8 @@ static const BuiltinProto builtins[] = {
{ "puppetTransition",LB::b_puppetTransition,-1,0,200, CBLTIN },// D2 c
{ "ramNeeded", LB::b_ramNeeded, 2, 2, 300, FBLTIN }, // D3.1 f
{ "rollOver", LB::b_rollOver, 1, 1, 200, FBLTIN }, // D2 f
+ { "sendAllSprites", LB::b_sendAllSprites,-1,0,600, CBLTIN }, // D6 c
+ { "sendSprite", LB::b_sendSprite, -1,0, 600, CBLTIN }, // D6 c
{ "spriteBox", LB::b_spriteBox, 5, 5, 200, CBLTIN }, // D2 c
{ "unLoad", LB::b_unLoad, 0, 2, 300, CBLTIN }, // D3.1 c
{ "unLoadCast", LB::b_unLoadCast, 0, 2, 300, CBLTIN }, // D3.1 c
@@ -2289,6 +2293,13 @@ void LB::b_startTimer(int nargs) {
g_director->getCurrentMovie()->_lastTimerReset = g_director->getMacTicks();
}
+void LB::b_stopEvent(int nargs) {
+ warning("STUB: b_stopEvent");
+ // TEquivalent to the dontPassEvent command used in earlier
+ //versions of Director, this command also applies to sprite scripts.
+ g_lingo->_passEvent = false;
+}
+
///////////////////
// Types
///////////////////
@@ -2458,6 +2469,11 @@ void LB::b_put(int nargs) {
g_lingo->dropStack(nargs);
}
+void LB::b_setPref(int nargs) {
+ g_lingo->printSTUBWithArglist("b_setPref", nargs);
+ g_lingo->dropStack(nargs);
+}
+
void LB::b_showGlobals(int nargs) {
b_version(0);
Datum ver = g_lingo->pop();
@@ -3293,6 +3309,16 @@ void LB::b_rollOver(int nargs) {
g_lingo->push(res);
}
+void LB::b_sendAllSprites(int nargs) {
+ g_lingo->printSTUBWithArglist("b_sendAllSprites", nargs);
+ g_lingo->dropStack(nargs);
+}
+
+void LB::b_sendSprite(int nargs) {
+ g_lingo->printSTUBWithArglist("b_sendSprite", nargs);
+ g_lingo->dropStack(nargs);
+}
+
void LB::b_spriteBox(int nargs) {
int b = g_lingo->pop().asInt();
int r = g_lingo->pop().asInt();
@@ -4209,4 +4235,11 @@ void LB::b_getPref(int nargs) {
g_lingo->push(Datum());
}
+void LB::b_netPresent(int nargs) {
+ // Once NETLINGO.X32 is implmemented, this should return 1
+ g_lingo->printSTUBWithArglist("b_netPresent", nargs);
+ g_lingo->dropStack(nargs);
+ g_lingo->push(Datum());
+}
+
} // End of namespace Director
diff --git a/engines/director/lingo/lingo-builtins.h b/engines/director/lingo/lingo-builtins.h
index 5229d87cc9c..819cf0b2e78 100644
--- a/engines/director/lingo/lingo-builtins.h
+++ b/engines/director/lingo/lingo-builtins.h
@@ -93,6 +93,7 @@ void b_HMStoFrames(int nargs);
void b_param(int nargs);
void b_printFrom(int nargs);
void b_put(int nargs);
+void b_setPref(int nargs);
void b_showGlobals(int nargs);
void b_showLocals(int nargs);
void b_value(int nargs);
@@ -118,6 +119,8 @@ void b_puppetTempo(int nargs);
void b_puppetTransition(int nargs);
void b_ramNeeded(int nargs);
void b_rollOver(int nargs);
+void b_sendAllSprites(int nargs);
+void b_sendSprite(int nargs);
void b_spriteBox(int nargs);
void b_unLoad(int nargs);
void b_unLoadCast(int nargs);
@@ -156,6 +159,7 @@ void b_quit(int nargs);
void b_restart(int nargs);
void b_shutDown(int nargs);
void b_startTimer(int nargs);
+void b_stopEvent(int nargs);
void b_return(int nargs);
void b_closeDA(int nargs);
@@ -240,8 +244,9 @@ void b_getVolumes(int nargs);
void b_externalParamCount(int nargs); // Shockwave D6
void b_externalParamName(int nargs); // Shockwave D6
void b_externalParamValue(int nargs); // Shockwave D6
-void b_frameReady(int nargs); // Shockwave D6
+void b_frameReady(int nargs); // Shockwave D6
void b_getPref(int nargs); // Shockwave D6
+void b_netPresent(int nargs); // Shockwave D6
} // End of namespace LB
diff --git a/engines/director/lingo/lingo-events.cpp b/engines/director/lingo/lingo-events.cpp
index d07abf4b594..9c81c9da334 100644
--- a/engines/director/lingo/lingo-events.cpp
+++ b/engines/director/lingo/lingo-events.cpp
@@ -80,6 +80,7 @@ struct EventHandlerType {
{ kEventGetBehaviorDescription, "getBehaviorDescription" }, // D6
{ kEventGetPropertyDescriptionList, "getPropertyDescriptionList" }, // D6
+ { kEventRunPropertyDialog, "runPropertyDialog" }, // D6
{ kEventGeneric, "scummvm_generic" },
diff --git a/engines/director/lingo/lingo-the.cpp b/engines/director/lingo/lingo-the.cpp
index 3abc3d1a13d..8108c42216a 100644
--- a/engines/director/lingo/lingo-the.cpp
+++ b/engines/director/lingo/lingo-the.cpp
@@ -360,6 +360,9 @@ const TheEntityField fields[] = {
// XtrsaCastMember fields
{ kTheCast, "interface", kTheInterface, 500 },// D5 p
+ // Behavior (me) fields
+ { kTheCast, "spriteNum", kTheSpriteNum, 600 },// D6 p
+
// Field fields
{ kTheField, "alignment", kTheTextAlign, 500 },// D5 p
{ kTheField, "font", kTheTextFont, 500 },// D5 p
@@ -1694,6 +1697,11 @@ Datum Lingo::getTheSprite(Datum &id1, int field) {
//Check the last 3 bits of the _colorcode byte as value lies in 0 to 5
d = (int)(sprite->_colorcode & 0x7);
break;
+ case kTheScriptInstanceList:
+ warning("STUB: Getting the scriptInstanceList");
+ d.type = PARRAY;
+ d.u.parr = new PArray;
+ break;
case kTheScriptNum:
if (g_director->getVersion() >= 600) {
if (sprite->_behaviors.size() > 0)
@@ -1704,6 +1712,10 @@ Datum Lingo::getTheSprite(Datum &id1, int field) {
d = sprite->_scriptId.member;
}
break;
+ case kTheSpriteNum:
+ warning("STUB: Getting the spriteNum");
+ d = 0;
+ break;
case kTheStartTime:
d = channel->_startTime;
break;
@@ -2028,6 +2040,9 @@ void Lingo::setTheSprite(Datum &id1, int field, Datum &d) {
// Based on Director in a Nutshell, page 15
sprite->setAutoPuppet(kAPRect, true);
+ break;
+ case kTheScriptInstanceList:
+ warning("STUB: Setting the scriptInstanceList");
break;
case kTheStartTime:
channel->_startTime = d.asInt();
diff --git a/engines/director/lingo/lingo-the.h b/engines/director/lingo/lingo-the.h
index 84ade981f65..e97c3a01592 100644
--- a/engines/director/lingo/lingo-the.h
+++ b/engines/director/lingo/lingo-the.h
@@ -282,6 +282,7 @@ enum TheFieldType {
kTheSize,
kTheSound,
kTheSourceRect,
+ kTheSpriteNum,
kTheStartTime,
kTheStopTime,
kTheStrech,
diff --git a/engines/director/types.h b/engines/director/types.h
index 730c8a356a3..ff089789525 100644
--- a/engines/director/types.h
+++ b/engines/director/types.h
@@ -239,6 +239,7 @@ enum LEvent {
kEventGetBehaviorDescription,
kEventGetPropertyDescriptionList,
+ kEventRunPropertyDialog,
};
enum TransitionType {
More information about the Scummvm-git-logs
mailing list