aboutsummaryrefslogtreecommitdiff
path: root/engines/director
diff options
context:
space:
mode:
authorEugene Sandulenko2017-02-14 19:03:02 +0100
committerEugene Sandulenko2017-02-14 19:03:44 +0100
commitdcdce7b055742b6bc53a208a4d1292482f87bb30 (patch)
tree8f9d4394eaba302b1d703356e79f323b20996b5f /engines/director
parent748878bf6b52a289902c78a5a3206d6db1aba270 (diff)
downloadscummvm-rg350-dcdce7b055742b6bc53a208a4d1292482f87bb30.tar.gz
scummvm-rg350-dcdce7b055742b6bc53a208a4d1292482f87bb30.tar.bz2
scummvm-rg350-dcdce7b055742b6bc53a208a4d1292482f87bb30.zip
DIRECTOR: Lingo: Fixed 'go to' functions
Diffstat (limited to 'engines/director')
-rw-r--r--engines/director/director.cpp1
-rw-r--r--engines/director/director.h1
-rw-r--r--engines/director/lingo/lingo-funcs.cpp2
-rw-r--r--engines/director/score.cpp4
4 files changed, 7 insertions, 1 deletions
diff --git a/engines/director/director.cpp b/engines/director/director.cpp
index 4806b57cdf..f26d873eff 100644
--- a/engines/director/director.cpp
+++ b/engines/director/director.cpp
@@ -89,6 +89,7 @@ DirectorEngine::DirectorEngine(OSystem *syst, const DirectorGameDescription *gam
_keyCode = 0;
_machineType = 9; // Macintosh IIci
_playbackPaused = false;
+ g_director->_skipFrameAdvance = false;
}
DirectorEngine::~DirectorEngine() {
diff --git a/engines/director/director.h b/engines/director/director.h
index 001393bc97..eeb9c6b8d5 100644
--- a/engines/director/director.h
+++ b/engines/director/director.h
@@ -108,6 +108,7 @@ public:
int _keyCode;
int _machineType;
bool _playbackPaused;
+ bool _skipFrameAdvance;
Common::String _nextMovie;
Common::String _nextMovieFrameS;
diff --git a/engines/director/lingo/lingo-funcs.cpp b/engines/director/lingo/lingo-funcs.cpp
index 7056d9a863..5ddfd0db62 100644
--- a/engines/director/lingo/lingo-funcs.cpp
+++ b/engines/director/lingo/lingo-funcs.cpp
@@ -223,6 +223,8 @@ void Lingo::func_goto(Datum &frame, Datum &movie) {
if (frame.type == VOID)
return;
+ _vm->_skipFrameAdvance = true;
+
if (frame.type == STRING) {
if (_vm->getCurrentScore())
_vm->getCurrentScore()->setStartToLabel(*frame.u.s);
diff --git a/engines/director/score.cpp b/engines/director/score.cpp
index 31f97f76a3..ca016d0051 100644
--- a/engines/director/score.cpp
+++ b/engines/director/score.cpp
@@ -884,9 +884,11 @@ void Score::update() {
}
}
- if (!g_director->_playbackPaused)
+ if (!g_director->_playbackPaused && !g_director->_skipFrameAdvance)
_currentFrame++;
+ g_director->_skipFrameAdvance = false;
+
if (_currentFrame >= _frames.size())
return;