aboutsummaryrefslogtreecommitdiff
path: root/engines/director/lingo
diff options
context:
space:
mode:
authorEugene Sandulenko2017-02-24 19:11:53 +0100
committerEugene Sandulenko2017-02-24 19:11:53 +0100
commit99f976e3aeb2879d9fbe7efe30b1f2a9a52a535b (patch)
treecfdb048e40090a9f172e90e4e71d5e40ac179f5d /engines/director/lingo
parente65df86ef1f22089eb9803502087daba3a29c2e2 (diff)
downloadscummvm-rg350-99f976e3aeb2879d9fbe7efe30b1f2a9a52a535b.tar.gz
scummvm-rg350-99f976e3aeb2879d9fbe7efe30b1f2a9a52a535b.tar.bz2
scummvm-rg350-99f976e3aeb2879d9fbe7efe30b1f2a9a52a535b.zip
DIRECTOR: Lingo: Initial code for func_play()
Diffstat (limited to 'engines/director/lingo')
-rw-r--r--engines/director/lingo/lingo-code.cpp14
-rw-r--r--engines/director/lingo/lingo-funcs.cpp18
-rw-r--r--engines/director/lingo/lingo.h1
3 files changed, 16 insertions, 17 deletions
diff --git a/engines/director/lingo/lingo-code.cpp b/engines/director/lingo/lingo-code.cpp
index 3cc3d0d540..d2cdfb2d07 100644
--- a/engines/director/lingo/lingo-code.cpp
+++ b/engines/director/lingo/lingo-code.cpp
@@ -1003,19 +1003,7 @@ void Lingo::c_play() {
if (mode.u.i == 1 || mode.u.i == 3)
frame = g_lingo->pop();
- if (frame.type == VOID) {
- frame.u.s = new Common::String("<void>");
- frame.type = STRING;
- }
- frame.toString();
-
- if (movie.type == VOID) {
- movie.u.s = new Common::String("<void>");
- movie.type = STRING;
- }
- movie.toString();
-
- warning("STUB: c_play(%s, %s)", frame.u.s->c_str(), movie.u.s->c_str());
+ g_lingo->func_play(frame, movie);
}
void Lingo::c_playdone() {
diff --git a/engines/director/lingo/lingo-funcs.cpp b/engines/director/lingo/lingo-funcs.cpp
index d4e24bcd32..9232bd1a52 100644
--- a/engines/director/lingo/lingo-funcs.cpp
+++ b/engines/director/lingo/lingo-funcs.cpp
@@ -172,7 +172,7 @@ void Lingo::func_mciwait(Common::String &s) {
}
void Lingo::func_goto(Datum &frame, Datum &movie) {
- g_director->_playbackPaused = false;
+ _vm->_playbackPaused = false;
if (!_vm->getCurrentScore())
return;
@@ -255,7 +255,7 @@ void Lingo::func_gotoloop() {
_vm->getCurrentScore()->gotoLoop();
- g_director->_skipFrameAdvance = true;
+ _vm->_skipFrameAdvance = true;
}
void Lingo::func_gotonext() {
@@ -264,7 +264,7 @@ void Lingo::func_gotonext() {
_vm->getCurrentScore()->gotoNext();
- g_director->_skipFrameAdvance = true;
+ _vm->_skipFrameAdvance = true;
}
void Lingo::func_gotoprevious() {
@@ -273,7 +273,17 @@ void Lingo::func_gotoprevious() {
_vm->getCurrentScore()->gotoPrevious();
- g_director->_skipFrameAdvance = true;
+ _vm->_skipFrameAdvance = true;
+}
+
+void Lingo::func_play(Datum &frame, Datum &movie) {
+ MovieReference ref;
+
+ ref.frameI = _vm->getCurrentScore()->getCurrentFrame();
+
+ _vm->_movieStack.push_back(ref);
+
+ func_goto(frame, movie);
}
void Lingo::func_cursor(int c) {
diff --git a/engines/director/lingo/lingo.h b/engines/director/lingo/lingo.h
index 550156c1c7..6170acfdaf 100644
--- a/engines/director/lingo/lingo.h
+++ b/engines/director/lingo/lingo.h
@@ -498,6 +498,7 @@ public:
void func_gotoloop();
void func_gotonext();
void func_gotoprevious();
+ void func_play(Datum &frame, Datum &movie);
void func_cursor(int c);
int func_marker(int m);