[Scummvm-git-logs] scummvm master -> fcb3c6253f1a9c0abb4bf6118340dc8c94037a28
rvanlaar
noreply at scummvm.org
Sat Feb 22 22:51:25 UTC 2025
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:
eb6dc58b6f DIRECTOR: LINGO: XTRA: TimeXtra: implement getTime
c76ace988e JANITORIAL: remove superfluous whiteline
fcb3c6253f DIRECTOR: LINGO: b_script implement castLib query
Commit: eb6dc58b6f95e16b6951f8161d39ec6fba5aa8f1
https://github.com/scummvm/scummvm/commit/eb6dc58b6f95e16b6951f8161d39ec6fba5aa8f1
Author: Roland van Laar (roland at rolandvanlaar.nl)
Date: 2025-02-22T23:50:45+01:00
Commit Message:
DIRECTOR: LINGO: XTRA: TimeXtra: implement getTime
Testing on win95 showed the following:
Return value is hours * 3600 + minutes * 60 + seconds
where the starting point 01:00 is 0.
Safecrackers only needs the number of seconds since the start of the game.
Since not all platforms that run ScummVM have a clock, it's implemented as
the number of seconds since the start of ScummVM.
Changed paths:
engines/director/lingo/xtras/timextra.cpp
diff --git a/engines/director/lingo/xtras/timextra.cpp b/engines/director/lingo/xtras/timextra.cpp
index 1797d1d7e4d..75b41dc95bd 100644
--- a/engines/director/lingo/xtras/timextra.cpp
+++ b/engines/director/lingo/xtras/timextra.cpp
@@ -41,6 +41,17 @@ new object me, any
*/
+
+/**************************************************
+ Return value is hours * 3600 + minutes * 60 + seconds
+ where the starting point 01:00 is 0.
+
+ Safecrackers only needs the number of seconds since the start of the game.
+ Since not all platforms that run ScummVM have a clock, it's implemented as
+ the number of seconds since the start of ScummVM.
+ **************************************************/
+
+
namespace Director {
const char *const TimextraXtra::xlibName = "Timextra";
@@ -95,6 +106,11 @@ void TimextraXtra::m_new(int nargs) {
g_lingo->push(g_lingo->_state->me);
}
-XOBJSTUB(TimextraXtra::m_getTime, 0)
+void TimextraXtra::m_getTime(int nargs) {
+ ARGNUMCHECK(0);
+ int32 seconds = g_system->getMillis() / 1000;
+ Datum const res(seconds);
+ g_lingo->push(res);
+}
}
Commit: c76ace988e1d25c5c33150f2fa6709e53486eb2d
https://github.com/scummvm/scummvm/commit/c76ace988e1d25c5c33150f2fa6709e53486eb2d
Author: Roland van Laar (roland at rolandvanlaar.nl)
Date: 2025-02-22T23:50:46+01:00
Commit Message:
JANITORIAL: remove superfluous whiteline
Changed paths:
engines/director/lingo/xtras/timextra.cpp
diff --git a/engines/director/lingo/xtras/timextra.cpp b/engines/director/lingo/xtras/timextra.cpp
index 75b41dc95bd..a2740d1fb5b 100644
--- a/engines/director/lingo/xtras/timextra.cpp
+++ b/engines/director/lingo/xtras/timextra.cpp
@@ -97,7 +97,6 @@ void TimextraXtra::open(ObjectType type, const Common::Path &path) {
void TimextraXtra::close(ObjectType type) {
TimextraXtraObject::cleanupMethods();
g_lingo->_globalvars[xlibName] = Datum();
-
}
void TimextraXtra::m_new(int nargs) {
Commit: fcb3c6253f1a9c0abb4bf6118340dc8c94037a28
https://github.com/scummvm/scummvm/commit/fcb3c6253f1a9c0abb4bf6118340dc8c94037a28
Author: Roland van Laar (roland at rolandvanlaar.nl)
Date: 2025-02-22T23:50:46+01:00
Commit Message:
DIRECTOR: LINGO: b_script implement castLib query
For `script`, as it's with `member`, it's possible to specify the
castlib. When two args are given query for the member together with the castlib.
This is used in Safecracker in the following way:
set gTimeObject to new(script "Timer Parent" of castLib "MAIN.CST")
Changed paths:
engines/director/lingo/lingo-builtins.cpp
diff --git a/engines/director/lingo/lingo-builtins.cpp b/engines/director/lingo/lingo-builtins.cpp
index c98bde49118..8eb649dd23d 100644
--- a/engines/director/lingo/lingo-builtins.cpp
+++ b/engines/director/lingo/lingo-builtins.cpp
@@ -234,7 +234,7 @@ static const BuiltinProto builtins[] = {
{ "cast", LB::b_cast, 1, 1, 400, FBLTIN }, // D4 f
{ "castLib", LB::b_castLib, 1, 1, 500, FBLTIN }, // D5 f
{ "member", LB::b_member, 1, 2, 500, FBLTIN }, // D5 f
- { "script", LB::b_script, 1, 1, 400, FBLTIN }, // D4 f
+ { "script", LB::b_script, 1, 2, 400, FBLTIN }, // D4 f
{ "sprite", LB::b_sprite, 1, 1, 500, FBLTIN }, // D5 f
{ "window", LB::b_window, 1, 1, 400, FBLTIN }, // D4 f
{ "windowPresent", LB::b_windowPresent,1, 1, 500, FBLTIN }, // D5 f
@@ -3511,13 +3511,15 @@ void LB::b_member(int nargs) {
}
void LB::b_script(int nargs) {
- Datum d = g_lingo->pop();
- // FIXME: Check with later versions of director
- // The kCastText check version breaks Phibos, which loads a
- // non-kCastText script using this builtin.
- // With the kCastText version, Phibos crashes during its intro.
- // CastMemberID memberID = d.asMemberID(kCastText);
- CastMemberID memberID = d.asMemberID();
+ CastMemberID memberID;
+ if (nargs == 1) {
+ Datum member = g_lingo->pop();
+ memberID = member.asMemberID();
+ } else if (nargs == 2) {
+ Datum library = g_lingo->pop();
+ Datum member = g_lingo->pop();
+ memberID = g_lingo->toCastMemberID(member, library);
+ }
CastMember *cast = g_director->getCurrentMovie()->getCastMember(memberID);
if (cast) {
@@ -3539,7 +3541,7 @@ void LB::b_script(int nargs) {
return;
}
}
- warning("b_script(): No script context found for '%s'", d.asString(true).c_str());
+ warning("b_script(): No script context found for '%s'", memberID.asString().c_str());
g_lingo->push(Datum());
}
More information about the Scummvm-git-logs
mailing list