[Scummvm-git-logs] scummvm master -> 378b867aae7d2b4aeceb885389477763d6888508
sev-
noreply at scummvm.org
Mon Sep 22 19:56:56 UTC 2025
This automated email contains information about 3 new commits which have been
pushed to the 'scummvm' repo located at https://api.github.com/repos/scummvm/scummvm .
Summary:
e6c59e1600 DIRECTOR: Do not expect behavior to return values
3a807701cf DIRECTOR: Moved behavior loading to a proper place
378b867aae DIRECTOR: LINGO: Always execute all behaviours before regarding Frame script
Commit: e6c59e1600d7b6ae2d62b5415e9c3c8267ee22b3
https://github.com/scummvm/scummvm/commit/e6c59e1600d7b6ae2d62b5415e9c3c8267ee22b3
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2025-09-22T21:56:44+02:00
Commit Message:
DIRECTOR: Do not expect behavior to return values
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 821984905aa..a39b9a81e64 100644
--- a/engines/director/lingo/lingo-events.cpp
+++ b/engines/director/lingo/lingo-events.cpp
@@ -639,7 +639,7 @@ bool Lingo::processEvent(LEvent event, ScriptType st, CastMemberID scriptId, int
if (g_director->getVersion() >= 600 && st == kScoreScript && obj) {
push(Datum(obj));
- LC::call(_eventHandlerTypes[event], 1, true);
+ LC::call(_eventHandlerTypes[event], 1, false);
return execute();
}
Commit: 3a807701cf732083bc1359b5ded3ae917d6f44a6
https://github.com/scummvm/scummvm/commit/3a807701cf732083bc1359b5ded3ae917d6f44a6
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2025-09-22T21:56:49+02:00
Commit Message:
DIRECTOR: Moved behavior loading to a proper place
Changed paths:
engines/director/score.cpp
diff --git a/engines/director/score.cpp b/engines/director/score.cpp
index b4ae3cf9401..3fb40d55ee5 100644
--- a/engines/director/score.cpp
+++ b/engines/director/score.cpp
@@ -910,6 +910,8 @@ void Score::updateSprites(RenderMode mode, bool withClean) {
if (channel->isActiveText())
_movie->_currentEditableTextChannel = i;
}
+
+ createScriptInstances(_curFrameNumber);
}
bool Score::renderPrePaletteCycle(RenderMode mode) {
@@ -2073,8 +2075,6 @@ bool Score::loadFrame(int frameNum, bool loadCast) {
if (loadCast) {
// Load frame cast
setSpriteCasts();
-
- createScriptInstances(_curFrameNumber);
}
return true;
Commit: 378b867aae7d2b4aeceb885389477763d6888508
https://github.com/scummvm/scummvm/commit/378b867aae7d2b4aeceb885389477763d6888508
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2025-09-22T21:56:49+02:00
Commit Message:
DIRECTOR: LINGO: Always execute all behaviours before regarding Frame script
We must execute all Sprite behaviours and only if none of them
executed the handler, we pass down to the frame script
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 a39b9a81e64..8220691ca9c 100644
--- a/engines/director/lingo/lingo-events.cpp
+++ b/engines/director/lingo/lingo-events.cpp
@@ -586,6 +586,8 @@ void Lingo::processEvents(Common::Queue<LingoEvent> &queue, bool isInputEvent) {
Movie *movie = _vm->getCurrentMovie();
Score *sc = movie->getScore();
+ bool behavioursCompleted = false;
+
while (!queue.empty()) {
LingoEvent el = queue.pop();
@@ -618,6 +620,17 @@ void Lingo::processEvents(Common::Queue<LingoEvent> &queue, bool isInputEvent) {
bool completed = processEvent(el.event, el.scriptType, el.scriptId, el.channelId, el.scriptInstance);
movie->_lastEventId[el.event] = el.eventId;
+ if (_vm->getVersion() >= 600) {
+ // We need to execute all behaviours before deciding if we pass
+ // through or not
+ if (el.scriptType == kScoreScript && el.passByDefault == true) {
+ behavioursCompleted |= completed;
+ completed = true;
+ } else {
+ completed |= behavioursCompleted;
+ }
+ }
+
if (isInputEvent && !completed) {
debugC(5, kDebugEvents, "Lingo::processEvents: context frozen on an input event, stopping");
LingoState *state = g_director->getCurrentWindow()->getLastFrozenLingoState();
More information about the Scummvm-git-logs
mailing list