[Scummvm-git-logs] scummvm master -> 829e4782c8d9e115bf715249f5e56fa79eddeb1a
djsrv
dservilla at gmail.com
Thu Jul 16 03:35:27 UTC 2020
This automated email contains information about 2 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
f71670e8d9 DIRECTOR: LINGO: Implement allow outdated lingo
829e4782c8 DIRECTOR: LINGO: Ignore garbage in D3 cast scripts
Commit: f71670e8d92b8642efd05e93e2c3f76446098fe0
https://github.com/scummvm/scummvm/commit/f71670e8d92b8642efd05e93e2c3f76446098fe0
Author: djsrv (dservilla at gmail.com)
Date: 2020-07-15T23:30:12-04:00
Commit Message:
DIRECTOR: LINGO: Implement allow outdated lingo
Changed paths:
engines/director/lingo/lingo-code.cpp
engines/director/lingo/lingo-preprocessor.cpp
engines/director/movie.cpp
engines/director/movie.h
engines/director/types.h
diff --git a/engines/director/lingo/lingo-code.cpp b/engines/director/lingo/lingo-code.cpp
index 7eefcf88a2..e94d2c5a9d 100644
--- a/engines/director/lingo/lingo-code.cpp
+++ b/engines/director/lingo/lingo-code.cpp
@@ -419,7 +419,7 @@ void LC::c_varpush() {
}
// Looking for the cast member constants
- if (g_director->getVersion() < 4) { // TODO: There could be a flag 'Allow Outdated Lingo' in Movie Info in D4
+ if (g_director->getVersion() < 4 || g_director->getCurrentMovie()->_allowOutdatedLingo) {
int val = castNumToNum(name.c_str());
if (val != -1) {
diff --git a/engines/director/lingo/lingo-preprocessor.cpp b/engines/director/lingo/lingo-preprocessor.cpp
index 11e181de1d..5c73092fa6 100644
--- a/engines/director/lingo/lingo-preprocessor.cpp
+++ b/engines/director/lingo/lingo-preprocessor.cpp
@@ -21,6 +21,7 @@
*/
#include "director/director.h"
+#include "director/movie.h"
#include "director/lingo/lingo.h"
namespace Director {
@@ -224,7 +225,7 @@ Common::String Lingo::codePreprocessor(const char *s, ScriptType type, uint16 id
}
debugC(2, kDebugParse | kDebugPreprocess, "line: %d '%s'", iflevel, line.c_str());
- if (type == kMovieScript && _vm->getVersion() <= 3 && !defFound) {
+ if (!defFound && type == kMovieScript && (_vm->getVersion() <= 3 || _vm->getCurrentMovie()->_allowOutdatedLingo)) {
tok = nexttok(line.c_str());
if (tok.equals("macro") || tok.equals("factory") || tok.equals("on")) {
defFound = true;
diff --git a/engines/director/movie.cpp b/engines/director/movie.cpp
index c5398cb7c4..a76a7ea01a 100644
--- a/engines/director/movie.cpp
+++ b/engines/director/movie.cpp
@@ -52,6 +52,8 @@ Movie::Movie(Stage *stage) {
_lastRollTime = _lastEventTime;
_lastTimerReset = _lastEventTime;
+ _allowOutdatedLingo = false;
+
_movieArchive = nullptr;
_cast = new Cast(this);
@@ -190,6 +192,9 @@ void Movie::loadFileInfo(Common::SeekableSubReadStreamEndian &stream) {
debugC(2, kDebugLoading, "****** Loading FileInfo VWFI");
InfoEntries fileInfo = Movie::loadInfoEntries(stream);
+
+ _allowOutdatedLingo = (fileInfo.flags & kMovieFlagAllowOutdatedLingo) != 0;
+
_script = fileInfo.strings[0].readString(false);
if (!_script.empty() && ConfMan.getBool("dump_scripts"))
@@ -212,6 +217,8 @@ void Movie::loadFileInfo(Common::SeekableSubReadStreamEndian &stream) {
}
if (debugChannelSet(3, kDebugLoading)) {
+ debug("VWFI: flags: %d", fileInfo.flags);
+ debug("VWFI: allow outdated lingo: %d", _allowOutdatedLingo);
debug("VWFI: script: '%s'", _script.c_str());
debug("VWFI: changed by: '%s'", _changedBy.c_str());
debug("VWFI: created by: '%s'", _createdBy.c_str());
diff --git a/engines/director/movie.h b/engines/director/movie.h
index 049983c6bf..c0c1e36584 100644
--- a/engines/director/movie.h
+++ b/engines/director/movie.h
@@ -126,6 +126,7 @@ public:
uint32 _lastTimerReset;
uint16 _stageColor;
Cast *_sharedCast;
+ bool _allowOutdatedLingo;
private:
Stage *_stage;
diff --git a/engines/director/types.h b/engines/director/types.h
index e3b2151216..aa49f48052 100644
--- a/engines/director/types.h
+++ b/engines/director/types.h
@@ -25,6 +25,10 @@
namespace Director {
+enum MovieFlag {
+ kMovieFlagAllowOutdatedLingo = (1 << 8)
+};
+
enum CastType {
kCastTypeNull = 0,
kCastBitmap = 1,
Commit: 829e4782c8d9e115bf715249f5e56fa79eddeb1a
https://github.com/scummvm/scummvm/commit/829e4782c8d9e115bf715249f5e56fa79eddeb1a
Author: djsrv (dservilla at gmail.com)
Date: 2020-07-15T23:31:47-04:00
Commit Message:
DIRECTOR: LINGO: Ignore garbage in D3 cast scripts
Changed paths:
engines/director/lingo/lingo-preprocessor.cpp
diff --git a/engines/director/lingo/lingo-preprocessor.cpp b/engines/director/lingo/lingo-preprocessor.cpp
index 5c73092fa6..c9bf5fd01d 100644
--- a/engines/director/lingo/lingo-preprocessor.cpp
+++ b/engines/director/lingo/lingo-preprocessor.cpp
@@ -225,7 +225,7 @@ Common::String Lingo::codePreprocessor(const char *s, ScriptType type, uint16 id
}
debugC(2, kDebugParse | kDebugPreprocess, "line: %d '%s'", iflevel, line.c_str());
- if (!defFound && type == kMovieScript && (_vm->getVersion() <= 3 || _vm->getCurrentMovie()->_allowOutdatedLingo)) {
+ if (!defFound && (type == kMovieScript || type == kCastScript) && (_vm->getVersion() <= 3 || _vm->getCurrentMovie()->_allowOutdatedLingo)) {
tok = nexttok(line.c_str());
if (tok.equals("macro") || tok.equals("factory") || tok.equals("on")) {
defFound = true;
More information about the Scummvm-git-logs
mailing list