[Scummvm-git-logs] scummvm master -> baa2ff0145b6ea278e27dd227e15dd9018b57f6f
sev-
noreply at scummvm.org
Fri Sep 26 13:42:07 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:
be64027716 DIRECTOR: LINGO: Correctly pass channelId for new events
baa2ff0145 DIRECTOR: LINGO: Implement the currentSpriteNum movie property
Commit: be64027716d816538f60a75ff997154b35c46b47
https://github.com/scummvm/scummvm/commit/be64027716d816538f60a75ff997154b35c46b47
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2025-09-26T15:25:52+02:00
Commit Message:
DIRECTOR: LINGO: Correctly pass channelId for new events
Changed paths:
engines/director/lingo/lingo-events.cpp
diff --git a/engines/director/lingo/lingo-events.cpp b/engines/director/lingo/lingo-events.cpp
index b361227230a..a5d1708610a 100644
--- a/engines/director/lingo/lingo-events.cpp
+++ b/engines/director/lingo/lingo-events.cpp
@@ -471,6 +471,9 @@ void Movie::queueEvent(Common::Queue<LingoEvent> &queue, LEvent event, int targe
// For mouseEnter/mouseLeave events, we want to specify exactly what sprite channel to resolve to.
case kEventMouseEnter:
case kEventMouseLeave:
+ case kEventPrepareFrame:
+ case kEventBeginSprite:
+ case kEventEndSprite:
if (targetId != 0) {
channelId = targetId;
}
@@ -708,6 +711,10 @@ bool Lingo::processEvent(LEvent event, ScriptType st, CastMemberID scriptId, int
return true;
}
+/***********************
+ * Script Instances
+ ***********************/
+
void Score::killScriptInstances(int frameNum) {
if (_version < kFileVer600) // No-op for early Directors
return;
Commit: baa2ff0145b6ea278e27dd227e15dd9018b57f6f
https://github.com/scummvm/scummvm/commit/baa2ff0145b6ea278e27dd227e15dd9018b57f6f
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2025-09-26T15:36:24+02:00
Commit Message:
DIRECTOR: LINGO: Implement the currentSpriteNum movie property
Changed paths:
engines/director/lingo/lingo-events.cpp
engines/director/lingo/lingo-the.cpp
engines/director/lingo/lingo-the.h
engines/director/movie.cpp
engines/director/movie.h
diff --git a/engines/director/lingo/lingo-events.cpp b/engines/director/lingo/lingo-events.cpp
index a5d1708610a..fc61a55629d 100644
--- a/engines/director/lingo/lingo-events.cpp
+++ b/engines/director/lingo/lingo-events.cpp
@@ -649,6 +649,9 @@ void Lingo::processEvents(Common::Queue<LingoEvent> &queue, bool isInputEvent) {
movie->_lastEventId[el.event] = el.eventId;
if (_vm->getVersion() >= 600) {
+ // Reset it for further event processing
+ g_director->getCurrentMovie()->_currentSpriteNum = 0;
+
// We need to execute all behaviours before deciding if we pass
// through or not
if (el.scriptType == kScoreScript && el.passByDefault == true) {
@@ -680,6 +683,7 @@ bool Lingo::processEvent(LEvent event, ScriptType st, CastMemberID scriptId, int
if (g_director->getVersion() >= 600 && st == kScoreScript && obj) {
if (obj->getMethod(_eventHandlerTypes[event]).type != VOIDSYM) {
+ g_director->getCurrentMovie()->_currentSpriteNum = channelId;
push(Datum(obj));
LC::call(_eventHandlerTypes[event], 1, false);
return execute();
diff --git a/engines/director/lingo/lingo-the.cpp b/engines/director/lingo/lingo-the.cpp
index a65fbcbbf1a..667ab89472c 100644
--- a/engines/director/lingo/lingo-the.cpp
+++ b/engines/director/lingo/lingo-the.cpp
@@ -65,6 +65,7 @@ TheEntity entities[] = { // hasId ver. isFunction
{ kTheColorQD, "colorQD", false, 200, true }, // D2 f
{ kTheCommandDown, "commandDown", false, 200, true }, // D2 f
{ kTheControlDown, "controlDown", false, 200, true }, // D2 f
+ { kTheCurrentSpriteNum, "currentSpriteNum", false, 600, true }, // D6 p
{ kTheDate, "date", false, 300, true }, // D3 f
{ kTheDeskTopRectList, "deskTopRectList", false, 500, true }, // D5 p
{ kTheDigitalVideoTimeScale,"digitalVideoTimeScale",false, 500, false },// D5 p
@@ -551,6 +552,9 @@ Datum Lingo::getTheEntity(int entity, Datum &id, int field) {
case kTheControlDown:
d = (movie->_keyFlags & Common::KBD_CTRL) ? 1 : 0;
break;
+ case kTheCurrentSpriteNum:
+ d = (int)movie->_currentSpriteNum;
+ break;
case kTheDate:
d = getTheDate(field);
break;
diff --git a/engines/director/lingo/lingo-the.h b/engines/director/lingo/lingo-the.h
index 25f6d5647da..1d2213b365d 100644
--- a/engines/director/lingo/lingo-the.h
+++ b/engines/director/lingo/lingo-the.h
@@ -46,6 +46,7 @@ enum TheEntityType {
kTheColorQD,
kTheCommandDown,
kTheControlDown,
+ kTheCurrentSpriteNum,
kTheDate,
kTheDeskTopRectList,
kTheDigitalVideoTimeScale,
diff --git a/engines/director/movie.cpp b/engines/director/movie.cpp
index ce03e593849..4c5987bf146 100644
--- a/engines/director/movie.cpp
+++ b/engines/director/movie.cpp
@@ -50,6 +50,7 @@ Movie::Movie(Window *window) {
_currentActiveSpriteId = 0;
_currentMouseSpriteId = 0;
+ _currentSpriteNum = 0;
_currentEditableTextChannel = 0;
_lastEventTime = _vm->getMacTicks();
_lastKeyTime = _lastEventTime;
diff --git a/engines/director/movie.h b/engines/director/movie.h
index c0ca1e98055..a414523e50c 100644
--- a/engines/director/movie.h
+++ b/engines/director/movie.h
@@ -157,6 +157,7 @@ public:
Common::Rect _movieRect;
uint16 _currentActiveSpriteId;
uint16 _currentMouseSpriteId;
+ uint _currentSpriteNum;
CastMemberID _currentMouseDownCastID;
CastMemberID _currentMouseDownSpriteScriptID;
bool _currentMouseDownSpriteImmediate;
More information about the Scummvm-git-logs
mailing list