[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