[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