diff options
author | Oliver Kiehl | 2003-05-09 22:06:37 +0000 |
---|---|---|
committer | Oliver Kiehl | 2003-05-09 22:06:37 +0000 |
commit | 18e1c5a80ad4f653fb597f948235ea8bfd77bb4f (patch) | |
tree | b5508ede4de79ff5821fb3b5e454c2e16bf98291 /sky/text.cpp | |
parent | 3a9d8cd8f48b7392614ff91d3e90932f86f1e2b4 (diff) | |
download | scummvm-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.cpp | 56 |
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); -} - |