[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