[Scummvm-cvs-logs] SF.net SVN: scummvm:[34210] scummvm/trunk/engines/tinsel

fingolfin at users.sourceforge.net fingolfin at users.sourceforge.net
Sat Aug 30 23:03:16 CEST 2008


Revision: 34210
          http://scummvm.svn.sourceforge.net/scummvm/?rev=34210&view=rev
Author:   fingolfin
Date:     2008-08-30 21:03:15 +0000 (Sat, 30 Aug 2008)

Log Message:
-----------
TINSEL: Added support for the 3,4 and 5 FLAGS (multi lingual) versions of DW (only 4 flags version has been tested; see also bug #2048383)

Modified Paths:
--------------
    scummvm/trunk/engines/tinsel/config.cpp
    scummvm/trunk/engines/tinsel/config.h
    scummvm/trunk/engines/tinsel/detection.cpp
    scummvm/trunk/engines/tinsel/inventory.cpp
    scummvm/trunk/engines/tinsel/tinsel.cpp
    scummvm/trunk/engines/tinsel/tinsel.h

Modified: scummvm/trunk/engines/tinsel/config.cpp
===================================================================
--- scummvm/trunk/engines/tinsel/config.cpp	2008-08-30 15:49:54 UTC (rev 34209)
+++ scummvm/trunk/engines/tinsel/config.cpp	2008-08-30 21:03:15 UTC (rev 34210)
@@ -24,8 +24,6 @@
  * This file contains configuration functionality
  */
 
-//#define USE_3FLAGS 1
-
 #include "tinsel/config.h"
 #include "tinsel/dw.h"
 #include "tinsel/sound.h"
@@ -47,7 +45,7 @@
 int speedText = DEFTEXTSPEED;
 int bSubtitles = false;
 int bSwapButtons = 0;
-LANGUAGE language = TXT_ENGLISH;
+LANGUAGE g_language = TXT_ENGLISH;
 int bAmerica = 0;
 
 
@@ -68,6 +66,32 @@
 	//ConfMan.setBool("swap_buttons", bSwapButtons ? 1 : 0);
 	//ConfigData.language = language;	// not necessary, as language has been set in the launcher
 	//ConfigData.bAmerica = bAmerica;		// EN_USA / EN_GRB
+
+	// Store language for multilingual versions
+	if ((_vm->getFeatures() & GF_USE_3FLAGS) || (_vm->getFeatures() & GF_USE_4FLAGS) || (_vm->getFeatures() & GF_USE_5FLAGS)) {
+		Common::Language lang;
+		switch (g_language) {
+		case TXT_FRENCH:
+			lang = Common::FR_FRA;
+			break;
+		case TXT_GERMAN:
+			lang = Common::DE_DEU;
+			break;
+		case TXT_SPANISH:
+			lang = Common::ES_ESP;
+			break;
+		case TXT_ITALIAN:
+			lang = Common::IT_ITA;
+			break;
+		default:
+			lang = Common::EN_ANY;
+		}
+		
+		ConfMan.set("language", Common::getLanguageCode(lang));
+	}
+	
+	// Write to disk
+	ConfMan.flushToDisk();
 }
 
 /*---------------------------------------------------------------------*\
@@ -94,24 +118,53 @@
 	//ConfigData.language = language;	// not necessary, as language has been set in the launcher
 	//ConfigData.bAmerica = bAmerica;		// EN_USA / EN_GRB
 
-// The flags here control how many country flags are displayed in one of the option dialogs.
-#if defined(USE_3FLAGS) || defined(USE_4FLAGS) || defined(USE_5FLAGS)
-	language = ConfigData.language;
- #ifdef USE_3FLAGS
-	if (language == TXT_ENGLISH || language == TXT_ITALIAN) {
-		language = TXT_GERMAN;
-		bSubtitles = true;
+	// Set language - we'll be clever here and use the ScummVM language setting
+	g_language = TXT_ENGLISH;
+	Common::Language lang = _vm->getLanguage();
+	if (lang == Common::UNK_LANG && ConfMan.hasKey("language"))
+		lang = Common::parseLanguage(ConfMan.get("language"));	// For multi-lingual versions, fall back to user settings
+	switch (lang) {
+	case Common::FR_FRA:
+		g_language = TXT_FRENCH;
+		break;
+	case Common::DE_DEU:
+		g_language = TXT_GERMAN;
+		break;
+	case Common::ES_ESP:
+		g_language = TXT_SPANISH;
+		break;
+	case Common::IT_ITA:
+		g_language = TXT_ITALIAN;
+		break;
+	default:
+		g_language = TXT_ENGLISH;
 	}
- #endif
- #ifdef USE_4FLAGS
-	if (language == TXT_ENGLISH) {
-		language = TXT_GERMAN;
+
+	if (lang == Common::JA_JPN) {
+		// TODO: Add support for JAPAN version
+	} else if (lang == Common::HB_ISR) {
+		// TODO: Add support for HEBREW version
+
+		// The Hebrew version appears to the software as being English
+		// but it needs to have subtitles on...
+		g_language = TXT_ENGLISH;
 		bSubtitles = true;
+	} else if (_vm->getFeatures() & GF_USE_3FLAGS) {
+		// 3 FLAGS version supports French, German, Spanish
+		// Fall back to German if necessary
+		if (g_language != TXT_FRENCH && g_language != TXT_GERMAN && g_language != TXT_SPANISH) {
+			g_language = TXT_GERMAN;
+			bSubtitles = true;
+		}
+	} else if (_vm->getFeatures() & GF_USE_4FLAGS) {
+		// 4 FLAGS version supports French, German, Spanish, Italian
+		// Fall back to German if necessary
+		if (g_language != TXT_FRENCH && g_language != TXT_GERMAN &&
+				g_language != TXT_SPANISH && g_language != TXT_ITALIAN) {
+			g_language = TXT_GERMAN;
+			bSubtitles = true;
+		}
 	}
- #endif
-#else
-	language = TXT_ENGLISH;
-#endif
 }
 
 bool isJapanMode() {

Modified: scummvm/trunk/engines/tinsel/config.h
===================================================================
--- scummvm/trunk/engines/tinsel/config.h	2008-08-30 15:49:54 UTC (rev 34209)
+++ scummvm/trunk/engines/tinsel/config.h	2008-08-30 21:03:15 UTC (rev 34210)
@@ -30,24 +30,12 @@
 
 namespace Tinsel {
 
-// None of these defined -> 1 language, in ENGLISH.TXT
-//#define USE_5FLAGS	1	// All 5 flags
-//#define USE_4FLAGS	1	// French, German, Italian, Spanish
-//#define USE_3FLAGS	1	// French, German, Spanish
-
-// The Hebrew version appears to the software as being English
-// but it needs to have subtitles on...
-//#define HEBREW	1
-
-//#define JAPAN	1
-
-
 // double click timer initial value
-#define	DOUBLE_CLICK_TIME	6	// 6 @ 18Hz = .33 sec
+enum {
+	DOUBLE_CLICK_TIME	= 6,	// 6 @ 18Hz = .33 sec
+	DEFTEXTSPEED		= 0
+};
 
-#define DEFTEXTSPEED	0
-
-
 extern int dclickSpeed;
 extern int volMidi;
 extern int volSound;
@@ -55,7 +43,7 @@
 extern int speedText;
 extern int bSubtitles;
 extern int bSwapButtons;
-extern LANGUAGE language;
+extern LANGUAGE g_language;
 extern int bAmerica;
 
 void WriteConfig(void);

Modified: scummvm/trunk/engines/tinsel/detection.cpp
===================================================================
--- scummvm/trunk/engines/tinsel/detection.cpp	2008-08-30 15:49:54 UTC (rev 34209)
+++ scummvm/trunk/engines/tinsel/detection.cpp	2008-08-30 21:03:15 UTC (rev 34210)
@@ -130,6 +130,30 @@
 		TINSEL_V1,
 	},
 
+	{	// Multilingual CD with english speech and *.gra files.
+		// Note: It contains no english subtitles.
+		{
+			"dw",
+			"CD",
+			{
+				{"dw.gra", 0, "c8808ccd988d603dd35dff42013ae7fd", 781656},
+				{"english.smp", 0, NULL, -1},
+				{"french.txt", 0, NULL, -1},
+				{"german.txt", 0, NULL, -1},
+				{"italian.txt", 0, NULL, -1},
+				{"spanish.txt", 0, NULL, -1},
+				{NULL, 0, NULL, 0}
+			},
+			Common::UNK_LANG,
+			Common::kPlatformPC,
+			Common::ADGF_NO_FLAGS
+		},
+		GID_DW1,
+		0,
+		GF_CD | GF_USE_4FLAGS,
+		TINSEL_V1,
+	},
+
 	{	// English CD with SCN files
 		{
 			"dw",

Modified: scummvm/trunk/engines/tinsel/inventory.cpp
===================================================================
--- scummvm/trunk/engines/tinsel/inventory.cpp	2008-08-30 15:49:54 UTC (rev 34209)
+++ scummvm/trunk/engines/tinsel/inventory.cpp	2008-08-30 21:03:15 UTC (rev 34210)
@@ -29,8 +29,6 @@
  * And there's still a bit of tidying and commenting to do yet.
  */
 
