diff options
author | James Brown | 2002-03-19 14:39:02 +0000 |
---|---|---|
committer | James Brown | 2002-03-19 14:39:02 +0000 |
commit | 1e5b1308467b796c44db3ebb170111967a251f06 (patch) | |
tree | 9c2de260dfdce5b873d20f68b25e2aefff34601f | |
parent | 3b7018579ba995849b7d995a15b7649a5c99ba24 (diff) | |
download | scummvm-rg350-1e5b1308467b796c44db3ebb170111967a251f06.tar.gz scummvm-rg350-1e5b1308467b796c44db3ebb170111967a251f06.tar.bz2 scummvm-rg350-1e5b1308467b796c44db3ebb170111967a251f06.zip |
khaleks fix for indy3/zak fonts.
svn-id: r3791
-rw-r--r-- | actor.cpp | 2 | ||||
-rw-r--r-- | script_v1.cpp | 6 | ||||
-rw-r--r-- | scumm.h | 1 | ||||
-rw-r--r-- | string.cpp | 45 |
4 files changed, 47 insertions, 7 deletions
@@ -1211,7 +1211,7 @@ void Scumm::setupShadowPalette(int slot,int rfact,int gfact,int bfact,int from,i } void Scumm::walkActorOld(Actor *a) { - int new_dir,next_box,goto_x,goto_y; + int new_dir,next_box; if(!a->moving) return; diff --git a/script_v1.cpp b/script_v1.cpp index 904f02777e..83153c64f1 100644 --- a/script_v1.cpp +++ b/script_v1.cpp @@ -804,7 +804,7 @@ FixRoom: } } -const short int bit_table[16] = +const int bit_table[16] = {1,2,4,8,0x10,0x20,0x40,0x80,0x100,0x200,0x400,0x800,0x1000,0x2000,0x4000,0x8000}; @@ -1342,8 +1342,8 @@ void Scumm::o5_getVerbEntrypoint() { } void Scumm::o5_ifClassOfIs() { - int act,cls; - bool cond = true, b; + int act,cls, b; + bool cond = true; byte *oldClass; act = getVarOrDirectWord(0x80); @@ -492,6 +492,7 @@ struct CharsetRenderer { void drawBits(); void printChar(int chr); void printCharOld(int chr); + int getSpacing(char chr); int getStringWidth(int a, byte *str, int pos); void addLinebreaks(int a, byte *str, int pos, int maxwidth); }; diff --git a/string.cpp b/string.cpp index db2a46348f..2ea2d0e947 100644 --- a/string.cpp +++ b/string.cpp @@ -132,7 +132,7 @@ void CharsetRenderer::addLinebreaks(int a, byte *str, int pos, int maxwidth) { if (chr==' ') lastspace = pos - 1; if(_vm->_features & GF_OLD256) { - curw += 8; + curw += getSpacing(chr); } else { offs = READ_LE_UINT32(ptr + chr*4 + 4); if (offs) { @@ -677,7 +677,10 @@ void Scumm::unkAddMsgToStack5(int var) { void Scumm::initCharset(int charsetno) { int i; - + + if (_features & GF_OLD256) + charsetno = !charsetno; + if (_features & GF_SMALL_HEADER) loadCharset(charsetno); else @@ -728,7 +731,7 @@ void CharsetRenderer::printCharOld(int chr) { // Loom3 / Zak256 } } - _left+=8; + _left+= getSpacing(chr); if (_left > _strRight) _strRight = _left; @@ -918,3 +921,39 @@ void CharsetRenderer::drawBits() { y++; } } + +int CharsetRenderer::getSpacing(char chr) { + int space; + + if (_curId == 1) { // do spacing for variable width old-style font + switch(chr) { + case '.': + space=1; + break; + case 'i': + case '\'': + case 'I': + case '!': + space=2; + break; + case 'l': + space=3; + break; + case ' ': + space=4; + break; + case 'W': + case 'w': + case 'N': + case 'M': + case 'm': + space=8; + break; + default: + space=6; + } + } + else + space=7; + return space; +} |