aboutsummaryrefslogtreecommitdiff
path: root/engines/director/lingo/lingo-code.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/director/lingo/lingo-code.cpp')
-rw-r--r--engines/director/lingo/lingo-code.cpp36
1 files changed, 23 insertions, 13 deletions
diff --git a/engines/director/lingo/lingo-code.cpp b/engines/director/lingo/lingo-code.cpp
index 21cfef735d..0c1b5d61e4 100644
--- a/engines/director/lingo/lingo-code.cpp
+++ b/engines/director/lingo/lingo-code.cpp
@@ -677,18 +677,13 @@ void Lingo::c_goto() {
Datum mode = g_lingo->pop();
Datum frame, movie;
- if (mode.u.i == 1 || mode.u.i == 3)
- frame = g_lingo->pop();
-
if (mode.u.i == 2 || mode.u.i == 3)
movie = g_lingo->pop();
- frame.toString();
- movie.toString();
-
- warning("c_goto(%s, %s)", frame.u.s->c_str(), movie.u.s->c_str());
+ if (mode.u.i == 1 || mode.u.i == 3)
+ frame = g_lingo->pop();
- //g_lingo->func_goto(frame, movie);
+ g_lingo->func_goto(frame, movie);
}
void Lingo::c_gotoloop() {
@@ -704,13 +699,28 @@ void Lingo::c_gotoprevious() {
}
void Lingo::c_play() {
- Common::String frame((char *)&(*g_lingo->_currentScript)[g_lingo->_pc]);
- g_lingo->_pc += g_lingo->calcStringAlignment(frame.c_str());
+ Datum mode = g_lingo->pop();
+ Datum frame, movie;
- Common::String movie((char *)&(*g_lingo->_currentScript)[g_lingo->_pc]);
- g_lingo->_pc += g_lingo->calcStringAlignment(movie.c_str());
+ if (mode.u.i == 2 || mode.u.i == 3)
+ movie = g_lingo->pop();
+
+ 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.c_str(), movie.c_str());
+ warning("STUB: c_play(%s, %s)", frame.u.s->c_str(), movie.u.s->c_str());
}
void Lingo::c_playdone() {