[Scummvm-git-logs] scummvm master -> 27c80ffddcbf65a1ce0308158b3447c09e4eaa54
djsrv
dservilla at gmail.com
Fri Jun 26 20:59:04 UTC 2020
This automated email contains information about 3 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
b728485736 DIRECTOR: LINGO: Fix frame event queueing
8f7e232ed2 DIRECTOR: LINGO: Don't do frame events when paused
27c80ffddc DIRECTOR: LINGO: Call perFrameHook on stop
Commit: b72848573688d3fe01b337fac2e160de2bc9f15d
https://github.com/scummvm/scummvm/commit/b72848573688d3fe01b337fac2e160de2bc9f15d
Author: djsrv (dservilla at gmail.com)
Date: 2020-06-26T16:54:56-04:00
Commit Message:
DIRECTOR: LINGO: Fix frame event queueing
Changed paths:
engines/director/lingo/lingo-events.cpp
engines/director/score.cpp
diff --git a/engines/director/lingo/lingo-events.cpp b/engines/director/lingo/lingo-events.cpp
index 59b089f3f7..8cdc76b7ea 100644
--- a/engines/director/lingo/lingo-events.cpp
+++ b/engines/director/lingo/lingo-events.cpp
@@ -170,7 +170,14 @@ void Lingo::queueFrameEvent(LEvent event, int eventId) {
int scriptId = score->_frames[score->getCurrentFrame()]->_actionId;
if (scriptId) {
- _eventQueue.push(LingoEvent(event, eventId, kArchMain, kScoreScript, scriptId, false));
+ if (event == kEventEnterFrame && _vm->getVersion() <= 3) {
+ _eventQueue.push(LingoEvent(kEventNone, eventId, kArchMain, kScoreScript, scriptId, false));
+ } else {
+ ScriptContext *script = getScriptContext(kArchMain, kScoreScript, scriptId);
+ if (script && script->_eventHandlers.contains(event)) {
+ _eventQueue.push(LingoEvent(event, eventId, kArchMain, kScoreScript, scriptId, false));
+ }
+ }
}
}
@@ -180,9 +187,6 @@ void Lingo::queueMovieEvent(LEvent event, int eventId) {
* window [p.81 of D4 docs]
*/
- if (event == kEventNone)
- return;
-
// FIXME: shared cast movie scripts could come before main movie ones
for (ScriptContextHash::iterator it = _archives[kArchMain].scriptContexts[kMovieScript].begin();
it != _archives[kArchMain].scriptContexts[kMovieScript].end(); ++it) {
diff --git a/engines/director/score.cpp b/engines/director/score.cpp
index 2db94a2f0d..b29bfb506f 100644
--- a/engines/director/score.cpp
+++ b/engines/director/score.cpp
@@ -493,7 +493,6 @@ void Score::update() {
// Enter and exit from previous frame (Director 4)
_lingo->processEvent(kEventEnterFrame);
- _lingo->processEvent(kEventNone);
// TODO Director 6 - another order
byte tempo = _puppetTempo ? _puppetTempo : _frames[_currentFrame]->_tempo;
Commit: 8f7e232ed2143aff548984403757c8c59c3f0026
https://github.com/scummvm/scummvm/commit/8f7e232ed2143aff548984403757c8c59c3f0026
Author: djsrv (dservilla at gmail.com)
Date: 2020-06-26T16:57:05-04:00
Commit Message:
DIRECTOR: LINGO: Don't do frame events when paused
Changed paths:
engines/director/score.cpp
diff --git a/engines/director/score.cpp b/engines/director/score.cpp
index b29bfb506f..f258d018bf 100644
--- a/engines/director/score.cpp
+++ b/engines/director/score.cpp
@@ -428,7 +428,7 @@ void Score::update() {
}
// For previous frame
- if (_currentFrame > 0) {
+ if (_currentFrame > 0 && !_vm->_playbackPaused) {
// TODO: Confirm when the perFrameHook is called if
// there's no transition.
// If there is a transition, the perFrameHook is called
@@ -492,7 +492,8 @@ void Score::update() {
// Stage is drawn between the prepareFrame and enterFrame events (Lingo in a Nutshell, p.100)
// Enter and exit from previous frame (Director 4)
- _lingo->processEvent(kEventEnterFrame);
+ if (!_vm->_playbackPaused)
+ _lingo->processEvent(kEventEnterFrame);
// TODO Director 6 - another order
byte tempo = _puppetTempo ? _puppetTempo : _frames[_currentFrame]->_tempo;
Commit: 27c80ffddcbf65a1ce0308158b3447c09e4eaa54
https://github.com/scummvm/scummvm/commit/27c80ffddcbf65a1ce0308158b3447c09e4eaa54
Author: djsrv (dservilla at gmail.com)
Date: 2020-06-26T16:57:36-04:00
Commit Message:
DIRECTOR: LINGO: Call perFrameHook on stop
Changed paths:
engines/director/score.cpp
diff --git a/engines/director/score.cpp b/engines/director/score.cpp
index f258d018bf..19a626fc6c 100644
--- a/engines/director/score.cpp
+++ b/engines/director/score.cpp
@@ -415,6 +415,7 @@ void Score::startLoop() {
}
_lingo->processEvent(kEventStopMovie);
+ _lingo->executePerFrameHook(-1, 0);
}
void Score::update() {
More information about the Scummvm-git-logs
mailing list