-//#define USE_3FLAGS 1
-
 #include "tinsel/actors.h"
 #include "tinsel/anim.h"
 #include "tinsel/background.h"
@@ -370,9 +368,7 @@
 	NOFUNC, SAVEGAME, LOADGAME, IQUITGAME, CLOSEWIN,
 	OPENLOAD, OPENSAVE, OPENREST,
 	OPENSOUND, OPENCONT,
-#ifndef JAPAN
 	OPENSUBT,
-#endif
 	OPENQUIT,
 	INITGAME, MIDIVOL,
 	CLANG, RLANG
@@ -402,9 +398,7 @@
 #define SIX_RESTART_OPTION	2
 #define SIX_SOUND_OPTION	3
 #define SIX_CONTROL_OPTION	4
-#ifndef JAPAN
 #define SIX_SUBTITLES_OPTION	5
-#endif
 #define SIX_QUIT_OPTION		6
 #define SIX_RESUME_OPTION	7
 #define SIX_LOAD_HEADING	8
@@ -568,41 +562,60 @@
 
 
 /*-------------------------------------------------------------*\
-| This is the subtitles 'menu'.					|
+| This is the subtitles 'menu'.                                 |
 \*-------------------------------------------------------------*/
 
-#ifndef JAPAN
 CONFBOX subtitlesBox[] = {
 
-#ifdef USE_5FLAGS
+ { SLIDER, NOFUNC, NULL, SIX_TSPEED_SLIDER,	142, 20,	100, 2, &speedText, 0 },
+ { TOGGLE, NOFUNC, NULL, SIX_STITLE_TOGGLE,	142, 20+40,	23, 19, &bSubtitles, 0 },
+
+};
+
+CONFBOX subtitlesBox3Flags[] = {
+
+ { FRGROUP, NOFUNC, NULL, USE_POINTER,	15, 118,	56, 32, NULL, FIX_FR },
+ { FRGROUP, NOFUNC, NULL, USE_POINTER,	85, 118,	56, 32, NULL, FIX_GR },
+ { FRGROUP, NOFUNC, NULL, USE_POINTER,	155, 118,	56, 32, NULL, FIX_SP },
+
+ { SLIDER, NOFUNC, NULL, SIX_TSPEED_SLIDER,	142, 20,	100, 2, &speedText, 0 },
+ { TOGGLE, NOFUNC, NULL, SIX_STITLE_TOGGLE,	142, 20+40,	23, 19, &bSubtitles, 0 },
+
+ { ARSGBUT, CLANG, NULL, USE_POINTER,	230, 110,	23, 19, NULL, IX_TICK1 },
+ { AAGBUT, RLANG, NULL, USE_POINTER,	230, 140,	23, 19, NULL, IX_CROSS1 }
+
+};
+
+CONFBOX subtitlesBox4Flags[] = {
+
+ { FRGROUP, NOFUNC, NULL, USE_POINTER,	20, 100,	56, 32, NULL, FIX_FR },
+ { FRGROUP, NOFUNC, NULL, USE_POINTER,	108, 100,	56, 32, NULL, FIX_GR },
+ { FRGROUP, NOFUNC, NULL, USE_POINTER,	64, 137,	56, 32, NULL, FIX_IT },
+ { FRGROUP, NOFUNC, NULL, USE_POINTER,	152, 137,	56, 32, NULL, FIX_SP },
+
+ { SLIDER, NOFUNC, NULL, SIX_TSPEED_SLIDER,	142, 20,	100, 2, &speedText, 0 },
+ { TOGGLE, NOFUNC, NULL, SIX_STITLE_TOGGLE,	142, 20+40,	23, 19, &bSubtitles, 0 },
+
+ { ARSGBUT, CLANG, NULL, USE_POINTER,	230, 110,	23, 19, NULL, IX_TICK1 },
+ { AAGBUT, RLANG, NULL, USE_POINTER,	230, 140,	23, 19, NULL, IX_CROSS1 }
+
+};
+
+CONFBOX subtitlesBox5Flags[] = {
+
  { FRGROUP, NOFUNC, NULL, USE_POINTER,	15, 100,	56, 32, NULL, FIX_UK },
  { FRGROUP, NOFUNC, NULL, USE_POINTER,	85, 100,	56, 32, NULL, FIX_FR },
  { FRGROUP, NOFUNC, NULL, USE_POINTER,	155, 100,	56, 32, NULL, FIX_GR },
  { FRGROUP, NOFUNC, NULL, USE_POINTER,	50, 137,	56, 32, NULL, FIX_IT },
  { FRGROUP, NOFUNC, NULL, USE_POINTER,	120, 137,	56, 32, NULL, FIX_SP },
-#endif
-#ifdef USE_4FLAGS
- { FRGROUP, NOFUNC, NULL, USE_POINTER,	20, 100,	56, 32, NULL, FIX_FR },
- { FRGROUP, NOFUNC, NULL, USE_POINTER,	108, 100,	56, 32, NULL, FIX_GR },
- { FRGROUP, NOFUNC, NULL, USE_POINTER,	64, 137,	56, 32, NULL, FIX_IT },
- { FRGROUP, NOFUNC, NULL, USE_POINTER,	152, 137,	56, 32, NULL, FIX_SP },
-#endif
-#ifdef USE_3FLAGS
- { FRGROUP, NOFUNC, NULL, USE_POINTER,	15, 118,	56, 32, NULL, FIX_FR },
- { FRGROUP, NOFUNC, NULL, USE_POINTER,	85, 118,	56, 32, NULL, FIX_GR },
- { FRGROUP, NOFUNC, NULL, USE_POINTER,	155, 118,	56, 32, NULL, FIX_SP },
-#endif
 
  { SLIDER, NOFUNC, NULL, SIX_TSPEED_SLIDER,	142, 20,	100, 2, &speedText, 0 },
  { TOGGLE, NOFUNC, NULL, SIX_STITLE_TOGGLE,	142, 20+40,	23, 19, &bSubtitles, 0 },
 
-#if defined(USE_3FLAGS) || defined(USE_4FLAGS) || defined(USE_5FLAGS)
  { ARSGBUT, CLANG, NULL, USE_POINTER,	230, 110,	23, 19, NULL, IX_TICK1 },
  { AAGBUT, RLANG, NULL, USE_POINTER,	230, 140,	23, 19, NULL, IX_CROSS1 }
-#endif
 
 };
