[Scummvm-cvs-logs] CVS: scummvm/sky control.cpp,1.23,1.24 control.h,1.14,1.15

Robert G?ffringmann lavosspawn at users.sourceforge.net
Sat Jul 5 09:41:09 CEST 2003


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

Modified Files:
	control.cpp control.h 
Log Message:
fixed bug #765892 (bottom bar in F5 menu not used)

Index: control.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/sky/control.cpp,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -d -r1.23 -r1.24
--- control.cpp	5 Jul 2003 15:47:45 -0000	1.23
+++ control.cpp	5 Jul 2003 16:40:12 -0000	1.24
@@ -137,6 +137,48 @@
 	_system->copy_rect(_screen + _y * GAME_SCREEN_WIDTH + _x, GAME_SCREEN_WIDTH, _x, _y, cpWidth, cpHeight);
 }
 
+SkyControlStatus::SkyControlStatus(SkyText *skyText, OSystem *system, uint8 *scrBuf) {
+	_skyText = skyText;
+	_system = system;
+	_screenBuf = scrBuf;
+	_textData = NULL;
+	_statusText = new SkyTextResource(NULL, 2, 1, 64, 163, NULL, DO_NOTHING, _system, _screenBuf);
+}
+
+SkyControlStatus::~SkyControlStatus(void) {
+	if (_textData)
+		free(_textData);
+	delete _statusText;
+}
+
+void SkyControlStatus::setToText(const char *newText) {
+	char tmpLine[256];
+	strcpy(tmpLine, newText);
+	if (_textData) {
+		_statusText->flushForRedraw();
+		free(_textData);
+	}
+	displayText_t disText = _skyText->displayText(tmpLine, NULL, true, STATUS_WIDTH, 255);
+	_textData = (dataFileHeader*)disText.textData;
+	_statusText->setSprite(_textData);
+	_statusText->drawToScreen(WITH_MASK);	
+}
+
+void SkyControlStatus::setToText(uint16 textNum) {
+	_skyText->getText(textNum);
+	if (_textData)
+		free(_textData);
+	displayText_t disText = _skyText->displayText(NULL, true, STATUS_WIDTH, 255);
+	_textData = (dataFileHeader*)disText.textData;
+	_statusText->setSprite(_textData);
+	_statusText->drawToScreen(WITH_MASK);
+}
+
+void SkyControlStatus::drawToScreen(void) {
+	_statusText->flushForRedraw();
+	_statusText->drawToScreen(WITH_MASK);
+}
+
 SkyControl::SkyControl(SkyScreen *screen, SkyDisk *disk, SkyMouse *mouse, SkyText *text, SkyMusicBase *music, SkyLogic *logic, SkySound *sound, OSystem *system, const char *savePath) {
 
 	_skyScreen = screen;
@@ -179,6 +221,7 @@
 	delete _restartPanButton;		delete _fxPanButton;
 	delete _musicPanButton;			delete _bodge;
 	delete _yesNo;					delete _text;
+	delete _statusBar;
 }
 
 void SkyControl::initPanel(void) {
@@ -215,9 +258,9 @@
 	_dosPanButton     = createResource(      _sprites.button, 3, 0, 58,  59, 93,     QUIT_TO_DOS, MAINPANEL);
 	_restartPanButton = createResource(      _sprites.button, 3, 0, 58,  79, 94,         RESTART, MAINPANEL);
 	if (SkyState::_systemVars.systemFlags & SF_FX_OFF)
-		_fxPanButton  = createResource(      _sprites.button, 3, 0, 58,  99, 86,       TOGGLE_FX, MAINPANEL);
+		_fxPanButton  = createResource(      _sprites.button, 3, 0, 58,  99, 87,       TOGGLE_FX, MAINPANEL);
 	else
-		_fxPanButton  = createResource(      _sprites.button, 3, 2, 58,  99, 87,       TOGGLE_FX, MAINPANEL);
+		_fxPanButton  = createResource(      _sprites.button, 3, 2, 58,  99, 86,       TOGGLE_FX, MAINPANEL);
 
 	if (SkyState::isCDVersion()) { // CD Version: Toggle text/speech
 	  _musicPanButton = createResource(      _sprites.button, 3, 0, 58, 119, 52,     TOGGLE_TEXT, MAINPANEL);
@@ -255,6 +298,8 @@
 	_restorePanLookList[3] = _savePanLookList[3] = _upFastButton;
 	_restorePanLookList[4] = _savePanLookList[4] = _upSlowButton;
 	_restorePanLookList[5] = _savePanLookList[5] = _quitButton;
+
+	_statusBar = new SkyControlStatus(_skyText, _system, _screenBuf);
 }
 
 void SkyControl::buttonControl(SkyConResource *pButton) {
@@ -343,6 +388,7 @@
 	_bodge->drawToScreen(WITH_MASK);
 	if (SkyState::isCDVersion())
 		drawTextCross(SkyState::_systemVars.systemFlags & TEXT_FLAG_MASK);
+	_statusBar->drawToScreen();
 }
 
 void SkyControl::restartGame(void) {
@@ -644,10 +690,12 @@
 	SkyState::_systemVars.systemFlags ^= SF_FX_OFF;
 	if (SkyState::_systemVars.systemFlags & SF_FX_OFF) {
 		pButton->_curSprite = 0;
-		pButton->_text = 0x7000 + 86;
+		pButton->_text = 0x7000 + 87;
+		_statusBar->setToText(0x7000 + 87);
 	} else {
 		pButton->_curSprite = 2;
-		pButton->_text = 0x7000 + 87;
+		pButton->_text = 0x7000 + 86;
+		_statusBar->setToText(0x7000 + 86);
 	}
 	pButton->drawToScreen(WITH_MASK);
 	buttonControl(pButton);
@@ -661,12 +709,16 @@
 	SkyState::_systemVars.systemFlags &= ~TEXT_FLAG_MASK;
 
 
-	if (flags == SF_ALLOW_TEXT)
+	if (flags == SF_ALLOW_TEXT) {
 		flags = SF_ALLOW_SPEECH;
-	else if (flags == SF_ALLOW_SPEECH)
+		_statusBar->setToText(0x7000 + 21); // speech only
+	} else if (flags == SF_ALLOW_SPEECH) {
 		flags = SF_ALLOW_SPEECH | SF_ALLOW_TEXT;
-	else
+		_statusBar->setToText(0x7000 + 52); // text and speech
+	} else {
 		flags = SF_ALLOW_TEXT;
+		_statusBar->setToText(0x7000 + 35); // text only
+	}
 
 	SkyState::_systemVars.systemFlags |= flags;
 

Index: control.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/sky/control.h,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -d -r1.14 -r1.15
--- control.h	5 Jul 2003 15:47:45 -0000	1.14
+++ control.h	5 Jul 2003 16:40:12 -0000	1.15
@@ -39,6 +39,7 @@
 #define MAX_TEXT_LEN 80
 #define PAN_LINE_WIDTH 184
 #define PAN_CHAR_HEIGHT 12
+#define STATUS_WIDTH 146
 #define MPNL_X 60  // Main Panel
 #define MPNL_Y 10
 
@@ -148,6 +149,21 @@
 	uint8 *_oldScreen;
 };
 
+class SkyControlStatus {
+public:
+	SkyControlStatus(SkyText *skyText, OSystem *system, uint8 *scrBuf);
+	~SkyControlStatus(void);
+	void setToText(const char *newText);
+	void setToText(uint16 textNum);
+	void drawToScreen(void);
+private:
+	SkyTextResource *_statusText;
+	dataFileHeader *_textData;
+	SkyText *_skyText;
+	OSystem *_system;
+	uint8 *_screenBuf;
+};
+
 class SkyControl {
 public:
 	SkyControl(SkyScreen *screen, SkyDisk *disk, SkyMouse *mouse, SkyText *text, SkyMusicBase *music, SkyLogic *logic, SkySound *sound, OSystem *system, const char *savePath);
@@ -254,6 +270,8 @@
 	SkyConResource *_upFastButton, *_upSlowButton, *_quitButton, *_restoreButton;
 
 	SkyConResource *_savePanLookList[6], *_restorePanLookList[6];
+
+	SkyControlStatus *_statusBar;
 
 	static char _quitTexts[12][30];
 	static uint8 _crossImg[594];





More information about the Scummvm-git-logs mailing list