[Scummvm-git-logs] scummvm master -> 2b40cedad7af02625206dd73eb9c6d1acc8e3e7d
moralrecordings
code at moral.net.au
Mon May 25 15:46:48 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:
2b40cedad7 DIRECTOR: Add builtin b_play
Commit: 2b40cedad7af02625206dd73eb9c6d1acc8e3e7d
https://github.com/scummvm/scummvm/commit/2b40cedad7af02625206dd73eb9c6d1acc8e3e7d
Author: Scott Percival (code at moral.net.au)
Date: 2020-05-25T23:46:01+08:00
Commit Message:
DIRECTOR: Add builtin b_play
Changed paths:
engines/director/lingo/lingo-builtins.cpp
engines/director/lingo/lingo-builtins.h
engines/director/lingo/lingo-funcs.cpp
diff --git a/engines/director/lingo/lingo-builtins.cpp b/engines/director/lingo/lingo-builtins.cpp
index 8b6751342a..0bd24925b6 100644
--- a/engines/director/lingo/lingo-builtins.cpp
+++ b/engines/director/lingo/lingo-builtins.cpp
@@ -147,7 +147,7 @@ static struct BuiltinProto {
{ "nothing", LB::b_nothing, 0, 0, false, 2, BLTIN }, // D2 c
{ "pass", LB::b_pass, 0, 0, false, 4, BLTIN }, // D4 c
{ "pause", LB::b_pause, 0, 0, false, 2, BLTIN }, // D2 c
- // play // D2 c
+ { "play", LB::b_play, 1, 2, false, 2, BLTIN }, // D2 c
{ "playAccel", LB::b_playAccel, -1,0, false, 2, BLTIN }, // D2
// play done // D2
{ "preLoad", LB::b_preLoad, -1,0, false, 3, BLTIN }, // D3.1 c
@@ -1203,6 +1203,38 @@ void LB::b_pause(int nargs) {
g_director->_playbackPaused = true;
}
+void LB::b_play(int nargs) {
+ // Builtin function for play as used by the Director bytecode engine.
+ //
+ // Accepted arguments:
+ // 0 # "play done"
+ // (STRING|INT) frame
+ // STRING movie, (STRING|INT) frame
+
+ if (nargs >= 1 && nargs <= 2) {
+ Datum movie;
+ Datum frame;
+
+ Datum firstArg = g_lingo->pop();
+ if (nargs == 2) {
+ movie = firstArg;
+ frame = g_lingo->pop();
+ } else {
+ if (firstArg.asInt() == 0) {
+ frame.type = SYMBOL;
+ frame.u.s = new Common::String("done");
+ } else {
+ frame = firstArg;
+ }
+ }
+
+ g_lingo->func_play(frame, movie);
+ } else {
+ warning("b_play: expected 1 or 2 args, not %d", nargs);
+ g_lingo->dropStack(nargs);
+ }
+}
+
void LB::b_playAccel(int nargs) {
g_lingo->printSTUBWithArglist("b_playAccel", nargs);
diff --git a/engines/director/lingo/lingo-builtins.h b/engines/director/lingo/lingo-builtins.h
index 26213e5eef..bd4e58278e 100644
--- a/engines/director/lingo/lingo-builtins.h
+++ b/engines/director/lingo/lingo-builtins.h
@@ -135,6 +135,7 @@ namespace LB {
void b_nothing(int nargs);
void b_pass(int nargs);
void b_pause(int nargs);
+ void b_play(int nargs);
void b_playAccel(int nargs);
void b_preLoad(int nargs);
void b_preLoadCast(int nargs);
diff --git a/engines/director/lingo/lingo-funcs.cpp b/engines/director/lingo/lingo-funcs.cpp
index e9f2e8f232..63f6d9e975 100644
--- a/engines/director/lingo/lingo-funcs.cpp
+++ b/engines/director/lingo/lingo-funcs.cpp
@@ -285,12 +285,6 @@ void Lingo::func_gotoprevious() {
void Lingo::func_play(Datum &frame, Datum &movie) {
MovieReference ref;
- if (movie.type != VOID) {
- warning("STUB: func_play()");
-
- return;
- }
-
// play #done
if (frame.type == SYMBOL) {
if (!frame.u.s->equals("done")) {
More information about the Scummvm-git-logs
mailing list