[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