From 5eb38c5d1c162cc894e57959882f268970353afe Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Fri, 24 Feb 2017 19:16:22 +0100 Subject: DIRECTOR: Lingo: Initial code for func_playdone() --- engines/director/lingo/lingo-code.cpp | 2 +- engines/director/lingo/lingo-funcs.cpp | 15 +++++++++++++++ engines/director/lingo/lingo.h | 1 + 3 files changed, 17 insertions(+), 1 deletion(-) 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); -- cgit v1.2.3