diff options
-rw-r--r-- | engines/director/lingo/lingo-code.cpp | 2 | ||||
-rw-r--r-- | engines/director/lingo/lingo-funcs.cpp | 15 | ||||
-rw-r--r-- | engines/director/lingo/lingo.h | 1 |
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); |