[Scummvm-cvs-logs] SF.net SVN: scummvm:[35398] scummvm/trunk/engines/tucker

cyx at users.sourceforge.net cyx at users.sourceforge.net
Tue Dec 16 22:06:21 CET 2008


Revision: 35398
          http://scummvm.svn.sourceforge.net/scummvm/?rev=35398&view=rev
Author:   cyx
Date:     2008-12-16 21:06:20 +0000 (Tue, 16 Dec 2008)

Log Message:
-----------
changed game version flags handling, should fix #2434208

Modified Paths:
--------------
    scummvm/trunk/engines/tucker/resource.cpp
    scummvm/trunk/engines/tucker/sequences.cpp
    scummvm/trunk/engines/tucker/tucker.cpp
    scummvm/trunk/engines/tucker/tucker.h

Modified: scummvm/trunk/engines/tucker/resource.cpp
===================================================================
--- scummvm/trunk/engines/tucker/resource.cpp	2008-12-16 20:40:18 UTC (rev 35397)
+++ scummvm/trunk/engines/tucker/resource.cpp	2008-12-16 21:06:20 UTC (rev 35398)
@@ -162,7 +162,7 @@
 };
 
 uint8 *TuckerEngine::loadFile(uint8 *p) {
-	if (_gameVer.lang == Common::DE_DEU) {
+	if (_gameLang == Common::DE_DEU) {
 		if (strcmp(_fileToLoad, "bgtext.c") == 0) {
 			strcpy(_fileToLoad, "bgtextgr.c");
 		} else if (strcmp(_fileToLoad, "charname.c") == 0) {
@@ -183,7 +183,7 @@
 	}
 	_fileLoadSize = 0;
 	bool decode = false;
-	if (_useEnc) {
+	if (_gameFlags & kGameFlagEncodedData) {
 		char *ext = strrchr(_fileToLoad, '.');
 		if (ext && strcmp(ext + 1, "c") == 0) {
 			strcpy(ext + 1, "enc");
@@ -287,7 +287,7 @@
 void TuckerEngine::loadCharset() {
 	strcpy(_fileToLoad, "charset.pcx");
 	loadImage(_loadTempBuf, 0);
-	switch (_gameVer.lang) {
+	switch (_gameLang) {
 	case Common::FR_FRA:
 	case Common::DE_DEU:
 		Graphics::setCharset(kCharsetTypeFrGr);

Modified: scummvm/trunk/engines/tucker/sequences.cpp
===================================================================
--- scummvm/trunk/engines/tucker/sequences.cpp	2008-12-16 20:40:18 UTC (rev 35397)
+++ scummvm/trunk/engines/tucker/sequences.cpp	2008-12-16 21:06:20 UTC (rev 35398)
@@ -34,7 +34,7 @@
 namespace Tucker {
 
 void TuckerEngine::handleIntroSequence() {
-	const int firstSequence = _gameVer.isDemo ? kFirstAnimationSequenceDemo : kFirstAnimationSequenceGame;
+	const int firstSequence = (_gameFlags & kGameFlagDemo) != 0 ? kFirstAnimationSequenceDemo : kFirstAnimationSequenceGame;
 	_player = new AnimationSequencePlayer(_system, _mixer, _eventMan, firstSequence);
 	_player->mainLoop();
 	delete _player;

Modified: scummvm/trunk/engines/tucker/tucker.cpp
===================================================================
--- scummvm/trunk/engines/tucker/tucker.cpp	2008-12-16 20:40:18 UTC (rev 35397)
+++ scummvm/trunk/engines/tucker/tucker.cpp	2008-12-16 21:06:20 UTC (rev 35398)
@@ -36,9 +36,19 @@
 
 TuckerEngine::TuckerEngine(OSystem *system, Common::Language language, bool isDemo)
 	: Engine(system) {
-	_gameVer.lang = language;
-	_gameVer.isDemo = isDemo;
-	_gameVer.hasSubtitles = (language != Common::FR_FRA); // only a few subtitles are translated to french
+	_gameLang = language;
+	_gameFlags = 0;
+	if (isDemo) {
+		_gameFlags |= kGameFlagDemo;
+	}
+	switch (language) {
+	case Common::FR_FRA:
+		_gameFlags |= kGameFlagNoSubtitles;
+		break;
+	default:
+		_gameFlags |= kGameFlagEncodedData;
+		break;
+	}
 }
 
 TuckerEngine::~TuckerEngine() {
@@ -63,7 +73,7 @@
 
 Common::Error TuckerEngine::go() {
 	handleIntroSequence();
-	if (!_gameVer.isDemo && !shouldQuit()) {
+	if ((_gameFlags & kGameFlagDemo) == 0 && !shouldQuit()) {
 		mainLoop();
 	}
 	return Common::kNoError;
@@ -138,7 +148,7 @@
 	_gamePaused = _gamePaused2 = false;
 	_gameDebug = false;
 	_displayGameHints = false;
-	_displaySpeechText = _gameVer.hasSubtitles ? ConfMan.getBool("subtitles") : false;
+	_displaySpeechText = (_gameFlags & kGameFlagNoSubtitles) == 0 ? ConfMan.getBool("subtitles") : false;
 	memset(_flagsTable, 0, sizeof(_flagsTable));
 
 	_gameHintsIndex = 0;
@@ -331,7 +341,6 @@
 	restart();
 
 	openCompressedSoundFile();
-	_useEnc = Common::File::exists("data5.enc");
 	loadCharSizeDta();
 	loadCharset();
 	loadPanel();
@@ -554,7 +563,7 @@
 		}
 		if (_inputKeys[kInputKeyToggleTextSpeech]) {
 			_inputKeys[kInputKeyToggleTextSpeech] = false;
-			if (_gameVer.hasSubtitles) {
+			if ((_gameFlags & kGameFlagNoSubtitles) == 0) {
 				if (_displaySpeechText) {
 					_displaySpeechText = false;
 //					kDefaultCharSpeechSoundCounter = 1;
@@ -1912,7 +1921,7 @@
 	if (_actionRequiresTwoObjects) {
 		verbPreposition = (_actionVerb == 5) ? 12 : 11;
 		verbPrepositionWidth = getStringWidth(verbPreposition, infoStrBuf) + 4;
-		if (_gameVer.lang == Common::FR_FRA) {
+		if (_gameLang == Common::FR_FRA) {
 			if ((_actionObj2Num > 0 || _actionObj2Type > 0) && verbPreposition > 0) {
 				infoStringWidth = 0;
 				verbWidth = 0;

Modified: scummvm/trunk/engines/tucker/tucker.h
===================================================================
--- scummvm/trunk/engines/tucker/tucker.h	2008-12-16 20:40:18 UTC (rev 35397)
+++ scummvm/trunk/engines/tucker/tucker.h	2008-12-16 21:06:20 UTC (rev 35398)
@@ -202,6 +202,12 @@
 	kInputKeyCount
 };
 
+enum GameFlag {
+	kGameFlagDemo = 1 << 0,
+	kGameFlagEncodedData = 1 << 1,
+	kGameFlagNoSubtitles = 1 << 2
+};
+
 inline int scaleMixerVolume(int volume, int max = 100) {
 	return volume * Audio::Mixer::kMaxChannelVolume / max;
 }
@@ -565,11 +571,8 @@
 
 	Common::RandomSource _rnd;
 	AnimationSequencePlayer *_player;
-	struct {
-		Common::Language lang;
-		bool isDemo;
-		bool hasSubtitles;
-	} _gameVer;
+	Common::Language _gameLang;
+	int _gameFlags;
 
 	bool _quitGame;
 	bool _fastMode;
@@ -599,7 +602,6 @@
 
 	char _fileToLoad[40];
 	int _fileLoadSize;
-	bool _useEnc;
 	int _compressedSoundType;
 	Common::File _fCompressedSound;
 	uint8 *_loadTempBuf;


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