diff options
author | James Brown | 2002-10-06 07:23:08 +0000 |
---|---|---|
committer | James Brown | 2002-10-06 07:23:08 +0000 |
commit | d19260af2cef193c4964f5fa4ea990d7e91be8fb (patch) | |
tree | 2faa880537a3a9c529564918c6759136622c59b9 /scumm | |
parent | 9b93506bcb881e7f0e5018e08b2b6cd9e422ed3a (diff) | |
download | scummvm-rg350-d19260af2cef193c4964f5fa4ea990d7e91be8fb.tar.gz scummvm-rg350-d19260af2cef193c4964f5fa4ea990d7e91be8fb.tar.bz2 scummvm-rg350-d19260af2cef193c4964f5fa4ea990d7e91be8fb.zip |
Fix drawDescString - still needs centering corrections
svn-id: r5094
Diffstat (limited to 'scumm')
-rw-r--r-- | scumm/script_v2.cpp | 4 | ||||
-rw-r--r-- | scumm/scumm.h | 2 | ||||
-rw-r--r-- | scumm/string.cpp | 78 |
3 files changed, 31 insertions, 53 deletions
diff --git a/scumm/script_v2.cpp b/scumm/script_v2.cpp index 9f51f739d1..f8c9575c47 100644 --- a/scumm/script_v2.cpp +++ b/scumm/script_v2.cpp @@ -2827,9 +2827,7 @@ void Scumm::o6_miscOps() _string[0].color = (byte)args[2]; _string[0].xpos = args[3]; _string[0].ypos = args[4]; - - addMessageToStack(getStringAddressVar(VAR_STRING2DRAW)); - drawDescString(); + drawDescString(getStringAddressVar(VAR_STRING2DRAW)); } break; case 17: diff --git a/scumm/scumm.h b/scumm/scumm.h index e562b7554a..720aeb7b92 100644 --- a/scumm/scumm.h +++ b/scumm/scumm.h @@ -939,7 +939,7 @@ public: int hasCharsetMask(int x, int y, int x2, int y2); void CHARSET_1(); void description(); - void drawDescString(); + void drawDescString(byte *msg); byte *_msgPtrToAdd; byte *addMessageToStack(byte *msg); void addIntToStack(int var); diff --git a/scumm/string.cpp b/scumm/string.cpp index 060e4efd71..db1f258a22 100644 --- a/scumm/string.cpp +++ b/scumm/string.cpp @@ -504,70 +504,50 @@ void Scumm::description() gdi._mask_bottom = charset._strBottom; } -void Scumm::drawDescString() +void Scumm::drawDescString(byte *msg) { - byte byte1=0, chr, *buf, *charsetptr; - uint color, i; + byte c, *buf, buffer[256]; - buf = charset._buffer; - charset._bufPos = 0; + buf = _msgPtrToAdd = buffer; + addMessageToStack(msg); - charset._left2 = charset._left = _string[0].xpos; + charset._bufPos = 0; charset._top = _string[0].ypos; + charset._left = _string[0].xpos; + charset._left2 = _string[0].xpos; + charset._right = _realWidth - 1; + charset._xpos2 = _string[0].xpos; + charset._ypos2 = _string[0].ypos; charset._curId = _string[0].charset; charset._center = _string[0].center; - charset._right = _string[0].right; charset._color = _string[0].color; - charset._xpos2 = _string[0].xpos; - charset._ypos2 = _string[0].ypos; + // Center text + charset._xpos2 -= charset.getStringWidth(0, buffer, 0) >> 1; + if (charset._xpos2 < 0) + charset._xpos2 = 0; + charset._disableOffsX = charset._unk12 = 1; _bkColor = 0; _talkDelay = 1; - charset._left -= charset.getStringWidth(0, buf, 0) >> 1; - restoreCharsetBg(); - // Read color mapping and height information - charsetptr = getResourceAddress(rtCharset, charset._curId); - assert(charsetptr); - charsetptr += 29; - for (i = 0; i < 4; i++) - charset._colorMap[i] = _charsetData[charset._curId][i]; - - byte1 = charsetptr[1]; // Character height - - for (i = 0; (chr = buf[i++]) != 0;) { - if (chr == 254) - chr = 255; - if (chr == 255) { - chr = buf[i++]; - switch (chr) { - case 9: - case 10: - case 13: - case 14: - i += 2; - break; - case 1: - case 8: - charset._left = charset._left2 - charset.getStringWidth(0, buf, i); - charset._top += byte1; - break; - case 12: - color = buf[i] + (buf[i + 1] << 8); - i += 2; - if (color == 0xFF) - charset._color = _string[0].color; - else - charset._color = color; - break; - } - } else { - charset.printChar(chr); + do { + c = *buf++; + if (c == 0) { + _haveMsg = 1; + break; } - } + if (c != 0xFF) { + charset._left = charset._xpos2; + charset._top = charset._ypos2; + charset.printChar(c); + charset._xpos2 = charset._left; + charset._ypos2 = charset._top; + continue; + } + } while (1); gdi._mask_left = charset._strLeft; gdi._mask_right = charset._strRight; |