-#endif
 
 
 /*-------------------------------------------------------------*\
@@ -610,7 +623,7 @@
 \*-------------------------------------------------------------*/
 
 CONFBOX quitBox[] = {
-#ifdef JAPAN
+#ifdef g
  { AAGBUT, IQUITGAME, NULL, USE_POINTER,70, 44,	23, 19, NULL, IX_TICK1 },
  { AAGBUT, CLOSEWIN, NULL, USE_POINTER,	30, 44,	23, 19, NULL, IX_CROSS1 }
 #else
@@ -652,13 +665,9 @@
 #else
 	CONFINIT ciControl	= { 10, 5, 20, 16, false, controlBox,	ARRAYSIZE(controlBox),	NO_HEADING };
 #endif
-#ifndef JAPAN
-#if defined(USE_3FLAGS) || defined(USE_4FLAGS) || defined(USE_5FLAGS)
-CONFINIT ciSubtitles	= { 10, 6, 20, 16, false, subtitlesBox,	ARRAYSIZE(subtitlesBox),	NO_HEADING };
-#else
+
 CONFINIT ciSubtitles	= { 10, 3, 20, 16, false, subtitlesBox,	ARRAYSIZE(subtitlesBox),	NO_HEADING };
-#endif
-#endif
+
 CONFINIT ciQuit		= { 4, 2, 98, 53, false, quitBox,	ARRAYSIZE(quitBox),	SIX_QUIT_HEADING };
 
 CONFINIT ciTopWin	= { 6, 5, 72, 23, false, topwinBox,	0,					NO_HEADING };
@@ -762,33 +771,31 @@
 
 
 
-#ifndef JAPAN
 bool LanguageChange(void) {
 	LANGUAGE nLang;
 
-#ifdef USE_3FLAGS
-	// VERY quick dodgy bodge
-	if (cd.selBox == 0)
-		nLang = TXT_FRENCH;		// = 1
-	else if (cd.selBox == 1)
-		nLang = TXT_GERMAN;		// = 2
-	else
-		nLang = TXT_SPANISH;	// = 4
-#elif defined(USE_4FLAGS)
-	nLang = (LANGUAGE)(cd.selBox + 1);
-#else
-	nLang = (LANGUAGE)cd.selBox;
-#endif
+	if (_vm->getFeatures() & GF_USE_3FLAGS) {
+		// VERY quick dodgy bodge
+		if (cd.selBox == 0)
+			nLang = TXT_FRENCH;		// = 1
+		else if (cd.selBox == 1)
+			nLang = TXT_GERMAN;		// = 2
+		else
+			nLang = TXT_SPANISH;	// = 4
+	} else if (_vm->getFeatures() & GF_USE_4FLAGS) {
+		nLang = (LANGUAGE)(cd.selBox + 1);
+	} else if (_vm->getFeatures() & GF_USE_5FLAGS) {
+		nLang = (LANGUAGE)cd.selBox;
+	}
 
-	if (nLang != language) {
+	if (nLang != g_language) {
 		KillInventory();
 		ChangeLanguage(nLang);
-		language = nLang;
+		g_language = nLang;
 		return true;
 	} else
 		return false;
 }
-#endif
 
 /**************************************************************************/
 /******************** Some miscellaneous functions ************************/
@@ -1212,8 +1219,8 @@
 
 		break;
 
-#if defined(USE_3FLAGS) || defined(USE_4FLAGS) || defined(USE_5FLAGS)
 	case FRGROUP:
+		assert((_vm->getFeatures() & GF_USE_3FLAGS) || (_vm->getFeatures() & GF_USE_4FLAGS) || (_vm->getFeatures() & GF_USE_5FLAGS));
 		iconArray[HL2] = RectangleObject(BackPal(), COL_HILIGHT, cd.Box[i].w+6, cd.Box[i].h+6);
 		MultiInsertObject(GetPlayfieldList(FIELD_STATUS), iconArray[HL2]);
 		MultiSetAniXY(iconArray[HL2],
@@ -1222,7 +1229,7 @@
 		MultiSetZPosition(iconArray[HL2], Z_INV_BRECT+1);
 
 		break;
-#endif
+
 	default:
 		break;
 	}
@@ -2124,8 +2131,8 @@
 
 		break;
 
-#if defined(USE_3FLAGS) || defined(USE_4FLAGS) || defined(USE_5FLAGS)
 	case FRGROUP:
+		assert((_vm->getFeatures() & GF_USE_3FLAGS) || (_vm->getFeatures() & GF_USE_4FLAGS) || (_vm->getFeatures() & GF_USE_5FLAGS));
 		assert(flagFilm != 0); // Language flags not declared!
 
 		pfilm = (const FILM *)LockMem(flagFilm);
@@ -2139,7 +2146,7 @@
 		*pi += 1;
 
 		break;
-#endif
+
 	case FLIP:
 		pfilm = (const FILM *)LockMem(winPartsf);
 
@@ -2901,11 +2908,27 @@
 		SetConfGlobals(&ciSound);
 		break;
 
-#ifndef JAPAN
 	case SUBT:
+		if (_vm->getFeatures() & GF_USE_3FLAGS) {
+			ciSubtitles.v = 6;
+			ciSubtitles.Box = subtitlesBox3Flags;
+			ciSubtitles.NumBoxes = ARRAYSIZE(subtitlesBox3Flags);
+		} else if (_vm->getFeatures() & GF_USE_4FLAGS) {
+			ciSubtitles.v = 6;
+			ciSubtitles.Box = subtitlesBox4Flags;
+			ciSubtitles.NumBoxes = ARRAYSIZE(subtitlesBox4Flags);
+		} else if (_vm->getFeatures() & GF_USE_5FLAGS) {
+			ciSubtitles.v = 6;
+			ciSubtitles.Box = subtitlesBox4Flags;
+			ciSubtitles.NumBoxes = ARRAYSIZE(subtitlesBox4Flags);
+		} else {
+			ciSubtitles.v = 3;
+			ciSubtitles.Box = subtitlesBox;
+			ciSubtitles.NumBoxes = ARRAYSIZE(subtitlesBox);
+		}
+
 		SetConfGlobals(&ciSubtitles);
 		break;
-#endif
 
 	case TOPWIN:
 		SetConfGlobals(&ciTopWin);
@@ -2925,25 +2948,21 @@
 
 	if (type == SAVE || type == LOAD)
 		Select(0, false);
-#ifndef JAPAN
-#if !defined(USE_3FLAGS) || !defined(USE_4FLAGS) || !defined(USE_5FLAGS)
 	else if (type == SUBT) {
-#ifdef USE_3FLAGS
-		// VERY quick dirty bodges
-		if (language == TXT_FRENCH)
-			Select(0, false);
-		else if (language == TXT_GERMAN)
-			Select(1, false);
-		else
-			Select(2, false);
-#elif defined(USE_4FLAGS)
-		Select(language-1, false);
-#else
-		Select(language, false);
-#endif
+		if (_vm->getFeatures() & GF_USE_3FLAGS) {
+			// VERY quick dirty bodges
+			if (g_language == TXT_FRENCH)
+				Select(0, false);
+			else if (g_language == TXT_GERMAN)
+				Select(1, false);
+			else
+				Select(2, false);
+		} else if (_vm->getFeatures() & GF_USE_4FLAGS) {
+			Select(g_language-1, false);
+		} else if (_vm->getFeatures() & GF_USE_5FLAGS) {
+			Select(g_language, false);
+		}
 	}
-#endif
-#endif // JAPAN
 
 	GetCursorXY(&curX, &curY, false);
 	InvCursor(IC_AREA, curX, curY);
@@ -3096,12 +3115,10 @@
 					KillInventory();
 					PopUpConf(CONTROLS);
 					break;
-	#ifndef JAPAN
 				case OPENSUBT:
 					KillInventory();
 					PopUpConf(SUBT);
 					break;
-	#endif
 				case OPENQUIT:
 					KillInventory();
 					PopUpConf(QUIT);
@@ -3110,7 +3127,6 @@
 					KillInventory();
 					bRestart = true;
 					break;
-	#if defined(USE_3FLAGS) || defined(USE_4FLAGS) || defined(USE_5FLAGS)
 				case CLANG:
 					if (!LanguageChange())
 						KillInventory();
@@ -3118,7 +3134,6 @@
 				case RLANG:
 					KillInventory();
 					break;
-	#endif
 				default:
 					break;
 				}
@@ -3342,10 +3357,8 @@
 
 	case S_END:			// End of a drag on the slider
 		AddBoxes(false);	// Might change position slightly
-#ifndef JAPAN
 		if (ino == INV_CONF && cd.Box == subtitlesBox)
-			Select(language, false);
-#endif
+			Select(g_language, false);
 		break;
 	}
 }
