[Scummvm-git-logs] scummvm master -> 678e6df29f4cdb20ccfe917c204ea106430bf37e

djsrv dservilla at gmail.com
Mon Jun 29 15:44:54 UTC 2020


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
678e6df29f DIRECTOR: LINGO: Handle stepMovie event


Commit: 678e6df29f4cdb20ccfe917c204ea106430bf37e
    https://github.com/scummvm/scummvm/commit/678e6df29f4cdb20ccfe917c204ea106430bf37e
Author: djsrv (dservilla at gmail.com)
Date: 2020-06-29T11:43:10-04:00

Commit Message:
DIRECTOR: LINGO: Handle stepMovie event

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 8cdc76b7ea..fe0f4d6f07 100644
--- a/engines/director/lingo/lingo-events.cpp
+++ b/engines/director/lingo/lingo-events.cpp
@@ -262,6 +262,7 @@ void Lingo::registerEvent(LEvent event, int spriteId) {
 	case kEventStart:
 	case kEventStartUp:
 	case kEventStartMovie:
+	case kEventStepMovie:
 	case kEventStopMovie:
 	case kEventTimeout:
 	case kEventPrepareMovie:
diff --git a/engines/director/score.cpp b/engines/director/score.cpp
index a2cbef2948..4638c1787f 100644
--- a/engines/director/score.cpp
+++ b/engines/director/score.cpp
@@ -490,9 +490,16 @@ void Score::update() {
 	renderFrame(_currentFrame);
 	// Stage is drawn between the prepareFrame and enterFrame events (Lingo in a Nutshell, p.100)
 
-	// Enter and exit from previous frame (Director 4)
-	if (!_vm->_playbackPaused)
-		_lingo->processEvent(kEventEnterFrame);
+	// Enter and exit from previous frame
+	if (!_vm->_playbackPaused) {
+		_lingo->processEvent(kEventEnterFrame); // Triggers the frame script in D2-3, explicit enterFrame handlers in D4+
+		if (_vm->getVersion() == 3) {
+			// Movie version of enterFrame, for D3 only. The Lingo Dictionary claims
+			// "This handler executes before anything else when the playback head moves."
+			// but this is incorrect. The frame script is executed first.
+			_lingo->processEvent(kEventStepMovie);
+		}
+	}
 	// TODO Director 6 - another order
 
 	byte tempo = _puppetTempo ? _puppetTempo : _frames[_currentFrame]->_tempo;




More information about the Scummvm-git-logs mailing list