[Scummvm-cvs-logs] CVS: scummvm/kyra kyra.cpp,1.83,1.84 kyra.h,1.44,1.45 script_v1.cpp,1.37,1.38

Johannes Schickel lordhoto at users.sourceforge.net
Sat Dec 10 11:04:00 CET 2005


Update of /cvsroot/scummvm/scummvm/kyra
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv27564

Modified Files:
	kyra.cpp kyra.h script_v1.cpp 
Log Message:
Implemented drawing of Brynns note.


Index: kyra.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/kyra/kyra.cpp,v
retrieving revision 1.83
retrieving revision 1.84
diff -u -d -r1.83 -r1.84
--- kyra.cpp	10 Dec 2005 17:51:40 -0000	1.83
+++ kyra.cpp	10 Dec 2005 19:02:53 -0000	1.84
@@ -363,6 +363,8 @@
 	_scenePhasingFlag = 0;
 	_lastProcessedItem = 0;
 	_lastProcessedItemHeight = 16;
+	
+	_hidPage = _screenPage = 0;
 
 	return 0;
 }
@@ -401,7 +403,8 @@
 	for (int i = 0; i < ARRAYSIZE(_sceneAnimTable); ++i) {
 		free(_sceneAnimTable[i]);
 	}
-
+	free(_unkPtr1);
+	free(_unkPtr2);
 }
 
 void KyraEngine::errorString(const char *buf1, char *buf2) {
@@ -574,6 +577,37 @@
 	} while (!_fastMode && _system->getMillis() < start + amount);
 }
 
+void KyraEngine::waitForEvent() {
+	bool finished = false;
+	OSystem::Event event;
+	while (!finished) {
+		while (_system->pollEvent(event)) {
+			switch (event.type) {
+			case OSystem::EVENT_KEYDOWN:
+				finished = true;
+				break;
+			case OSystem::EVENT_MOUSEMOVE:
+				_mouseX = event.mouse.x;
+				_mouseY = event.mouse.y;
+				break;
+			case OSystem::EVENT_QUIT:
+				quitGame();
+				break;
+			case OSystem::EVENT_LBUTTONDOWN:
+				finished = true;
+				break;
+			default:
+				break;
+			}
+		}
+
+		if (_debugger->isAttached())
+			_debugger->onFrame();
+
+		_system->delayMillis(10);
+	}
+}
+
 void KyraEngine::mainLoop() {
 	debug(9, "KyraEngine::mainLoop()");
 

Index: kyra.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/kyra/kyra.h,v
retrieving revision 1.44
retrieving revision 1.45
diff -u -d -r1.44 -r1.45
--- kyra.h	10 Dec 2005 17:51:40 -0000	1.44
+++ kyra.h	10 Dec 2005 19:02:55 -0000	1.45
@@ -514,7 +514,6 @@
 	void snd_startTrack();
 	void snd_haltTrack();
 	void snd_setSoundEffectFile(int file);
-
 	
 	static OpcodeProc _opcodeTable[];
 	static const int _opcodeTableSize;
@@ -532,6 +531,7 @@
 	void res_loadRoomTable(const byte *src, Room **loadTo, int *size);
 	void res_loadShapeTable(const byte *src, Shape **loadTo, int *size);
 	
+	void waitForEvent();
 	void delay(uint32 millis);
 	void loadPalette(const char *filename, uint8 *palData);
 	void loadMouseShapes();
@@ -568,6 +568,7 @@
 	bool _talkMessagePrinted;
 	uint8 _flagsTable[53];
 	uint8 *_unkPtr1, *_unkPtr2;
+	uint8 *_hidPage, *_screenPage;
 	uint8 *_shapes[377];
 	uint16 _gameSpeed;
 	uint16 _tickLength;

Index: script_v1.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/kyra/script_v1.cpp,v
retrieving revision 1.37
retrieving revision 1.38
diff -u -d -r1.37 -r1.38
--- script_v1.cpp	10 Dec 2005 17:51:40 -0000	1.37
+++ script_v1.cpp	10 Dec 2005 19:02:56 -0000	1.38
@@ -473,8 +473,8 @@
 }
 
 int KyraEngine::cmd_getElapsedSeconds(ScriptState *script) {
-	warning("STUB: cmd_getElapsedSeconds");
-	return 0;
+	debug(3, "cmd_getElapsedSeconds(0x%X) ()");
+	return _system->getMillis() / 1000;
 }
 
 int KyraEngine::cmd_mouseIsPointer(ScriptState *script) {
@@ -850,7 +850,9 @@
 }
 
 int KyraEngine::cmd_printText(ScriptState *script) {
-	warning("STUB: cmd_printText");
+	debug(3, "cmd_printText(0x%X) ('%s', %d, %d, 0x%X, 0x%X)", script, stackPosString(0), stackPos(1), stackPos(2), stackPos(3), stackPos(4));
+	_screen->printText(stackPosString(0), stackPos(1), stackPos(2), stackPos(3), stackPos(4));
+	_screen->updateScreen();
 	return 0;
 }
 
@@ -1011,7 +1013,8 @@
 }
 
 int KyraEngine::cmd_getKey(ScriptState *script) {
-	warning("STUB: cmd_getKey");
+	debug(3, "cmd_getKey(0x%X) ()");
+	waitForEvent();
 	return 0;
 }
 
@@ -1145,12 +1148,32 @@
 }
 
 int KyraEngine::cmd_specialEventDisplayBrynnsNote(ScriptState *script) {
-	warning("STUB: cmd_specialEventDisplayBrynnsNote");
+	debug(3, "cmd_specialEventDisplayBrynnsNote(0x%X) ()", script);
+	_hidPage = (uint8*)malloc(320*200);
+	_screenPage = (uint8*)malloc(320*200);
+	assert(_hidPage && _screenPage);
+	_screen->hideMouse();
+	_screen->copyRegionToBuffer(0, 0, 0, 320, 200, _screenPage);
+	_screen->copyRegionToBuffer(2, 0, 0, 320, 200, _hidPage);
+	loadBitmap("NOTE.CPS", 3, 3, 0);
+	_screen->copyRegion(63, 8, 63, 8, 194, 128, 2, 0);
+	_screen->updateScreen();
+	_screen->showMouse();
+	_screen->setFont(Screen::FID_6_FNT);
 	return 0;
 }
 
 int KyraEngine::cmd_specialEventRemoveBrynnsNote(ScriptState *script) {
-	warning("STUB: cmd_specialEventRemoveBrynnsNote");
+	debug(3, "cmd_specialEventRemoveBrynnsNote(0x%X) ()", script);
+	_screen->hideMouse();
+	assert(_hidPage && _screenPage);
+	_screen->copyBlockToPage(0, 0, 0, 320, 200, _screenPage);
+	_screen->copyBlockToPage(2, 0, 0, 320, 200, _hidPage);
+	free(_screenPage);
+	free(_hidPage);
+	_screen->updateScreen();
+	_screen->showMouse();
+	_screen->setFont(Screen::FID_8_FNT);
 	return 0;
 }
 





More information about the Scummvm-git-logs mailing list