diff options
author | Eugene Sandulenko | 2017-02-14 19:03:02 +0100 |
---|---|---|
committer | Eugene Sandulenko | 2017-02-14 19:03:44 +0100 |
commit | dcdce7b055742b6bc53a208a4d1292482f87bb30 (patch) | |
tree | 8f9d4394eaba302b1d703356e79f323b20996b5f /engines/director | |
parent | 748878bf6b52a289902c78a5a3206d6db1aba270 (diff) | |
download | scummvm-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.cpp | 1 | ||||
-rw-r--r-- | engines/director/director.h | 1 | ||||
-rw-r--r-- | engines/director/lingo/lingo-funcs.cpp | 2 | ||||
-rw-r--r-- | engines/director/score.cpp | 4 |
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; |