aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames Brown2002-03-19 14:39:02 +0000
committerJames Brown2002-03-19 14:39:02 +0000
commit1e5b1308467b796c44db3ebb170111967a251f06 (patch)
tree9c2de260dfdce5b873d20f68b25e2aefff34601f
parent3b7018579ba995849b7d995a15b7649a5c99ba24 (diff)
downloadscummvm-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.cpp2
-rw-r--r--script_v1.cpp6
-rw-r--r--scumm.h1
-rw-r--r--string.cpp45
4 files changed, 47 insertions, 7 deletions
diff --git a/actor.cpp b/actor.cpp
index 3e5a2aad50..996419f204 100644
--- a/actor.cpp
+++ b/actor.cpp
@@ -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);
diff --git a/scumm.h b/scumm.h
index eb6e0ef87b..50b34aedce 100644
--- a/scumm.h
+++ b/scumm.h
@@ -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;
+}