[Scummvm-git-logs] scummvm master -> 941ac30e061a76e5c152622948023d3477f5e878

sev- sev at scummvm.org
Sun Jun 28 20:20:18 UTC 2020


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

Summary:
6e3669da6b DIRECTOR: LINGO: Implemented 'the time'
642dee7137 DIRECTOR: LINGO: Implemented 'the date'
941ac30e06 DIRECTOR: LINGO: Added all tests for 'the date' and 'the time'


Commit: 6e3669da6bdd1466eabbaac838c667c6abfe241a
    https://github.com/scummvm/scummvm/commit/6e3669da6bdd1466eabbaac838c667c6abfe241a
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-06-28T22:00:35+02:00

Commit Message:
DIRECTOR: LINGO: Implemented 'the time'

Changed paths:
    engines/director/lingo/lingo-the.cpp
    engines/director/lingo/lingo.h


diff --git a/engines/director/lingo/lingo-the.cpp b/engines/director/lingo/lingo-the.cpp
index 474961b7ce..d2d1df3114 100644
--- a/engines/director/lingo/lingo-the.cpp
+++ b/engines/director/lingo/lingo-the.cpp
@@ -563,6 +563,9 @@ Datum Lingo::getTheEntity(int entity, Datum &id, int field) {
 		d.type = INT;
 		d.u.i = _vm->_wm->_mouseDown;
 		break;
+	case kTheTime:
+		d = getTheTime(field);
+		break;
 	case kTheTimer:
 		d.type = INT;
 		d.u.i = _vm->getMacTicks() - _vm->getCurrentScore()->_lastTimerReset;
@@ -665,11 +668,6 @@ void Lingo::setTheEntity(int entity, Datum &id, int field, Datum &d) {
 	}
 }
 
-void Lingo::setTheMenuItemEntity(int entity, Datum &menuId, int field, Datum &menuItemId, Datum &d) {
-	warning("STUB: setTheMenuItemEntity(%s, %s, %s, %s, %s)", entity2str(entity), menuId.asString(true).c_str(), field2str(field),
-				menuItemId.asString(true).c_str(), d.asString(true).c_str());
-}
-
 Datum Lingo::getTheMenuItemEntity(int entity, Datum &menuId, int field, Datum &menuItemId) {
 	warning("STUB: getTheMenuItemEntity(%s, %s, %s, %s)", entity2str(entity), menuId.asString(true).c_str(), field2str(field),
 				menuItemId.asString(true).c_str());
@@ -677,6 +675,11 @@ Datum Lingo::getTheMenuItemEntity(int entity, Datum &menuId, int field, Datum &m
 	return Datum();
 }
 
+void Lingo::setTheMenuItemEntity(int entity, Datum &menuId, int field, Datum &menuItemId, Datum &d) {
+	warning("STUB: setTheMenuItemEntity(%s, %s, %s, %s, %s)", entity2str(entity), menuId.asString(true).c_str(), field2str(field),
+				menuItemId.asString(true).c_str(), d.asString(true).c_str());
+}
+
 Datum Lingo::getTheSprite(Datum &id1, int field) {
 	Datum d;
 	int id = 0;
@@ -1255,4 +1258,28 @@ void Lingo::setObjectProp(Datum &obj, Common::String &propName, Datum &val) {
 	}
 }
 
+Datum Lingo::getTheTime(int field) {
+	TimeDate t;
+	g_system->getTimeAndDate(t);
+
+	Common::String s;
+
+	Datum d;
+	d.type = STRING;
+
+	switch (field) {
+	case kTheLong:
+		s = Common::String::format("%d:%02d:%02d %s", t.tm_hour % 12, t.tm_min, t.tm_sec, t.tm_hour < 12 ? "AM" : "PM");
+		break;
+
+	default:
+		s = Common::String::format("%d:%02d %s", t.tm_hour % 12, t.tm_min, t.tm_hour < 12 ? "AM" : "PM");
+		break;
+	}
+
+	d.u.s = new Common::String(s);
+
+	return d;
+}
+
 } // End of namespace Director
diff --git a/engines/director/lingo/lingo.h b/engines/director/lingo/lingo.h
index 89231416ee..6881b80726 100644
--- a/engines/director/lingo/lingo.h
+++ b/engines/director/lingo/lingo.h
@@ -483,20 +483,22 @@ public:
 	// lingo-the.cpp
 public:
 	void initTheEntities();
+	const char *entity2str(int id);
+	const char *field2str(int id);
+
+	Datum getTheEntity(int entity, Datum &id, int field);
 	void setTheEntity(int entity, Datum &id, int field, Datum &d);
+	Datum getTheMenuItemEntity(int entity, Datum &menuId, int field, Datum &menuItemId);
 	void setTheMenuItemEntity(int entity, Datum &menuId, int field, Datum &menuItemId, Datum &d);
-	void setTheSprite(Datum &id, int field, Datum &d);
-	void setTheCast(Datum &id, int field, Datum &d);
-	Datum getTheEntity(int entity, Datum &id, int field);
-	void setTheField(Datum &id1, int field, Datum &d);
 	Datum getTheSprite(Datum &id, int field);
