Semi-experimental change: revised _hasMask handling -> simpler code (after removing those FIXME's that is :-), which should still produce identical results (let's wait for the regressions rolling in :-)

svn-id: r13498
This commit is contained in:
Max Horn 2004-04-08 01:38:07 +00:00
parent 1337c98434
commit bf0e879aa1
2 changed files with 16 additions and 6 deletions

View File

@ -978,7 +978,7 @@ void CharsetRendererV3::printChar(int chr) {
_vm->markRectAsDirty(vs->number, _left, _left + width, drawTop, drawTop + height);
if (vs->number == kMainVirtScreen && !_ignoreCharsetMask)
if (!_ignoreCharsetMask)
_hasMask = true;
drawBits1(vs, dest_ptr, char_ptr, mask_ptr, drawTop, 8, 8);
@ -1084,10 +1084,9 @@ void CharsetRendererClassic::printChar(int chr) {
_vm->markRectAsDirty(vs->number, _left, _left + width, drawTop, drawTop + height + offsY);
if (vs->number == kMainVirtScreen && !_ignoreCharsetMask)
if (!_ignoreCharsetMask)
_hasMask = true;
byte *mask = _vm->getMaskBuffer(_left, drawTop, 0);
byte *dst = vs->screenPtr + vs->xstart + drawTop * vs->width + _left;
@ -1291,7 +1290,9 @@ void CharsetRendererNut::printChar(int chr) {
shadow.right = _left + width + 2;
shadow.bottom = _top + height + 2;
_hasMask = true;
if (!_ignoreCharsetMask)
_hasMask = true;
_current->drawShadowChar(chr, _left, _top, _color, !_ignoreCharsetMask, _curId != 3);
_vm->markRectAsDirty(kMainVirtScreen, shadow);

View File

@ -161,7 +161,10 @@ void ScummEngine::CHARSET_1() {
if (!_keepText) {
if (_version <= 3 && _gameId != GID_LOOM) {
_charset->_hasMask = true;
// FIXME: Remove this commented out code eventually
// if (!_charset->_hasMask)
// warning("_hasMask mismatch (case C) - please report to Fingolfin");
// _charset->_hasMask = true;
}
_charset->restoreCharsetBg();
}
@ -310,7 +313,10 @@ void ScummEngine::CHARSET_1() {
_charsetBufPos = buffer - _charsetBuffer;
_charset->_hasMask = (_charset->_str.left != -1);
// FIXME: Remove this and the next three lines eventually!
if (_charset->_hasMask != (_charset->_str.left != -1))
warning("_hasMask mismatch (case A %d) - please report to Fingolfin", _charset->_hasMask);
// _charset->_hasMask = (_charset->_str.left != -1);
}
@ -439,6 +445,9 @@ void ScummEngine::drawString(int a, const byte *msg) {
_string[a].xpos = _charset->_str.right + 8; // Indy3: Fixes Grail Diary text positioning
if (_version >= 7) {
// FIXME: Remove this and the next three lines eventually!
if (!_charset->_hasMask)
warning("_hasMask mismatch (case B %d) - please report to Fingolfin", _charset->_hasMask);
_charset->_hasMask = true;
}
}