diff options
| -rw-r--r-- | engines/tucker/resource.cpp | 6 | ||||
| -rw-r--r-- | engines/tucker/sequences.cpp | 2 | ||||
| -rw-r--r-- | engines/tucker/tucker.cpp | 25 | ||||
| -rw-r--r-- | engines/tucker/tucker.h | 14 | 
4 files changed, 29 insertions, 18 deletions
| diff --git a/engines/tucker/resource.cpp b/engines/tucker/resource.cpp index 38141d452a..e642555ce3 100644 --- a/engines/tucker/resource.cpp +++ b/engines/tucker/resource.cpp @@ -162,7 +162,7 @@ public:  };  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 @@ uint8 *TuckerEngine::loadFile(uint8 *p) {  	}  	_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::loadCursor() {  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); diff --git a/engines/tucker/sequences.cpp b/engines/tucker/sequences.cpp index 67a0d82775..3ce5a25198 100644 --- a/engines/tucker/sequences.cpp +++ b/engines/tucker/sequences.cpp @@ -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; diff --git a/engines/tucker/tucker.cpp b/engines/tucker/tucker.cpp index b12af103ba..f68300249e 100644 --- a/engines/tucker/tucker.cpp +++ b/engines/tucker/tucker.cpp @@ -36,9 +36,19 @@ namespace Tucker {  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 @@ bool TuckerEngine::hasFeature(EngineFeature f) const {  Common::Error TuckerEngine::go() {  	handleIntroSequence(); -	if (!_gameVer.isDemo && !shouldQuit()) { +	if ((_gameFlags & kGameFlagDemo) == 0 && !shouldQuit()) {  		mainLoop();  	}  	return Common::kNoError; @@ -138,7 +148,7 @@ void TuckerEngine::restart() {  	_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 @@ void TuckerEngine::mainLoop() {  	restart();  	openCompressedSoundFile(); -	_useEnc = Common::File::exists("data5.enc");  	loadCharSizeDta();  	loadCharset();  	loadPanel(); @@ -554,7 +563,7 @@ void TuckerEngine::mainLoop() {  		}  		if (_inputKeys[kInputKeyToggleTextSpeech]) {  			_inputKeys[kInputKeyToggleTextSpeech] = false; -			if (_gameVer.hasSubtitles) { +			if ((_gameFlags & kGameFlagNoSubtitles) == 0) {  				if (_displaySpeechText) {  					_displaySpeechText = false;  //					kDefaultCharSpeechSoundCounter = 1; @@ -1912,7 +1921,7 @@ void TuckerEngine::drawInfoString() {  	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; diff --git a/engines/tucker/tucker.h b/engines/tucker/tucker.h index 8d759de237..26586a1bfb 100644 --- a/engines/tucker/tucker.h +++ b/engines/tucker/tucker.h @@ -202,6 +202,12 @@ enum InputKey {  	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 @@ protected:  	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 @@ protected:  	char _fileToLoad[40];  	int _fileLoadSize; -	bool _useEnc;  	int _compressedSoundType;  	Common::File _fCompressedSound;  	uint8 *_loadTempBuf; | 
