aboutsummaryrefslogtreecommitdiff
path: root/sky/text.cpp
diff options
context:
space:
mode:
authorOliver Kiehl2003-05-09 22:06:37 +0000
committerOliver Kiehl2003-05-09 22:06:37 +0000
commit18e1c5a80ad4f653fb597f948235ea8bfd77bb4f (patch)
treeb5508ede4de79ff5821fb3b5e454c2e16bf98291 /sky/text.cpp
parent3a9d8cd8f48b7392614ff91d3e90932f86f1e2b4 (diff)
downloadscummvm-rg350-18e1c5a80ad4f653fb597f948235ea8bfd77bb4f.tar.gz
scummvm-rg350-18e1c5a80ad4f653fb597f948235ea8bfd77bb4f.tar.bz2
scummvm-rg350-18e1c5a80ad4f653fb597f948235ea8bfd77bb4f.zip
no need for inheritance anymore
svn-id: r7407
Diffstat (limited to 'sky/text.cpp')
-rw-r--r--sky/text.cpp56
1 files changed, 31 insertions, 25 deletions
diff --git a/sky/text.cpp b/sky/text.cpp
index 0af38c92d6..6e5b147dd4 100644
--- a/sky/text.cpp
+++ b/sky/text.cpp
@@ -39,6 +39,8 @@ SkyText::SkyText(SkyDisk *skyDisk, uint32 gameVersion, uint16 language) {
_language = language;
_gameVersion = gameVersion;
+ initHuffTree();
+
_mainCharacterSet.addr = _skyDisk->loadFile(CHAR_SET_FILE, NULL);
_mainCharacterSet.charHeight = MAIN_CHAR_HEIGHT;
_mainCharacterSet.charSpacing = 0;
@@ -1428,36 +1430,40 @@ static const HuffTree huffTree_00372[] = {
{ 0, 0, '!' },
};
-char SkyText::traverseTree(const HuffTree *huffTree) {
+void SkyText::initHuffTree() {
+ switch (_gameVersion) {
+ case 267:
+ _huffTree = huffTree_00267;
+ break;
+ case 288:
+ _huffTree = huffTree_00288;
+ break;
+ case 303:
+ _huffTree = huffTree_00303;
+ break;
+ case 331:
+ _huffTree = huffTree_00331;
+ break;
+ case 365:
+ case 368:
+ case 372:
+ _huffTree = huffTree_00372;
+ break;
+ default:
+ error("Unknown game version");
+ }
+}
+
+char SkyText::getTextChar() {
int pos = 0;
for (;;) {
if (getTBit() == 0)
- pos = huffTree[pos].lChild;
+ pos = _huffTree[pos].lChild;
else
- pos = huffTree[pos].rChild;
- if (huffTree[pos].lChild == 0 && huffTree[pos].rChild == 0) {
- return huffTree[pos].value;
+ pos = _huffTree[pos].rChild;
+ if (_huffTree[pos].lChild == 0 && _huffTree[pos].rChild == 0) {
+ return _huffTree[pos].value;
}
}
}
-char SkyText_v00267::getTextChar() {
- return traverseTree(huffTree_00267);
-}
-
-char SkyText_v00288::getTextChar() {
- return traverseTree(huffTree_00288);
-}
-
-char SkyText_v00303::getTextChar() {
- return traverseTree(huffTree_00303);
-}
-
-char SkyText_v00331::getTextChar() {
- return traverseTree(huffTree_00331);
-}
-
-char SkyText_v00372::getTextChar() {
- return traverseTree(huffTree_00372);
-}
-