[Scummvm-cvs-logs] CVS: scummvm/sky intro.cpp,1.13,1.14 logic.cpp,1.16,1.17 logic.h,1.7,1.8 sky.cpp,1.23,1.24 skydefs.h,1.6,1.7 struc.h,1.8,1.9 text.cpp,1.16,1.17 text.h,1.9,1.10

Joost Peters joostp at users.sourceforge.net
Tue Apr 29 12:53:06 CEST 2003


Update of /cvsroot/scummvm/scummvm/sky
In directory sc8-pr-cvs1:/tmp/cvs-serv2059/sky

Modified Files:
	intro.cpp logic.cpp logic.h sky.cpp skydefs.h struc.h text.cpp 
	text.h 
Log Message:
added lowTextManager(), moved language from getText() to SkyText constructor + some cleanup

Index: intro.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/sky/intro.cpp,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -d -r1.13 -r1.14
--- intro.cpp	28 Apr 2003 20:50:18 -0000	1.13
+++ intro.cpp	29 Apr 2003 19:52:19 -0000	1.14
@@ -227,7 +227,7 @@
 	_introTextSpace = (uint8 *)calloc(10000, 1);
 	_introTextSave = (uint8 *)calloc(10000, 1);
 
-	_skyText->getText(77, _language);
+	_skyText->getText(77);
 	
 	delay(8000); // keep revolution up for 8 seconds
 
@@ -455,7 +455,7 @@
 void SkyState::prepareText(uint32 *&cmdPtr) {
 	
 	uint32 textNum = *(cmdPtr + 2);
-	_skyText->getText(textNum, _language);
+	_skyText->getText(textNum);
 	_skyText->displayText(_introTextSpace, true, INTRO_TEXT_WIDTH, 255);
 	cmdPtr += 3;  
 }

Index: logic.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/sky/logic.cpp,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -d -r1.16 -r1.17
--- logic.cpp	27 Apr 2003 22:23:10 -0000	1.16
+++ logic.cpp	29 Apr 2003 19:52:20 -0000	1.17
@@ -25,6 +25,7 @@
 #include "sky/compact.h"
 #include "sky/skydefs.h"
 
+uint16 SkyLogic::_screen;
 
 typedef void (SkyLogic::*LogicTable) ();
 static const LogicTable logicTable[] = {
@@ -55,7 +56,7 @@
 	for (uint i = 0; i < sizeof(_moduleList)/sizeof(uint16*); i++)
 		_moduleList[i] = 0;
 	_stackPtr = 0;
-
+	
 	initScriptVariables();
 }
 

Index: logic.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/sky/logic.h,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -d -r1.7 -r1.8
--- logic.h	27 Apr 2003 22:15:35 -0000	1.7
+++ logic.h	29 Apr 2003 19:52:20 -0000	1.8
@@ -167,6 +167,8 @@
 	uint32 fnUnPauseFx(uint32 a, uint32 b, uint32 c);
 	uint32 fnPrintf(uint32 a, uint32 b, uint32 c);
 
+	static uint16 SkyLogic::_screen;
+	
 protected:
 	void push(uint32);
 	uint32 pop();

Index: sky.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/sky/sky.cpp,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -d -r1.23 -r1.24
--- sky.cpp	27 Apr 2003 22:23:10 -0000	1.23
+++ sky.cpp	29 Apr 2003 19:52:21 -0000	1.24
@@ -209,23 +209,23 @@
 	switch (_gameVersion) {
 	case 267:
 		//floppy demo
-		return new SkyText_v00267(_skyDisk, _gameVersion);
+		return new SkyText_v00267(_skyDisk, _gameVersion, _language);
 	case 288:
 		//floppy version
-		return new SkyText_v00288(_skyDisk, _gameVersion);
+		return new SkyText_v00288(_skyDisk, _gameVersion, _language);
 	case 303:
 		//floppy version
-		return new SkyText_v00303(_skyDisk, _gameVersion);
+		return new SkyText_v00303(_skyDisk, _gameVersion, _language);
 	case 331:
 		//floppy version
-		return new SkyText_v00331(_skyDisk, _gameVersion);
+		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);
+		return new SkyText_v00372(_skyDisk, _gameVersion, _language);
 	default:
 		error("Unknown game version");
 	}

Index: skydefs.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/sky/skydefs.h,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -d -r1.6 -r1.7
--- skydefs.h	26 Apr 2003 19:01:13 -0000	1.6
+++ skydefs.h	29 Apr 2003 19:52:22 -0000	1.7
@@ -26,6 +26,8 @@
 #define KEY_BUFFER_SIZE	80
 #define SEQUENCE_COUNT	3
 
+#define	FIRST_TEXT_COMPACT	23
+
 //screen/grid defines
 #define GAME_SCREEN_WIDTH	320
 #define GAME_SCREEN_HEIGHT	192

Index: struc.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/sky/struc.h,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -d -r1.8 -r1.9
--- struc.h	29 Apr 2003 17:42:07 -0000	1.8
+++ struc.h	29 Apr 2003 19:52:23 -0000	1.9
@@ -22,6 +22,11 @@
 #ifndef SKYSTRUC_H
 #define SKYSTRUC_H
 
