[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
- Previous message: [Scummvm-cvs-logs] CVS: scummvm/sky struc.h,1.7,1.8 text.cpp,1.15,1.16 text.h,1.8,1.9
- Next message: [Scummvm-cvs-logs] CVS: scummvm/sky logic.cpp,1.17,1.18 logic.h,1.8,1.9 sky.cpp,1.24,1.25
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
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();
};
- Previous message: [Scummvm-cvs-logs] CVS: scummvm/sky struc.h,1.7,1.8 text.cpp,1.15,1.16 text.h,1.8,1.9
- Next message: [Scummvm-cvs-logs] CVS: scummvm/sky logic.cpp,1.17,1.18 logic.h,1.8,1.9 sky.cpp,1.24,1.25
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the Scummvm-git-logs
mailing list