[Scummvm-git-logs] scummvm master -> 60b439ab2d99129cce7f36a0e2d516357818c59a
moralrecordings
code at moral.net.au
Thu May 7 15:11:01 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:
60b439ab2d DIRECTOR: LINGO: Implement kTheTimer and b_startTimer
Commit: 60b439ab2d99129cce7f36a0e2d516357818c59a
https://github.com/scummvm/scummvm/commit/60b439ab2d99129cce7f36a0e2d516357818c59a
Author: Scott Percival (code at moral.net.au)
Date: 2020-05-07T23:05:01+08:00
Commit Message:
DIRECTOR: LINGO: Implement kTheTimer and b_startTimer
Changed paths:
engines/director/lingo/lingo-builtins.cpp
engines/director/lingo/lingo-the.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 9e6efb37ab..cabd04f922 100644
--- a/engines/director/lingo/lingo-builtins.cpp
+++ b/engines/director/lingo/lingo-builtins.cpp
@@ -1342,7 +1342,7 @@ void LB::b_shutDown(int nargs) {
}
void LB::b_startTimer(int nargs) {
- warning("STUB: b_startTimer");
+ g_director->getCurrentScore()->_lastTimerReset = g_director->getMacTicks();
}
///////////////////
diff --git a/engines/director/lingo/lingo-the.cpp b/engines/director/lingo/lingo-the.cpp
index 104991424b..6855b0288a 100644
--- a/engines/director/lingo/lingo-the.cpp
+++ b/engines/director/lingo/lingo-the.cpp
@@ -357,6 +357,26 @@ Datum Lingo::getTheEntity(int entity, Datum &id, int field) {
d.type = INT;
d.u.i = _vm->_keyCode;
break;
+ case kTheLastClick:
+ d.type = INT;
+ d.u.i = _vm->getMacTicks() - _vm->getCurrentScore()->_lastClickTime;
+ break;
+ case kTheLastEvent:
+ d.type = INT;
+ d.u.i = _vm->getMacTicks() - _vm->getCurrentScore()->_lastEventTime;
+ break;
+ case kTheLastFrame:
+ d.type = INT;
+ d.u.i = _vm->getCurrentScore()->_frames.size() - 1;
+ break;
+ case kTheLastKey:
+ d.type = INT;
+ d.u.i = _vm->getMacTicks() - _vm->getCurrentScore()->_lastKeyTime;
+ break;
+ case kTheLastRoll:
+ d.type = INT;
+ d.u.i = _vm->getMacTicks() - _vm->getCurrentScore()->_lastRollTime;
+ break;
case kTheMachineType:
// 1 - Macintosh 512Ke D2
// 2 - Macintosh Plus D2
@@ -400,14 +420,6 @@ Datum Lingo::getTheEntity(int entity, Datum &id, int field) {
d.type = INT;
d.u.i = _vm->_machineType;
break;
- case kTheMouseH:
- d.type = INT;
- d.u.i = g_system->getEventManager()->getMousePos().x;
- break;
- case kTheMouseV:
- d.type = INT;
- d.u.i = g_system->getEventManager()->getMousePos().y;
- break;
case kTheMouseCast:
{
Common::Point pos = g_system->getEventManager()->getMousePos();
@@ -420,6 +432,14 @@ Datum Lingo::getTheEntity(int entity, Datum &id, int field) {
d.u.i = -1;
}
break;
+ case kTheMouseH:
+ d.type = INT;
+ d.u.i = g_system->getEventManager()->getMousePos().x;
+ break;
+ case kTheMouseV:
+ d.type = INT;
+ d.u.i = g_system->getEventManager()->getMousePos().y;
+ break;
case kThePerFrameHook:
warning("STUB: Lingo::getTheEntity(): getting the perframehook");
break;
@@ -427,6 +447,11 @@ Datum Lingo::getTheEntity(int entity, Datum &id, int field) {
d.type = FLOAT;
d.u.f = M_PI;
break;
+ case kTheQuickTimePresent:
+ // QuickTime is always present for scummvm
+ d.type = INT;
+ d.u.i = 1;
+ break;
case kTheSprite:
d = getTheSprite(id, field);
break;
@@ -439,30 +464,9 @@ Datum Lingo::getTheEntity(int entity, Datum &id, int field) {
d.type = INT;
d.u.i = _vm->getCurrentScore()->_mouseIsDown;
break;
- case kTheLastFrame:
- d.type = INT;
- d.u.i = _vm->getCurrentScore()->_frames.size() - 1;
- break;
- case kTheLastEvent:
- d.type = INT;
- d.u.i = _vm->getMacTicks() - _vm->getCurrentScore()->_lastEventTime;
- break;
- case kTheLastClick:
- d.type = INT;
- d.u.i = _vm->getMacTicks() - _vm->getCurrentScore()->_lastClickTime;
- break;
- case kTheLastKey:
- d.type = INT;
- d.u.i = _vm->getMacTicks() - _vm->getCurrentScore()->_lastKeyTime;
- break;
- case kTheLastRoll:
- d.type = INT;
- d.u.i = _vm->getMacTicks() - _vm->getCurrentScore()->_lastRollTime;
- break;
- case kTheQuickTimePresent:
- // QuickTime is always present for scummvm
+ case kTheTimer:
d.type = INT;
- d.u.i = 1;
+ d.u.i = _vm->getMacTicks() - _vm->getCurrentScore()->_lastTimerReset;
break;
default:
warning("Lingo::getTheEntity(): Unprocessed getting field \"%s\" of entity %s", field2str(field), entity2str(entity));
diff --git a/engines/director/score.cpp b/engines/director/score.cpp
index 59fe22ff41..45aba04df2 100644
--- a/engines/director/score.cpp
+++ b/engines/director/score.cpp
@@ -80,6 +80,7 @@ Score::Score(DirectorEngine *vm) {
_lastKeyTime = _lastEventTime;
_lastClickTime = _lastEventTime;
_lastRollTime = _lastEventTime;
+ _lastTimerReset = _lastEventTime;
// FIXME: TODO: Check whether the original truely does it
if (_vm->getVersion() <= 3) {
diff --git a/engines/director/score.h b/engines/director/score.h
index b06158d8d4..9b31b9ed92 100644
--- a/engines/director/score.h
+++ b/engines/director/score.h
@@ -146,6 +146,7 @@ public:
uint32 _lastRollTime;
uint32 _lastClickTime;
uint32 _lastKeyTime;
+ uint32 _lastTimerReset;
bool _stopPlay;
uint32 _nextFrameTime;
More information about the Scummvm-git-logs
mailing list