[Scummvm-git-logs] scummvm master -> 5d50b9f8740539efdf48ff2dcc842fe21fb81e3d

sev- noreply at scummvm.org
Fri Sep 19 23:24:55 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:
850e5c7af8 JANITORIAL: Fix vertical alignment in Xlibs init table
5d50b9f874 DIRECTOR: Instantiate behavior scripts properly


Commit: 850e5c7af85c4a888c127dd223236b652b059a75
    https://github.com/scummvm/scummvm/commit/850e5c7af85c4a888c127dd223236b652b059a75
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2025-09-20T00:28:31+02:00

Commit Message:
JANITORIAL: Fix vertical alignment in Xlibs init table

Changed paths:
    engines/director/lingo/lingo-object.cpp


diff --git a/engines/director/lingo/lingo-object.cpp b/engines/director/lingo/lingo-object.cpp
index 59ef6a926e6..2319fe1b671 100644
--- a/engines/director/lingo/lingo-object.cpp
+++ b/engines/director/lingo/lingo-object.cpp
@@ -244,7 +244,7 @@ static const struct XLibProto {
 	XLIBDEF(DPWAVIXObj,			kXObj,			300),	// D3
 	XLIBDEF(DPWQTWXObj,			kXObj,			300),	// D3
 	XLIBDEF(DarkenScreen,		kXObj,			300),	// D3
-	XLIBDEF(DateUtilXObj,			kXObj,					400),	// D4
+	XLIBDEF(DateUtilXObj,		kXObj,			400),	// D4
 	XLIBDEF(DeveloperStack,		kXObj,			300),	// D3
 	XLIBDEF(DialogsXObj,		kXObj,			400),	// D4
 	XLIBDEF(DirUtilXObj,		kXObj,			400),	// D4
@@ -255,13 +255,13 @@ static const struct XLibProto {
 	XLIBDEF(FEDraculXObj,		kXObj,			400),	// D4
 	XLIBDEF(FEIMasksXObj,		kXObj,			400),	// D4
 	XLIBDEF(FEIPrefsXObj,		kXObj,			400),	// D4
-	XLIBDEF(FSUtilXObj,			kXObj,					400),	// D4
+	XLIBDEF(FSUtilXObj,			kXObj,			400),	// D4
 	XLIBDEF(FadeGammaDownXCMD,	kXObj,			400),	// D4
 	XLIBDEF(FadeGammaUpXCMD,	kXObj,			400),	// D4
 	XLIBDEF(FadeGammaXCMD,		kXObj,			400),	// D4
 	XLIBDEF(FileExists,			kXObj,			300),	// D3
 	XLIBDEF(FileIO,				kXObj | kXtraObj,200),	// D2
-	XLIBDEF(FileXtra,			kXtraObj,					500),	// D5
+	XLIBDEF(FileXtra,			kXtraObj,		500),	// D5
 	XLIBDEF(FindFolder,			kXObj,			300),	// D3
 	XLIBDEF(FindSys,			kXObj,			400),	// D4
 	XLIBDEF(FindWin,			kXObj,			400),	// D4
@@ -271,9 +271,9 @@ static const struct XLibProto {
 	XLIBDEF(GenUtilsXObj,		kXObj,			400),	// D4
 	XLIBDEF(GetScreenRectsXFCN,	kXObj,			300),	// D3
 	XLIBDEF(GetScreenSizeXFCN,	kXObj,			300),	// D3
-	XLIBDEF(GetSoundInLevelXObj,			kXObj,					400),	// D4
+	XLIBDEF(GetSoundInLevelXObj,kXObj,			400),	// D4
 	XLIBDEF(GpidXObj,			kXObj,			400),	// D4
-	XLIBDEF(HenryXObj,			kXObj,					400),	// D4
+	XLIBDEF(HenryXObj,			kXObj,			400),	// D4
 	XLIBDEF(HitMap,				kXObj,			400),	// D4
 	XLIBDEF(IniXObj,			kXObj,			400),	// D4
 	XLIBDEF(InstObjXObj,		kXObj,			400),	// D4
@@ -283,30 +283,30 @@ static const struct XLibProto {
 	XLIBDEF(JourneyWareXINIXObj,kXObj,			400),	// D4
 	XLIBDEF(KeypollXtra,		kXtraObj,		500),	// D5
 	XLIBDEF(LabelDrvXObj,		kXObj,			400),	// D4
-	XLIBDEF(ListDevXObj,			kXObj,					500),	// D5
+	XLIBDEF(ListDevXObj,		kXObj,			500),	// D5
 	XLIBDEF(MMovieXObj,			kXObj,			400),	// D4
 	XLIBDEF(ManiacBgXObj,		kXObj,			300),	// D3
 	XLIBDEF(MapNavigatorXObj,	kXObj,			400),	// D4
-	XLIBDEF(MasterAppXtra,			kXtraObj,					500),	// D5
+	XLIBDEF(MasterAppXtra,		kXtraObj,		500),	// D5
 	XLIBDEF(MemCheckXObj,		kXObj,			400),	// D4
 	XLIBDEF(MemoryXObj,			kXObj,			300),	// D3
 	XLIBDEF(Misc,				kXObj,			400),	// D4
 	XLIBDEF(MiscX,				kXObj,			400),	// D4
 	XLIBDEF(MMaskXObj,			kXObj,			400),	// D4
 	XLIBDEF(MoovXObj,			kXObj,			300),	// D3
-	XLIBDEF(MoveMouseJPXObj,			kXObj,					400),	// D4
+	XLIBDEF(MoveMouseJPXObj,	kXObj,			400),	// D4
 	XLIBDEF(MoveMouseXObj,		kXObj,			400),	// D4
 	XLIBDEF(MovieIdxXObj,		kXObj,			400),	// D4
 	XLIBDEF(MovUtilsXObj,		kXObj,			400),	// D4
 	XLIBDEF(MSFile,             kXObj,          400),   // D4
-	XLIBDEF(MystIsleXObj,			kXObj,					400),	// D4
+	XLIBDEF(MystIsleXObj,		kXObj,			400),	// D4
 	XLIBDEF(OpenBleedWindowXCMD,kXObj,			300),	// D3
-	XLIBDEF(OpenURLXtra,			kXtraObj,					500),	// D5
+	XLIBDEF(OpenURLXtra,		kXtraObj,		500),	// D5
 	XLIBDEF(OrthoPlayXObj,		kXObj,			400),	// D4
 	XLIBDEF(PACoXObj,			kXObj,			300),	// D3
 	XLIBDEF(PalXObj,			kXObj,			400),	// D4
 	XLIBDEF(PanelXObj,			kXObj,			200),	// D2
-	XLIBDEF(PharaohsXObj,			kXObj,					400),	// D4
+	XLIBDEF(PharaohsXObj,		kXObj,			400),	// D4
 	XLIBDEF(PopUpMenuXObj,		kXObj,			200),	// D2
 	XLIBDEF(Porta,				kXObj,			300),	// D3
 	XLIBDEF(PrefPath,			kXObj,			400),	// D4
@@ -320,33 +320,33 @@ static const struct XLibProto {
 	XLIBDEF(RearWindowXObj,		kXObj,			400),	// D4
 	XLIBDEF(RegisterComponent,	kXObj,			400),	// D4
 	XLIBDEF(RemixXCMD,			kXObj,			300),	// D3
-	XLIBDEF(RolloverToolkitXtra,			kXtraObj,					500),	// D5
+	XLIBDEF(RolloverToolkitXtra,kXtraObj,		500),	// D5
 	XLIBDEF(ScrnUtilXtra,		kXtraObj,		500),	// D5
 	XLIBDEF(SerialPortXObj,		kXObj,			200),	// D2
-	XLIBDEF(SmallUtilXObj,			kXObj,					400),	// D4
+	XLIBDEF(SmallUtilXObj,		kXObj,			400),	// D4
 	XLIBDEF(SoundJam,			kXObj,			400),	// D4
 	XLIBDEF(SpaceMgr,			kXObj,			400),	// D4
 	XLIBDEF(StageTCXObj,		kXObj,			400),	// D4
-	XLIBDEF(SysColorXObj,			kXObj,					400),	// D4
-	XLIBDEF(TenguXObj,			kXObj,					400),	// D4
+	XLIBDEF(SysColorXObj,		kXObj,			400),	// D4
+	XLIBDEF(TenguXObj,			kXObj,			400),	// D4
 	XLIBDEF(TimextraXtra,		kXtraObj,		500),	// D5
 	XLIBDEF(UnitTestXObj,		kXObj,			400),	// D4
-	XLIBDEF(VMPresentXObj,			kXObj,					400),	// D4
+	XLIBDEF(VMPresentXObj,		kXObj,			400),	// D4
 	XLIBDEF(VMisOnXFCN,			kXObj,			400),	// D4
 	XLIBDEF(ValkyrieXObj,		kXObj,			400),	// D4
 	XLIBDEF(VideodiscXObj,		kXObj,			200),	// D2
 	XLIBDEF(VolumeList,			kXObj,			300),	// D3
-	XLIBDEF(VoyagerXSoundXObj,			kXObj,					400),	// D4
+	XLIBDEF(VoyagerXSoundXObj,	kXObj,			400),	// D4
 	XLIBDEF(WinInfoXObj,		kXObj,			400),	// D4
 	XLIBDEF(WidgetXObj, 		kXObj,			400),	// D4
 	XLIBDEF(WindowXObj,			kXObj,			200),	// D2
 	XLIBDEF(XCMDGlueXObj,		kXObj,			200),	// D2
-	XLIBDEF(XPlayPACoXFCN,			kXObj,					300),	// D3
+	XLIBDEF(XPlayPACoXFCN,		kXObj,			300),	// D3
 	XLIBDEF(XSoundXFCN,			kXObj,			400),	// D4
 	XLIBDEF(XWINXObj,			kXObj,			300),	// D3
 	XLIBDEF(XioXObj,			kXObj,			400),	// D3
 	XLIBDEF(XPlayAnim,			kXObj,			300),	// D3
-	XLIBDEF(XsoundXtra,			kXtraObj,					500),	// D5
+	XLIBDEF(XsoundXtra,			kXtraObj,		500),	// D5
 	XLIBDEF(Yasix,				kXObj,			300),	// D3
 	{ nullptr, nullptr, nullptr, nullptr, 0, 0 }
 };


Commit: 5d50b9f8740539efdf48ff2dcc842fe21fb81e3d
    https://github.com/scummvm/scummvm/commit/5d50b9f8740539efdf48ff2dcc842fe21fb81e3d
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2025-09-20T01:23:54+02:00

Commit Message:
DIRECTOR: Instantiate behavior scripts properly

TODO: Initialize the child object properties as specified
by the intializerParams

Changed paths:
    engines/director/channel.h
    engines/director/score.cpp


diff --git a/engines/director/channel.h b/engines/director/channel.h
index 8eab04129ad..863a6cbdb6e 100644
--- a/engines/director/channel.h
+++ b/engines/director/channel.h
@@ -123,7 +123,7 @@ public:
 
 	int _startFrame;
 	int _endFrame;
-	Common::Array<BehaviorElement> _scriptInstanceList;  // FIXME: Need to be true instantiations
+	Common::Array<AbstractObject *> _scriptInstanceList;
 
 private:
 	Graphics::ManagedSurface *getSurface();
diff --git a/engines/director/score.cpp b/engines/director/score.cpp
index 2e7ba8d72f8..d5d4c032389 100644
--- a/engines/director/score.cpp
+++ b/engines/director/score.cpp
@@ -49,6 +49,7 @@
 #include "director/castmember/castmember.h"
 #include "director/castmember/filmloop.h"
 #include "director/castmember/transition.h"
+#include "director/lingo/lingo-code.h"
 
 namespace Director {
 
@@ -2453,6 +2454,9 @@ void Score::killScriptInstances(int frameNum) {
 			continue;
 
 		if (frameNum < channel->_startFrame || frameNum > channel->_endFrame) {
+			for (auto &inst : channel->_scriptInstanceList) {
+				delete inst;
+			}
 			channel->_scriptInstanceList.clear();
 			channel->_startFrame = channel->_endFrame = -1;
 
@@ -2474,8 +2478,21 @@ void Score::createScriptInstances(int frameNum) {
 			if (channel->_scriptInstanceList.size() == 0) {
 				if (sprite->_behaviors.size() > 0) {
 					for (uint j = 0; j < sprite->_behaviors.size(); j++) {
-						// TODO: Here we should do proper instantiation
-						channel->_scriptInstanceList.push_back(sprite->_behaviors[j]);
+
+						// Instantiate the behavior
+						// TODO: Initialize property list
+						g_lingo->push(_movie->getScriptContext(kScoreScript, sprite->_behaviors[j].memberID));
+						LC::call("new", 1, true);
+						Datum result = g_lingo->pop();
+
+						if (result.type != OBJECT) {
+							warning("Score::createScriptInstances(): Could not instantiate behavior %s for channel %d",
+								sprite->_behaviors[j].toString().c_str(), i + 1);
+							continue;
+						}
+
+						channel->_scriptInstanceList.push_back(result.u.obj);
+
 						debugC(1, kDebugLingoExec, "Score::createScriptInstances(): Instantiating behavior %s for channel %d",
 							sprite->_behaviors[j].toString().c_str(), i + 1);
 					}




More information about the Scummvm-git-logs mailing list