DIRECTOR: Roll back func_goto freezing logic

This may have been a mistake; freezing isn't necessarily bad, it just
needs to pick up running the same script after loading the new frame.
Will have another go after writing a D4 test with all the known edge
cases. Makes The Dark Eye work again.

Reverts commit 331df0a138fff525b5084776c372bd2868f340d9.
This commit is contained in:
Scott Percival 2024-01-22 08:57:52 +08:00
parent f7d13fdd35
commit 46772a8a32
No known key found for this signature in database

View File

@ -53,11 +53,11 @@ void Lingo::func_goto(Datum &frame, Datum &movie, bool calledfromgo) {
_vm->_skipFrameAdvance = true;
// If there isn't already frozen Lingo (e.g. from a previous func_goto we haven't yet unfrozen),
// freeze this script context. We'll return to it after entering the next frame.
g_lingo->_freezeState = true;
if (movie.type != VOID) {
// If there isn't already frozen Lingo (e.g. from a previous func_goto we haven't yet unfrozen),
// freeze this script context. We'll return to it after entering the next movie.
g_lingo->_freezeState = true;
Common::String movieFilenameRaw = movie.asString();
if (!stage->setNextMovie(movieFilenameRaw))
@ -95,11 +95,6 @@ void Lingo::func_goto(Datum &frame, Datum &movie, bool calledfromgo) {
return;
}
if (g_director->getVersion() < 400)
// If there isn't already frozen Lingo (e.g. from a previous func_goto we haven't yet unfrozen),
// freeze this script context. We'll return to it after entering the next frame.
g_lingo->_freezeState = true;
if (frame.type == STRING) {
debugC(3, kDebugLingoExec, "Lingo::func_goto(): going to frame \"%s\"", frame.u.s->c_str());
score->setStartToLabel(*frame.u.s);