[Scummvm-cvs-logs] CVS: scummvm/sky text.cpp,1.20,1.21 text.h,1.11,1.12 sky.cpp,1.30,1.31
Oliver Kiehl
olki at users.sourceforge.net
Fri May 9 15:07:06 CEST 2003
Update of /cvsroot/scummvm/scummvm/sky
In directory sc8-pr-cvs1:/tmp/cvs-serv4909
Modified Files:
text.cpp text.h sky.cpp
Log Message:
no need for inheritance anymore
Index: text.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/sky/text.cpp,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -d -r1.20 -r1.21
--- text.cpp 9 May 2003 17:11:47 -0000 1.20
+++ text.cpp 9 May 2003 22:06:37 -0000 1.21
@@ -39,6 +39,8 @@
_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 @@
{ 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);
}
Index: text.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/sky/text.h,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -d -r1.11 -r1.12
--- text.h 9 May 2003 17:11:47 -0000 1.11
+++ text.h 9 May 2003 22:06:37 -0000 1.12
@@ -42,8 +42,8 @@
protected:
bool getTBit();
void fnSetFont(uint32 fontNr);
- char traverseTree(const HuffTree *huffTree);
- virtual char getTextChar() = 0;
+ void initHuffTree();
+ char getTextChar();
SkyDisk *_skyDisk;
uint16 _language;
@@ -52,6 +52,8 @@
uint8 _shiftBits;
uint8 *_textItemPtr;
+ const HuffTree *_huffTree;
+
struct charSet {
uint8 *addr;
uint32 charHeight;
@@ -79,41 +81,6 @@
uint32 _dtLastWidth;
bool _dtCentre; //set for centre text
uint32 _lowTextWidth;
-};
-
-class SkyText_v00267 : public SkyText {
-public:
- SkyText_v00267(SkyDisk *skyDisk, uint32 gameVersion, uint16 language) : SkyText(skyDisk, gameVersion, language) {};
-protected:
- char getTextChar();
-};
-
-class SkyText_v00288 : public SkyText {
-public:
- SkyText_v00288(SkyDisk *skyDisk, uint32 gameVersion, uint16 language) : SkyText(skyDisk, gameVersion, language) {};
-protected:
- char getTextChar();
-};
-
-class SkyText_v00303 : public SkyText {
-public:
- SkyText_v00303(SkyDisk *skyDisk, uint32 gameVersion, uint16 language) : SkyText(skyDisk, gameVersion, language) {};
-protected:
- char getTextChar();
-};
-
-class SkyText_v00331 : public SkyText {
-public:
- SkyText_v00331(SkyDisk *skyDisk, uint32 gameVersion, uint16 language) : SkyText(skyDisk, gameVersion, language) {};
-protected:
- char getTextChar();
-};
-
-class SkyText_v00372 : public SkyText {
-public:
- SkyText_v00372(SkyDisk *skyDisk, uint32 gameVersion, uint16 language) : SkyText(skyDisk, gameVersion, language) {};
-protected:
- char getTextChar();
};
#endif
Index: sky.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/sky/sky.cpp,v
retrieving revision 1.30
retrieving revision 1.31
diff -u -d -r1.30 -r1.31
--- sky.cpp 5 May 2003 13:19:59 -0000 1.30
+++ sky.cpp 9 May 2003 22:06:37 -0000 1.31
@@ -128,7 +128,7 @@
}
_gameVersion = _skyDisk->determineGameVersion();
- _skyText = getSkyText();
+ _skyText = new SkyText(_skyDisk, _gameVersion, _language);
_skyMouse = new SkyMouse(_skyDisk);
initialiseScreen();
@@ -256,33 +256,6 @@
}
cur = _system->get_msecs();
} while (cur < start + amount);
-}
-
-SkyText *SkyState::getSkyText() {
-
- switch (_gameVersion) {
- case 267:
- //floppy demo
- return new SkyText_v00267(_skyDisk, _gameVersion, _language);
- case 288:
- //floppy version
- return new SkyText_v00288(_skyDisk, _gameVersion, _language);
- case 303:
- //floppy version
- return new SkyText_v00303(_skyDisk, _gameVersion, _language);
- case 331:
- //floppy version
- return new SkyText_v00331(_skyDisk, _gameVersion, _language);
- case 365:
- //cd demo, uses a slightly modified version of v00372
- case 368:
- //cd version, uses a slightly modified version of v00372
- case 372:
- //cd version
- return new SkyText_v00372(_skyDisk, _gameVersion, _language);
- default:
- error("Unknown game version");
- }
}
bool SkyState::isDemo(uint32 version) {
More information about the Scummvm-git-logs
mailing list