+struct lowTextManager_t {
+	byte *textData;
+	uint16 compactNum;
+};
+
 struct displayText_t {
 	byte *textData;	
 	uint32 textWidth;

Index: text.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/sky/text.cpp,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -d -r1.16 -r1.17
--- text.cpp	29 Apr 2003 17:42:07 -0000	1.16
+++ text.cpp	29 Apr 2003 19:52:23 -0000	1.17
@@ -24,16 +24,19 @@
 #include "sky/skydefs.h"
 #include "sky/sky.h"
 #include "sky/text.h"
+#include "sky/logic.h"
 
 #define FIRST_TEXT_SEC	77
+#define	FIRST_TEXT_BUFFER	274
 #define NO_OF_TEXT_SECTIONS	8	// 8 sections per language
 #define	CHAR_SET_FILE	60150
 #define MAX_SPEECH_SECTION	7 
 #define CHAR_SET_HEADER	128
 #define	MAX_NO_LINES	10
 
-SkyText::SkyText(SkyDisk *skyDisk, uint32 gameVersion) {
+SkyText::SkyText(SkyDisk *skyDisk, uint32 gameVersion, uint16 language) {
 	_skyDisk = skyDisk;
+	_language = language;
 	_gameVersion = gameVersion;
 
 	_mainCharacterSet.addr = _skyDisk->loadFile(CHAR_SET_FILE, NULL);
@@ -81,14 +84,14 @@
 	_dtCharSpacing = newCharSet->charSpacing;
 }
 
-void SkyText::getText(uint32 textNr, uint16 language) { //load text #"textNr" into textBuffer
+void SkyText::getText(uint32 textNr) { //load text #"textNr" into textBuffer
 	uint32 sectionNo = (textNr & 0x0F000) >> 10;
 	
 	if (SkyState::_itemList[FIRST_TEXT_SEC + sectionNo] == (void **)NULL) { //check if already loaded
 		debug(5, "Loading Text item(s) for Section %d", (sectionNo>>2));
 		
 		uint32 fileNo = (sectionNo >> 2); 
-		fileNo += ((language * NO_OF_TEXT_SECTIONS) + 60600);
+		fileNo += ((_language * NO_OF_TEXT_SECTIONS) + 60600);
 		SkyState::_itemList[FIRST_TEXT_SEC + sectionNo] = (void **)_skyDisk->loadFile((uint16)fileNo, NULL);
 	}
 	_textItemPtr = (uint8 *)SkyState::_itemList[FIRST_TEXT_SEC + sectionNo];
@@ -322,6 +325,44 @@
 	
 	//update position
 	dest = startPos + charWidth + _dtCharSpacing*2 - 1; 
+
+}
+
+lowTextManager_t SkyText::lowTextManager(uint32 textNum, uint16 width, uint16 logicNum, uint8 color, bool centre) {
+
+	getText(textNum);
+
+	struct displayText_t textInfo = displayText(NULL, centre, width, color);
+	
+	_lowTextWidth = textInfo.textWidth;
+	byte *textData = textInfo.textData;
+
+	uint32 compactNum = FIRST_TEXT_COMPACT;
+
+	Compact *cpt = SkyState::fetchCompact(compactNum);
+
+	while (cpt->status != 0xFFFF) { //-1
+		compactNum++;
+		cpt = SkyState::fetchCompact(compactNum);
+	}
+
+	cpt->flag = (compactNum - FIRST_TEXT_COMPACT) + FIRST_TEXT_BUFFER;
+
+	byte *oldText = (byte *)SkyState::_itemList[compactNum];
+	SkyState::_itemList[compactNum] = (void **)textData; 
+
+	if (oldText != NULL)
+		free (oldText);
+
+	cpt->logic = logicNum; 
+	cpt->status = ST_LOGIC | ST_FOREGROUND | ST_RECREATE;
+	cpt->screen = SkyLogic::_screen; 
+
+	struct lowTextManager_t ret;
+	ret.textData = _dtData;
+	ret.compactNum = compactNum;
+
+	return ret;
 
 }
 

Index: text.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/sky/text.h,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -d -r1.9 -r1.10
--- text.h	29 Apr 2003 17:42:07 -0000	1.9
+++ text.h	29 Apr 2003 19:52:24 -0000	1.10
@@ -26,11 +26,12 @@
 
 class SkyText {
 public:
-	SkyText(SkyDisk *skyDisk, uint32 gameVersion);
-	void getText(uint32 textNr, uint16 language);
+	SkyText(SkyDisk *skyDisk, uint32 gameVersion, uint16 _language);
+	void getText(uint32 textNr);
 	struct displayText_t displayText(uint8 *dest, bool centre, uint16 pixelWidth, uint8 color);
 	struct displayText_t displayText(char *textPtr, uint8 *dest, bool centre, uint16 pixelWidth, uint8 color);
 	void makeGameCharacter(char textChar, uint8 *charSetPtr, uint8 *&data, uint8 color);
+	struct lowTextManager_t lowTextManager(uint32 textNum, uint16 width, uint16 logicNum, uint8 color, bool centre);
 
 protected:
 	bool getTBit();
@@ -38,6 +39,7 @@
 	virtual char getTextChar() = 0;
 
 	SkyDisk *_skyDisk;
+	uint16 	_language;
 	uint32	_gameVersion;
 	uint8	_inputValue;
 	uint8	_shiftBits;
@@ -69,39 +71,40 @@
 	uint32	_dtWidth;	//width of chars in last line (for editing (?))
 	uint32	_dtLastWidth;
 	bool	_dtCentre;	//set for centre text
+	uint32	_lowTextWidth;
 };
 
 class SkyText_v00267 : public SkyText {
 public:
-	SkyText_v00267(SkyDisk *skyDisk, uint32 gameVersion) : SkyText(skyDisk, gameVersion) {};
+	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) : SkyText(skyDisk, gameVersion) {};
+	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) : SkyText(skyDisk, gameVersion) {};
+	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) : SkyText(skyDisk, gameVersion) {};
+	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) : SkyText(skyDisk, gameVersion) {};
+	SkyText_v00372(SkyDisk *skyDisk, uint32 gameVersion, uint16 language) : SkyText(skyDisk, gameVersion, language) {};
 protected:
 	char getTextChar();
 };





More information about the Scummvm-git-logs mailing list