[Scummvm-git-logs] scummvm master -> ebbd65e13bfcb0431ff2d732607504059737a5f3

sev- sev at scummvm.org
Mon Aug 3 08:23:12 UTC 2020


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
ebbd65e13b DIRECTOR: Added 'extra' field to the patcher


Commit: ebbd65e13bfcb0431ff2d732607504059737a5f3
    https://github.com/scummvm/scummvm/commit/ebbd65e13bfcb0431ff2d732607504059737a5f3
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-08-03T10:22:01+02:00

Commit Message:
DIRECTOR: Added 'extra' field to the patcher

Some games have more than one version. In order to have possibility
to specify what is it, we now match desc.extra too

Changed paths:
    engines/director/detection.cpp
    engines/director/director.h
    engines/director/lingo/lingo-patcher.cpp


diff --git a/engines/director/detection.cpp b/engines/director/detection.cpp
index f93a05d71c..1b3d20c45b 100644
--- a/engines/director/detection.cpp
+++ b/engines/director/detection.cpp
@@ -58,6 +58,10 @@ Common::Language DirectorEngine::getLanguage() const {
 	return _gameDescription->desc.language;
 }
 
+const char *DirectorEngine::getExtra() {
+	return _gameDescription->desc.extra;
+}
+
 Common::String DirectorEngine::getEXEName() const {
 	StartMovie startMovie = getStartMovie();
 	if (startMovie.startMovie.size() > 0)
diff --git a/engines/director/director.h b/engines/director/director.h
index 5ad693af3d..1bb44a4de4 100644
--- a/engines/director/director.h
+++ b/engines/director/director.h
@@ -173,6 +173,7 @@ public:
 	uint16 getVersion() const;
 	Common::Platform getPlatform() const;
 	Common::Language getLanguage() const;
+	const char *getExtra();
 	Common::String getEXEName() const;
 	StartMovie getStartMovie() const;
 	DirectorSound *getSoundManager() const { return _soundManager; }
diff --git a/engines/director/lingo/lingo-patcher.cpp b/engines/director/lingo/lingo-patcher.cpp
index 90d6d92531..16d082fc55 100644
--- a/engines/director/lingo/lingo-patcher.cpp
+++ b/engines/director/lingo/lingo-patcher.cpp
@@ -32,6 +32,7 @@ using namespace Common;
 
 struct ScriptPatch {
 	const char *gameId;
+	const char *extra;
 	Common::Platform platform; // Specify kPlatformUnknown for skipping platform check
 	const char *movie;
 	ScriptType type;
@@ -41,107 +42,107 @@ struct ScriptPatch {
 	const char *replace;
 } const scriptPatches[] = {
 	// Garbage at end of script
-	{"warlock", kPlatformMacintosh, "WARLOCKSHIP/UpForeECall", kScoreScript, 12,
+	{"warlock", "", kPlatformMacintosh, "WARLOCKSHIP/UpForeECall", kScoreScript, 12,
 			2, "SS Warlock:DATA:WARLOCKSHIP:Up.GCGunner", ""},
-	{"warlock", kPlatformMacintosh, "WARLOCKSHIP/UpForeECall", kScoreScript, 12,
+	{"warlock", "", kPlatformMacintosh, "WARLOCKSHIP/UpForeECall", kScoreScript, 12,
 			3, "Channels 17 to 18", ""},
-	{"warlock", kPlatformMacintosh, "WARLOCKSHIP/UpForeECall", kScoreScript, 12,
+	{"warlock", "", kPlatformMacintosh, "WARLOCKSHIP/UpForeECall", kScoreScript, 12,
 			4, "Frames 150 to 160", ""},
 
 	// Garbage at end of script
-	{"warlock", kPlatformMacintosh, "DATA/WARLOCKSHIP/HE.Aft", kScoreScript, 8,
+	{"warlock", "", kPlatformMacintosh, "DATA/WARLOCKSHIP/HE.Aft", kScoreScript, 8,
 			2, "SS Warlock:DATA:WARLOCKSHIP:HangStairsFore", ""},
-	{"warlock", kPlatformMacintosh, "DATA/WARLOCKSHIP/HE.Aft", kScoreScript, 8,
+	{"warlock", "", kPlatformMacintosh, "DATA/WARLOCKSHIP/HE.Aft", kScoreScript, 8,
 			3, "Channels 4 to 5", ""},
-	{"warlock", kPlatformMacintosh, "DATA/WARLOCKSHIP/HE.Aft", kScoreScript, 8,
+	{"warlock", "", kPlatformMacintosh, "DATA/WARLOCKSHIP/HE.Aft", kScoreScript, 8,
 			4, "Frames 20 to 20", ""},
 
 	// Garbage at end of script
-	{"warlock", kPlatformMacintosh, "DATA/WARLOCKSHIP/ENG/D10", kScoreScript, 8,
+	{"warlock", "", kPlatformMacintosh, "DATA/WARLOCKSHIP/ENG/D10", kScoreScript, 8,
 			2, "SS Warlock:ENG.Fold:C9", ""},
-	{"warlock", kPlatformMacintosh, "DATA/WARLOCKSHIP/ENG/D10", kScoreScript, 8,
+	{"warlock", "", kPlatformMacintosh, "DATA/WARLOCKSHIP/ENG/D10", kScoreScript, 8,
 			3, "Channels 19 to 20", ""},
-	{"warlock", kPlatformMacintosh, "DATA/WARLOCKSHIP/ENG/D10", kScoreScript, 8,
+	{"warlock", "", kPlatformMacintosh, "DATA/WARLOCKSHIP/ENG/D10", kScoreScript, 8,
 			4, "Frames 165 to 180", ""},
 
 	// Garbage at end of script
-	{"warlock", kPlatformMacintosh, "DATA/WARLOCKSHIP/Up.c2", kScoreScript, 10,
+	{"warlock", "", kPlatformMacintosh, "DATA/WARLOCKSHIP/Up.c2", kScoreScript, 10,
 			2, "Frames 150 to 160", ""},
 
 	// Garbage at end of script
-	{"warlock", kPlatformMacintosh, "DATA/WARLOCKSHIP/Up.ForeECall", kScoreScript, 12,
+	{"warlock", "", kPlatformMacintosh, "DATA/WARLOCKSHIP/Up.ForeECall", kScoreScript, 12,
 			2, "SS Warlock:DATA:WARLOCKSHIP:Up.GCGunner", ""},
-	{"warlock", kPlatformMacintosh, "DATA/WARLOCKSHIP/Up.ForeECall", kScoreScript, 12,
+	{"warlock", "", kPlatformMacintosh, "DATA/WARLOCKSHIP/Up.ForeECall", kScoreScript, 12,
 			3, "Channels 17 to 18", ""},
-	{"warlock", kPlatformMacintosh, "DATA/WARLOCKSHIP/Up.ForeECall", kScoreScript, 12,
+	{"warlock", "", kPlatformMacintosh, "DATA/WARLOCKSHIP/Up.ForeECall", kScoreScript, 12,
 			4, "Frames 150 to 160", ""},
 
 	// Garbage at end of script
-	{"warlock", kPlatformMacintosh, "DATA/WARLOCKSHIP/Up.B2", kScoreScript, 9,
+	{"warlock", "", kPlatformMacintosh, "DATA/WARLOCKSHIP/Up.B2", kScoreScript, 9,
 			2, "SS Warlock:DATA:WARLOCKSHIP:Up.GCGunner", ""},
-	{"warlock", kPlatformMacintosh, "DATA/WARLOCKSHIP/Up.B2", kScoreScript, 9,
+	{"warlock", "", kPlatformMacintosh, "DATA/WARLOCKSHIP/Up.B2", kScoreScript, 9,
 			3, "Channels 17 to 18", ""},
-	{"warlock", kPlatformMacintosh, "DATA/WARLOCKSHIP/Up.B2", kScoreScript, 9,
+	{"warlock", "", kPlatformMacintosh, "DATA/WARLOCKSHIP/Up.B2", kScoreScript, 9,
 			4, "Frames 150 to 160", ""},
 
 	// Garbage at end of script
-	{"warlock", kPlatformMacintosh, "DATA/BELSHAZZAR/STELLA/ORIGIN", kScoreScript, 12,
+	{"warlock", "", kPlatformMacintosh, "DATA/BELSHAZZAR/STELLA/ORIGIN", kScoreScript, 12,
 			2, "Frames 1 to 1", ""},
 
 	// Garbage at end of script
-	{"warlock", kPlatformMacintosh, "DATA/WARLOCKSHIP/HangHallAft", kScoreScript, 7,
+	{"warlock", "", kPlatformMacintosh, "DATA/WARLOCKSHIP/HangHallAft", kScoreScript, 7,
 			2, "SS Warlock:DATA:WARLOCKSHIP:HangStairsFore", ""},
-	{"warlock", kPlatformMacintosh, "DATA/WARLOCKSHIP/HangHallAft", kScoreScript, 7,
+	{"warlock", "", kPlatformMacintosh, "DATA/WARLOCKSHIP/HangHallAft", kScoreScript, 7,
 			3, "Channels 4 to 5", ""},
-	{"warlock", kPlatformMacintosh, "DATA/WARLOCKSHIP/HangHallAft", kScoreScript, 7,
+	{"warlock", "", kPlatformMacintosh, "DATA/WARLOCKSHIP/HangHallAft", kScoreScript, 7,
 			4, "Frames 20 to 20", ""},
 
 	// Stray 'then' (obvious copy/paste error)
-	{"warlock", kPlatformMacintosh, "DATA/K/KT/OutMarauderKT", kMovieScript, 2,
+	{"warlock", "", kPlatformMacintosh, "DATA/K/KT/OutMarauderKT", kMovieScript, 2,
 			23, "set Spacesuit = 0 then", "set Spacesuit = 0"},
 
 	// Unbalanced 'end if' at the end of the script
-	{"warlock", kPlatformMacintosh, "DATA/STAMBUL/DRUNK", kMovieScript, 4,
+	{"warlock", "", kPlatformMacintosh, "DATA/STAMBUL/DRUNK", kMovieScript, 4,
 			5, "end if", ""},
 
 	// Unbalanced 'end if' at the end of the script
-	{"warlock", kPlatformMacintosh, "STAMBUL/DRUNK", kMovieScript, 5,
+	{"warlock", "", kPlatformMacintosh, "STAMBUL/DRUNK", kMovieScript, 5,
 			5, "end if", ""},
 
 	// Missing '&'
-	{"warlock", kPlatformMacintosh, "DATA/NAV/Shared Cast", kMovieScript, 1,
+	{"warlock", "", kPlatformMacintosh, "DATA/NAV/Shared Cast", kMovieScript, 1,
 			19, "alert \"Failed Save.\" & return & \"Error message number: \" string ( filer )",
 				"alert \"Failed Save.\" & return & \"Error message number: \" & string ( filer )"},
 
 	// Garbage at end of script
-	{"warlock", kPlatformWindows, "WRLCKSHP/UpForeECall", kScoreScript, 12,
+	{"warlock", "", kPlatformWindows, "WRLCKSHP/UpForeECall", kScoreScript, 12,
 			2, "SS Warlock:DATA:WARLOCKSHIP:Up.GCGunner", ""},
-	{"warlock", kPlatformWindows, "WRLCKSHP/UpForeECall", kScoreScript, 12,
+	{"warlock", "", kPlatformWindows, "WRLCKSHP/UpForeECall", kScoreScript, 12,
 			3, "Channels 17 to 18", ""},
-	{"warlock", kPlatformWindows, "WRLCKSHP/UpForeECall", kScoreScript, 12,
+	{"warlock", "", kPlatformWindows, "WRLCKSHP/UpForeECall", kScoreScript, 12,
 			4, "Frames 150 to 160", ""},
 
 	// Unbalanced 'end if' at the end of the script
-	{"warlock", kPlatformWindows, "STAMBUL/DRUNK", kMovieScript, 5,
+	{"warlock", "", kPlatformWindows, "STAMBUL/DRUNK", kMovieScript, 5,
 			5, "end if", ""},
 
 	// Missing '&'
-	{"warlock", kPlatformUnknown, "NAV/Shared Cast", kMovieScript, 0,
+	{"warlock", "", kPlatformUnknown, "NAV/Shared Cast", kMovieScript, 0,
 			23, "alert \"Failed Save.\" & return & \"Error message number: \" string ( filer )",
 				"alert \"Failed Save.\" & return & \"Error message number: \" & string ( filer )"},
 
-	{"warlock", kPlatformUnknown, "NAV/Shared Cast", kMovieScript, 1,	// For running by the buildbot
+	{"warlock", "", kPlatformUnknown, "NAV/Shared Cast", kMovieScript, 1,	// For running by the buildbot
 			23, "alert \"Failed Save.\" & return & \"Error message number: \" string ( filer )",
 				"alert \"Failed Save.\" & return & \"Error message number: \" & string ( filer )"},
 
 
 	// Unbalanced 'end if' at the end of the script
-	{"jman", kPlatformWindows, "mmm/TSA RR 06", kScoreScript, 26,
+	{"jman", "", kPlatformWindows, "mmm/TSA RR 06", kScoreScript, 26,
 			17, "end if", ""},
-	{"jman", kPlatformWindows, "mmm/Mars Space Game 05", kMovieScript, 3,
+	{"jman", "", kPlatformWindows, "mmm/Mars Space Game 05", kMovieScript, 3,
 			68, "set DamageParameter = (gProcessorSpeed/2) + 7)", "set DamageParameter = (gProcessorSpeed/2) + 7"},
 
-	{nullptr, kPlatformUnknown, nullptr, kNoneScript, 0, 0, nullptr, nullptr}
+	{nullptr, nullptr, kPlatformUnknown, nullptr, kNoneScript, 0, 0, nullptr, nullptr}
 };
 
 Common::String Lingo::patchLingoCode(Common::String &line, LingoArchive *archive, ScriptType type, uint16 id, int linenum) {
@@ -161,7 +162,8 @@ Common::String Lingo::patchLingoCode(Common::String &line, LingoArchive *archive
 		}
 
 		// Now expensive ones
-		if (movie.compareToIgnoreCase(patch->movie) || strcmp(patch->gameId, _vm->getGameId())) {
+		if (movie.compareToIgnoreCase(patch->movie) || strcmp(patch->gameId, _vm->getGameId())
+				|| strcmp(patch->extra, _vm->getExtra())) {
 			patch++;
 			continue;
 		}




More information about the Scummvm-git-logs mailing list