[Scummvm-git-logs] scummvm master -> ea97cbef4bf7b89571b7835c9166cbe0ed2c3693

npjg nathanael.gentrydb8 at gmail.com
Wed Jun 24 16:45:26 UTC 2020


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

Summary:
7e56c2cc55 DIRECTOR: LINGO: Implement interface for puppetTransition
ea97cbef4b DIRECTOR: LINGO: Implement puppetTempo


Commit: 7e56c2cc55d9ee97d745ed890f81e9692b25862e
    https://github.com/scummvm/scummvm/commit/7e56c2cc55d9ee97d745ed890f81e9692b25862e
Author: Nathanael Gentry (nathanael.gentrydb8 at gmail.com)
Date: 2020-06-24T12:44:57-04:00

Commit Message:
DIRECTOR: LINGO: Implement interface for puppetTransition

The transitions do not render correctly yet, but now the Lingo interface is here.

Changed paths:
    engines/director/lingo/lingo-builtins.cpp
    engines/director/score.h


diff --git a/engines/director/lingo/lingo-builtins.cpp b/engines/director/lingo/lingo-builtins.cpp
index 8444605811..7bf9f83664 100644
--- a/engines/director/lingo/lingo-builtins.cpp
+++ b/engines/director/lingo/lingo-builtins.cpp
@@ -1738,9 +1738,31 @@ void LB::b_puppetTempo(int nargs) {
 }
 
 void LB::b_puppetTransition(int nargs) {
-	g_lingo->printSTUBWithArglist("b_puppetTransition", nargs);
+	// puppetTransition whichTransition [, time] [, chunkSize] [, changeArea]
+	Score *score = g_director->getCurrentScore();
+	uint16 duration = 250, area = 1, chunkSize = 1, type;
+	if (nargs == 4) {
+		area = g_lingo->pop().asInt();
+		nargs--;
+	}
 
-	g_lingo->dropStack(nargs);
+	if (nargs == 3) {
+		chunkSize = g_lingo->pop().asInt();
+		nargs--;
+	}
+
+	if (nargs == 2) {
+	  duration = g_lingo->pop().asInt();
+		nargs--;
+	}
+
+	if (nargs == 1) {
+		type = ((TransitionType)(g_lingo->pop().asInt()));
+	} else {
+		ARGNUMCHECK(1);
+	}
+
+	score->playTransition(duration, area, chunkSize, ((TransitionType)type));
 }
 
 void LB::b_ramNeeded(int nargs) {
diff --git a/engines/director/score.h b/engines/director/score.h
index 1e28560fd7..bbdd0adb35 100644
--- a/engines/director/score.h
+++ b/engines/director/score.h
@@ -149,6 +149,9 @@ public:
 	void renderFrame(uint16 frameId, bool forceUpdate = false, bool updateStageOnly = false);
 	void markDirtyRect(Common::Rect dirty);
 
+	// transition.cpp
+	void playTransition(uint16 transDuration, uint8 transArea, uint8 transChunkSize, TransitionType transType);
+
 private:
 	void update();
 	void renderShape(uint16 spriteId);
@@ -159,7 +162,6 @@ private:
 	void drawReverseSprite(const Graphics::Surface &sprite, Common::Rect &drawRect, uint16 spriteId);
 
 	// transitions.cpp
-	void playTransition(uint16 transDuration, uint8 transArea, uint8 transChunkSize, TransitionType transType);
 	void initTransParams(TransParams &t, Common::Rect &clipRect);
 	void dissolveTrans(TransParams &t, Common::Rect &clipRect);
 	void dissolvePatternsTrans(TransParams &t, Common::Rect &clipRect);


Commit: ea97cbef4bf7b89571b7835c9166cbe0ed2c3693
    https://github.com/scummvm/scummvm/commit/ea97cbef4bf7b89571b7835c9166cbe0ed2c3693
Author: Nathanael Gentry (nathanael.gentrydb8 at gmail.com)
Date: 2020-06-24T12:45:08-04:00

Commit Message:
DIRECTOR: LINGO: Implement puppetTempo

Changed paths:
    engines/director/lingo/lingo-builtins.cpp
    engines/director/score.cpp
    engines/director/score.h


diff --git a/engines/director/lingo/lingo-builtins.cpp b/engines/director/lingo/lingo-builtins.cpp
index 7bf9f83664..e6960b6bfa 100644
--- a/engines/director/lingo/lingo-builtins.cpp
+++ b/engines/director/lingo/lingo-builtins.cpp
@@ -1733,8 +1733,8 @@ void LB::b_puppetSprite(int nargs) {
 }
 
 void LB::b_puppetTempo(int nargs) {
-	Datum d = g_lingo->pop();
-	warning("STUB: b_puppetTempo(%d)", d.asInt());
+	// TODO: Check if >D4 permitted tempo higher than 60.
+	g_director->getCurrentScore()->_puppetTempo = MIN(g_lingo->pop().asInt(), 60);
 }
 
 void LB::b_puppetTransition(int nargs) {
diff --git a/engines/director/score.cpp b/engines/director/score.cpp
index 71c5f0f573..6e887011c2 100644
--- a/engines/director/score.cpp
+++ b/engines/director/score.cpp
@@ -127,6 +127,7 @@ Score::Score(DirectorEngine *vm) {
 	_lastClickTime = _lastEventTime;
 	_lastRollTime = _lastEventTime;
 	_lastTimerReset = _lastEventTime;
+	_puppetTempo = 0x00;
 
 	// FIXME: TODO: Check whether the original truely does it
 	if (_vm->getVersion() <= 3) {
@@ -526,7 +527,7 @@ void Score::update() {
 	_lingo->processEvent(kEventNone);
 	// TODO Director 6 - another order
 
-	byte tempo = _frames[_currentFrame]->_tempo;
+	byte tempo = _puppetTempo ? _puppetTempo : _frames[_currentFrame]->_tempo;
 
 	if (tempo) {
 		if (tempo > 161) {
diff --git a/engines/director/score.h b/engines/director/score.h
index bbdd0adb35..d67b9200f8 100644
--- a/engines/director/score.h
+++ b/engines/director/score.h
@@ -212,6 +212,7 @@ public:
 	uint32 _lastTimerReset;
 	uint16 _stageColor;
 
+	byte _puppetTempo;
 	bool _stopPlay;
 	uint32 _nextFrameTime;
 




More information about the Scummvm-git-logs mailing list