diff options
| -rw-r--r-- | scumm/charset.cpp | 31 | ||||
| -rw-r--r-- | scumm/charset.h | 11 | ||||
| -rw-r--r-- | scumm/string.cpp | 16 | 
3 files changed, 25 insertions, 33 deletions
| diff --git a/scumm/charset.cpp b/scumm/charset.cpp index 032c5b769c..03e4b1da44 100644 --- a/scumm/charset.cpp +++ b/scumm/charset.cpp @@ -198,7 +198,6 @@ CharsetRenderer::CharsetRenderer(ScummEngine *vm) {  	_center = false;  	_hasMask = false;  	_textScreenID = kMainVirtScreen; -	_ignoreCharsetMask = false;  	_blitAlso = false;  	_firstChar = false;  	_disableOffsX = false; @@ -1206,7 +1205,7 @@ void CharsetRendererCommon::enableShadow(bool enable) {  } -void CharsetRendererV3::printChar(int chr) { +void CharsetRendererV3::printChar(int chr, bool ignoreCharsetMask) {  	// Indy3 / Zak256 / Loom  	int width, height, origWidth, origHeight;  	VirtScreen *vs; @@ -1252,11 +1251,11 @@ void CharsetRendererV3::printChar(int chr) {  	_vm->markRectAsDirty(vs->number, _left, _left + width, drawTop, drawTop + height); -	if (!_ignoreCharsetMask) { +	if (!ignoreCharsetMask) {  		_hasMask = true;  		_textScreenID = vs->number;  	} -	if (_ignoreCharsetMask || !vs->hasTwoBuffers) { +	if (ignoreCharsetMask || !vs->hasTwoBuffers) {  		dst = vs->getPixels(_left, drawTop);  		drawBits1(*vs, dst, charPtr, drawTop, origWidth, origHeight);  	} else { @@ -1313,7 +1312,7 @@ void CharsetRenderer::translateColor() {  } -void CharsetRendererClassic::printChar(int chr) { +void CharsetRendererClassic::printChar(int chr, bool ignoreCharsetMask) {  	int width, height, origWidth, origHeight;  	int offsX, offsY;  	VirtScreen *vs; @@ -1404,14 +1403,14 @@ void CharsetRendererClassic::printChar(int chr) {  	byte *dstPtr;  	byte *back = NULL; -	if (!_ignoreCharsetMask) { +	if (!ignoreCharsetMask) {  		_hasMask = true;  		_textScreenID = vs->number;  	}  	if ((_vm->_heversion >= 71 && _bitDepth >= 8) || (_vm->_heversion >= 90 && _bitDepth == 0)) {  #ifndef DISABLE_HE -		if (_ignoreCharsetMask || !vs->hasTwoBuffers) { +		if (ignoreCharsetMask || !vs->hasTwoBuffers) {  			dstPtr = vs->getPixels(0, 0);  		} else {  			dstPtr = (byte *)_textSurface.pixels; @@ -1439,7 +1438,7 @@ void CharsetRendererClassic::printChar(int chr) {  	} else {  		Graphics::Surface dstSurface;  		Graphics::Surface backSurface; -		if (_ignoreCharsetMask || !vs->hasTwoBuffers) { +		if (ignoreCharsetMask || !vs->hasTwoBuffers) {  			dstSurface = *vs;  			dstPtr = vs->getPixels(_left, drawTop);  		} else { @@ -1454,7 +1453,7 @@ void CharsetRendererClassic::printChar(int chr) {  			dstPtr = vs->getBackPixels(_left, drawTop);  		} -		if (!_ignoreCharsetMask && vs->hasTwoBuffers) { +		if (!ignoreCharsetMask && vs->hasTwoBuffers) {  			drawTop = _top - _vm->_screenTop;  		} @@ -1472,7 +1471,7 @@ void CharsetRendererClassic::printChar(int chr) {  			// once to each of the two buffers. That should hypothetically yield  			// identical results, though I didn't try it and right now I don't know  			// any spots where I can test this... -			if (!_ignoreCharsetMask) +			if (!ignoreCharsetMask)  				warning("This might be broken -- please report where you encountered this to Fingolfin");  			// Perform some clipping @@ -1648,7 +1647,7 @@ int CharsetRendererNut::getFontHeight() {  	return _current->getCharHeight('|');  } -void CharsetRendererNut::printChar(int chr) { +void CharsetRendererNut::printChar(int chr, bool ignoreCharsetMask) {  	Common::Rect shadow;  	assert(_current); @@ -1680,13 +1679,13 @@ void CharsetRendererNut::printChar(int chr) {  	shadow.bottom = _top + height + 2;  	Graphics::Surface s; -	if (!_ignoreCharsetMask) { +	if (!ignoreCharsetMask) {  		_hasMask = true;  		_textScreenID = kMainVirtScreen;  	}  	int drawTop = _top; -	if (_ignoreCharsetMask) { +	if (ignoreCharsetMask) {  		VirtScreen *vs = &_vm->virtscr[kMainVirtScreen];  		s = *vs;  		s.pixels = vs->getPixels(0, 0); @@ -1711,7 +1710,7 @@ void CharsetRendererNut::printChar(int chr) {  }  #endif -void CharsetRendererNES::printChar(int chr) { +void CharsetRendererNES::printChar(int chr, bool ignoreCharsetMask) {  	int width, height, origWidth, origHeight;  	VirtScreen *vs;  	byte *charPtr, *dst; @@ -1749,12 +1748,12 @@ void CharsetRendererNES::printChar(int chr) {  	_vm->markRectAsDirty(vs->number, _left, _left + width, drawTop, drawTop + height); -	if (!_ignoreCharsetMask) { +	if (!ignoreCharsetMask) {  		_hasMask = true;  		_textScreenID = vs->number;  	} -	if (_ignoreCharsetMask || !vs->hasTwoBuffers) { +	if (ignoreCharsetMask || !vs->hasTwoBuffers) {  		dst = vs->getPixels(_left, drawTop);  		drawBits1(*vs, dst, charPtr, drawTop, origWidth, origHeight);  	} else { diff --git a/scumm/charset.h b/scumm/charset.h index 32a326cc44..4867a362e4 100644 --- a/scumm/charset.h +++ b/scumm/charset.h @@ -57,7 +57,6 @@ public:  	bool _hasMask;	// True if "removable" text is visible somewhere (should be called _hasText or so)  	VirtScreenNumber _textScreenID;	// ID of the virtual screen on which the text is visible. -	bool _ignoreCharsetMask;  	bool _blitAlso;  	bool _firstChar;  	bool _disableOffsX; @@ -80,7 +79,7 @@ public:  	void clearCharsetMask();  	void clearTextSurface(); -	virtual void printChar(int chr) = 0; +	virtual void printChar(int chr, bool ignoreCharsetMask) = 0;  	virtual void drawChar(int chr, const Graphics::Surface &s, int x, int y) {}  	int getStringWidth(int a, const byte *str); @@ -130,7 +129,7 @@ protected:  public:  	CharsetRendererClassic(ScummEngine *vm) : CharsetRendererCommon(vm) {} -	void printChar(int chr); +	void printChar(int chr, bool ignoreCharsetMask);  	void drawChar(int chr, const Graphics::Surface &s, int x, int y);  	int getCharWidth(byte chr); @@ -146,7 +145,7 @@ public:  	CharsetRendererNES(ScummEngine *vm) : CharsetRendererCommon(vm) {}  	void setCurID(byte id) {} -	void printChar(int chr); +	void printChar(int chr, bool ignoreCharsetMask);  	void drawChar(int chr, const Graphics::Surface &s, int x, int y);  	int getFontHeight() { return 8; } @@ -160,7 +159,7 @@ protected:  public:  	CharsetRendererV3(ScummEngine *vm) : CharsetRendererCommon(vm) {} -	void printChar(int chr); +	void printChar(int chr, bool ignoreCharsetMask);  	void drawChar(int chr, const Graphics::Surface &s, int x, int y);  	void setCurID(byte id);  	void setColor(byte color); @@ -186,7 +185,7 @@ public:  	CharsetRendererNut(ScummEngine *vm);  	~CharsetRendererNut(); -	void printChar(int chr); +	void printChar(int chr, bool ignoreCharsetMask);  	void setCurID(byte id); diff --git a/scumm/string.cpp b/scumm/string.cpp index 6129b6ec26..04de8819c0 100644 --- a/scumm/string.cpp +++ b/scumm/string.cpp @@ -469,7 +469,7 @@ void ScummEngine::CHARSET_1() {  				}  			}  			if (_version <= 3) { -				_charset->printChar(c); +				_charset->printChar(c, false);  			} else {  				if (_features & GF_HE_NOSUBTITLES) {  					// HE games which use sprites for subtitles @@ -481,7 +481,7 @@ void ScummEngine::CHARSET_1() {  					// Subtitles are turned off, and there is a voice version  					// of this message -> don't print it.  				} else { -					_charset->printChar(c); +					_charset->printChar(c, false);  				}  			}  			_charset->_nextLeft = _charset->_left; @@ -554,9 +554,7 @@ void ScummEngine::drawString(int a, const byte *msg) {  		_charset->_left -= _charset->getStringWidth(a, buf) / 2;  	} -	if (_version < 7) -		_charset->_ignoreCharsetMask = true; - +	const bool ignoreCharsetMask = (_version < 7);  	if (!buf[0]) {  		buf[0] = ' '; @@ -635,7 +633,7 @@ void ScummEngine::drawString(int a, const byte *msg) {  					}  				}  			} -			_charset->printChar(c); +			_charset->printChar(c, ignoreCharsetMask);  			_charset->_blitAlso = false;  			if (cmi_pos_hack) { @@ -645,8 +643,6 @@ void ScummEngine::drawString(int a, const byte *msg) {  		}  	} -	_charset->_ignoreCharsetMask = false; -  	if (a == 0) {  		_charset->_nextLeft = _charset->_left;  		_charset->_nextTop = _charset->_top; @@ -864,7 +860,6 @@ void ScummEngine_v6::drawBlastTexts() {  	int c;  	int i; -	_charset->_ignoreCharsetMask = true;  	for (i = 0; i < _blastTextQueuePos; i++) {  		buf = _blastTextQueue[i].text; @@ -905,7 +900,7 @@ void ScummEngine_v6::drawBlastTexts() {  							c += *buf++ * 256;  						}  					} -					_charset->printChar(c); +					_charset->printChar(c, true);  				}  			} while (c && c != '\n'); @@ -914,7 +909,6 @@ void ScummEngine_v6::drawBlastTexts() {  		_blastTextQueue[i].rect = _charset->_str;  	} -	_charset->_ignoreCharsetMask = false;  }  void ScummEngine_v6::removeBlastTexts() { | 