@@ -3778,8 +3791,8 @@
 			}
 			break;
 
-#if defined(USE_3FLAGS) || defined(USE_4FLAGS) || defined(USE_5FLAGS)
 		case FRGROUP:
+			assert((_vm->getFeatures() & GF_USE_3FLAGS) || (_vm->getFeatures() & GF_USE_4FLAGS) || (_vm->getFeatures() & GF_USE_5FLAGS));
 			if (dbl) {
 				Select(i, false);
 				LanguageChange();
@@ -3787,7 +3800,6 @@
 				Select(i, false);
 			}
 			break;
-#endif
 
 		case AAGBUT:
 		case ARSGBUT:

Modified: scummvm/trunk/engines/tinsel/tinsel.cpp
===================================================================
--- scummvm/trunk/engines/tinsel/tinsel.cpp	2008-08-30 15:49:54 UTC (rev 34209)
+++ scummvm/trunk/engines/tinsel/tinsel.cpp	2008-08-30 21:03:15 UTC (rev 34210)
@@ -207,7 +207,7 @@
 				int sceneOffset = (_vm->getFeatures() & GF_SCNFILES) ? 1 : 0;
 				int sceneNumber = (GetSceneHandle() >> SCNHANDLE_SHIFT) - sceneOffset;
 #if 0	// FIXME: Disabled this code for now, as it doesn't work as it should (see bug #2078922).