+	void setTheSprite(Datum &id, int field, Datum &d);
 	Datum getTheCast(Datum &id, int field);
+	void setTheCast(Datum &id, int field, Datum &d);
 	Datum getTheField(Datum &id1, int field);
+	void setTheField(Datum &id1, int field, Datum &d);
 	Datum getObjectProp(Datum &obj, Common::String &propName);
 	void setObjectProp(Datum &obj, Common::String &propName, Datum &d);
-	Datum getTheMenuItemEntity(int entity, Datum &menuId, int field, Datum &menuItemId);
-	const char *entity2str(int id);
-	const char *field2str(int id);
+	Datum getTheTime(int field);
 
 private:
 	Common::StringArray _entityNames;


Commit: 642dee71376414d9ba3fd0f51c6bbe2be92d12ed
    https://github.com/scummvm/scummvm/commit/642dee71376414d9ba3fd0f51c6bbe2be92d12ed
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-06-28T22:19:32+02:00

Commit Message:
DIRECTOR: LINGO: Implemented 'the date'

Changed paths:
    engines/director/lingo/lingo-the.cpp
    engines/director/lingo/lingo.h


diff --git a/engines/director/lingo/lingo-the.cpp b/engines/director/lingo/lingo-the.cpp
index d2d1df3114..4d0e722aa8 100644
--- a/engines/director/lingo/lingo-the.cpp
+++ b/engines/director/lingo/lingo-the.cpp
@@ -361,6 +361,9 @@ Datum Lingo::getTheEntity(int entity, Datum &id, int field) {
 		d.type = INT;
 		d.u.i = 1;
 		break;
+	case kTheDate:
+		d = getTheDate(field);
+		break;
 	case kTheFloatPrecision:
 		d.type = INT;
 		d.u.i = _floatPrecision;
@@ -1258,6 +1261,46 @@ void Lingo::setObjectProp(Datum &obj, Common::String &propName, Datum &val) {
 	}
 }
 
+static const char *mfull[] = {
+	"January", "February", "March", "April", "May", "June",
+	"July", "August" "September", "October", "Novemver", "December"
+};
+
+static const char *wday[] = {
+	"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"
+};
+
+Datum Lingo::getTheDate(int field) {
+	TimeDate t;
+	g_system->getTimeAndDate(t);
+
+	Common::String s;
+
+	Datum d;
+	d.type = STRING;
+
+	const char *m = mfull[t.tm_mon];
+	const char *w = wday[t.tm_wday];
+
+	switch (field) {
+	case kTheAbbr:	// "Sat, Sep 7, 1991"
+		s = Common::String::format("%c%c%c, %c%c%c %d, %d", w[0], w[1], w[2], m[0], m[1], m[2], t.tm_mday, t.tm_year + 1900);
+		break;
+
+	case kTheLong:	// "Saturday, September 7, 1991"
+		s = Common::String::format("%s, %s %d, %d", w, m, t.tm_mday, t.tm_year + 1900);
+		break;
+
+	default:		// "9/7/91"
+		s = Common::String::format("%d/%d/%02d", t.tm_mday, t.tm_mon, t.tm_year % 100);
+		break;
+	}
+
+	d.u.s = new Common::String(s);
+
+	return d;
+}
+
 Datum Lingo::getTheTime(int field) {
 	TimeDate t;
 	g_system->getTimeAndDate(t);
diff --git a/engines/director/lingo/lingo.h b/engines/director/lingo/lingo.h
index 6881b80726..93b9496693 100644
--- a/engines/director/lingo/lingo.h
+++ b/engines/director/lingo/lingo.h
@@ -498,6 +498,7 @@ public:
 	void setTheField(Datum &id1, int field, Datum &d);
 	Datum getObjectProp(Datum &obj, Common::String &propName);
 	void setObjectProp(Datum &obj, Common::String &propName, Datum &d);
+	Datum getTheDate(int field);
 	Datum getTheTime(int field);
 
 private:


Commit: 941ac30e061a76e5c152622948023d3477f5e878
    https://github.com/scummvm/scummvm/commit/941ac30e061a76e5c152622948023d3477f5e878
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-06-28T22:19:45+02:00

Commit Message:
DIRECTOR: LINGO: Added all tests for 'the date' and 'the time'

Changed paths:
    engines/director/lingo/tests/the.lingo


diff --git a/engines/director/lingo/tests/the.lingo b/engines/director/lingo/tests/the.lingo
index 83a383bab8..888f579aa7 100644
--- a/engines/director/lingo/tests/the.lingo
+++ b/engines/director/lingo/tests/the.lingo
@@ -5,10 +5,14 @@ put the loch of sprite 4
 set the loch of sprite 5 to 10
 set the castnum of sprite 8 to the number of cast "A Blank Castmember"
 
+put the time
+put the abbrev time
+put the long time
+
 put the date
+put the short date
+put the abbrev date
 put the long date
-put the abbreviated time
-put the short time
 
 set a = 5
 




More information about the Scummvm-git-logs mailing list