[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