[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