-				if ((language == TXT_GERMAN) && 
+				if ((g_language == TXT_GERMAN) && 
 					((sceneNumber >= 25 && sceneNumber <= 27) || (sceneNumber == 17))) {
 					// Skip to title screen
 					// It seems the German CD version uses scenes 25,26,27,17 for the intro,
@@ -695,25 +695,8 @@
 
 	// TODO: More stuff from dos_main.c may have to be added here
 
-	// Set language - we'll be clever here and use the ScummVM language setting
-	language = TXT_ENGLISH;
-	switch (getLanguage()) {
-	case Common::FR_FRA:
-		language = TXT_FRENCH;
-		break;
-	case Common::DE_DEU:
-		language = TXT_GERMAN;
-		break;
-	case Common::IT_ITA:
-		language = TXT_ITALIAN;
-		break;
-	case Common::ES_ESP:
-		language = TXT_SPANISH;
-		break;
-	default:
-		language = TXT_ENGLISH;
-	}
-	ChangeLanguage(language);
+	// load in text strings
+	ChangeLanguage(g_language);
 
 	// load in graphics info
 	SetupHandleTable();

Modified: scummvm/trunk/engines/tinsel/tinsel.h
===================================================================
--- scummvm/trunk/engines/tinsel/tinsel.h	2008-08-30 15:49:54 UTC (rev 34209)
+++ scummvm/trunk/engines/tinsel/tinsel.h	2008-08-30 21:03:15 UTC (rev 34210)
@@ -55,7 +55,14 @@
 	GF_DEMO = 1 << 0,
 	GF_CD = 1 << 1,
 	GF_FLOPPY = 1 << 2,
-	GF_SCNFILES = 1 << 3
+	GF_SCNFILES = 1 << 3,
+
+	// The GF_USE_?FLAGS values specify how many country flags are displayed
+	// in the subtitles options dialog.
+	// None of these defined -> 1 language, in ENGLISH.TXT
+	GF_USE_3FLAGS = 1 << 4,	// French, German, Spanish
+	GF_USE_4FLAGS = 1 << 5,	// French, German, Spanish, Italian
+	GF_USE_5FLAGS = 1 << 6	// All 5 flags
 };
 
 enum TinselEngineVersion {


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list