aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/director/lingo/lingo-code.cpp2
-rw-r--r--engines/director/lingo/lingo-funcs.cpp15
-rw-r--r--engines/director/lingo/lingo.h1
3 files changed, 17 insertions, 1 deletions
diff --git a/engines/director/lingo/lingo-code.cpp b/engines/director/lingo/lingo-code.cpp
index d2cdfb2d07..b7fc484d91 100644
--- a/engines/director/lingo/lingo-code.cpp
+++ b/engines/director/lingo/lingo-code.cpp
@@ -1007,7 +1007,7 @@ void Lingo::c_play() {
}
void Lingo::c_playdone() {
- warning("STUB: c_playdone()");
+ g_lingo->func_playdone();
}
void Lingo::c_call() {
diff --git a/engines/director/lingo/lingo-funcs.cpp b/engines/director/lingo/lingo-funcs.cpp
index 9232bd1a52..58800f226d 100644
--- a/engines/director/lingo/lingo-funcs.cpp
+++ b/engines/director/lingo/lingo-funcs.cpp
@@ -286,6 +286,21 @@ void Lingo::func_play(Datum &frame, Datum &movie) {
func_goto(frame, movie);
}
+void Lingo::func_playdone() {
+ MovieReference ref = _vm->_movieStack.back();
+
+ _vm->_movieStack.pop_back();
+
+ Datum m, f;
+
+ warning("STUB: func_playdone()");
+ m.type = VOID;
+ f.type = INT;
+ f.u.i = ref.frameI;
+
+ func_goto(f, m);
+}
+
void Lingo::func_cursor(int c) {
if (_cursorOnStack) {
// pop cursor
diff --git a/engines/director/lingo/lingo.h b/engines/director/lingo/lingo.h
index 6170acfdaf..516e91c6ed 100644
--- a/engines/director/lingo/lingo.h
+++ b/engines/director/lingo/lingo.h
@@ -499,6 +499,7 @@ public:
void func_gotonext();
void func_gotoprevious();
void func_play(Datum &frame, Datum &movie);
+ void func_playdone();
void func_cursor(int c);
int func_marker(int m);