[Scummvm-cvs-logs] SF.net SVN: scummvm: [30351] scummvm/trunk/engines/agi

thebluegr at users.sourceforge.net thebluegr at users.sourceforge.net
Wed Jan 9 11:31:52 CET 2008


Revision: 30351
          http://scummvm.svn.sourceforge.net/scummvm/?rev=30351&view=rev
Author:   thebluegr
Date:     2008-01-09 02:31:52 -0800 (Wed, 09 Jan 2008)

Log Message:
-----------
Added a debug command, did some cleanup

Modified Paths:
--------------
    scummvm/trunk/engines/agi/console.cpp
    scummvm/trunk/engines/agi/console.h
    scummvm/trunk/engines/agi/preagi_mickey.cpp
    scummvm/trunk/engines/agi/preagi_mickey.h

Modified: scummvm/trunk/engines/agi/console.cpp
===================================================================
--- scummvm/trunk/engines/agi/console.cpp	2008-01-09 09:46:26 UTC (rev 30350)
+++ scummvm/trunk/engines/agi/console.cpp	2008-01-09 10:31:52 UTC (rev 30351)
@@ -251,6 +251,7 @@
 	_mickey = mickey;
 
 	DCmd_Register("curRoom",     WRAP_METHOD(Mickey_Console, Cmd_CurRoom));
+	DCmd_Register("gotoRoom",    WRAP_METHOD(Mickey_Console, Cmd_GotoRoom));
 	DCmd_Register("drawPic",     WRAP_METHOD(Mickey_Console, Cmd_DrawPic));
 	DCmd_Register("drawObj",     WRAP_METHOD(Mickey_Console, Cmd_DrawObj));
 }
@@ -260,6 +261,14 @@
 	return true;
 }
 
+bool Mickey_Console::Cmd_GotoRoom(int argc, const char **argv) {
+	if (argc != 2)
+		DebugPrintf("Usage: %s <Room number>\n", argv[0]);
+	else
+		_mickey->debugGotoRoom(atoi(argv[1]));
+	return true;
+}
+
 bool Mickey_Console::Cmd_DrawPic(int argc, const char **argv) {
 	if (argc != 2)
 		DebugPrintf("Usage: %s <Picture number>\n", argv[0]);

Modified: scummvm/trunk/engines/agi/console.h
===================================================================
--- scummvm/trunk/engines/agi/console.h	2008-01-09 09:46:26 UTC (rev 30350)
+++ scummvm/trunk/engines/agi/console.h	2008-01-09 10:31:52 UTC (rev 30351)
@@ -103,6 +103,7 @@
 	Mickey *_mickey;
 
 	bool Cmd_CurRoom(int argc, const char **argv);
+	bool Cmd_GotoRoom(int argc, const char **argv);
 	bool Cmd_DrawPic(int argc, const char **argv);
 	bool Cmd_DrawObj(int argc, const char **argv);
 };

Modified: scummvm/trunk/engines/agi/preagi_mickey.cpp
===================================================================
--- scummvm/trunk/engines/agi/preagi_mickey.cpp	2008-01-09 09:46:26 UTC (rev 30350)
+++ scummvm/trunk/engines/agi/preagi_mickey.cpp	2008-01-09 10:31:52 UTC (rev 30351)
@@ -220,6 +220,32 @@
 	free(buffer);
 }
 
+bool Mickey::checkMenu() {
+	char *buffer = new char[sizeof(MSA_MENU)];
+	MSA_MENU menu;
+	int iSel0, iSel1;
+	MSA_DAT_HEADER hdr;
+	char szFile[256] = {0};
+	Common::File infile;
+
+	getDatFileName(_game.iRoom, szFile);
+	readDatHdr(szFile, &hdr);
+	if (!infile.open(szFile))
+		return false;
+	infile.seek(hdr.ofsRoom[_game.iRoom - 1] + IDI_MSA_OFS_DAT, SEEK_SET);
+	infile.read((uint8 *)buffer, sizeof(MSA_MENU));
+	infile.close();
+
+	memcpy(&menu, buffer, sizeof(MSA_MENU));
+	patchMenu(&menu);
+	memcpy(buffer, &menu, sizeof(MSA_MENU));
+
+	getMenuSel(buffer, &iSel0, &iSel1);
+	delete [] buffer;
+
+	return parse(menu.cmd[iSel0].data[iSel1], menu.arg[iSel0].data[iSel1]);
+}
+
 void Mickey::drawMenu(MSA_MENU menu, int sel0, int sel1) {
 	int iWord;
 	int iRow;
@@ -2060,6 +2086,11 @@
 	}
 }
 
+void Mickey::debugGotoRoom(int room) {
+	_game.iRoom = room;
+	drawRoom();
+}
+
 Mickey::Mickey(PreAgiEngine *vm) : _vm(vm) {
 	_vm->_console = new Mickey_Console(_vm, this);
 }
@@ -2119,13 +2150,7 @@
 }
 
 void Mickey::run() {
-	char *buffer = new char[sizeof(MSA_MENU)];
-	MSA_MENU menu;
-	int iSel0, iSel1;
 	bool done;
-	MSA_DAT_HEADER hdr;
-	char szFile[256] = {0};
-	Common::File infile;
 
 	// Game intro
 	intro();
@@ -2165,28 +2190,12 @@
 				_game.nAir = IDI_MSA_MAX_AIR_SUPPLY;
 			}
 
-			// Read menu
-			getDatFileName(_game.iRoom, szFile);
-			readDatHdr(szFile, &hdr);
-			if (!infile.open(szFile))
-				return;
-			infile.seek(hdr.ofsRoom[_game.iRoom - 1] + IDI_MSA_OFS_DAT, SEEK_SET);
-			infile.read((uint8 *)buffer, sizeof(MSA_MENU));
-			infile.close();
-
-			memcpy(&menu, buffer, sizeof(MSA_MENU));
-			patchMenu(&menu);
-			memcpy(buffer, &menu, sizeof(MSA_MENU));
-
-			getMenuSel(buffer, &iSel0, &iSel1);
-			done = parse(menu.cmd[iSel0].data[iSel1], menu.arg[iSel0].data[iSel1]);
+			done = checkMenu();
 		}
 
 		_game.nFrame = 0;
 	}
 
-	delete [] buffer;
-
 	gameOver();
 }
 

Modified: scummvm/trunk/engines/agi/preagi_mickey.h
===================================================================
--- scummvm/trunk/engines/agi/preagi_mickey.h	2008-01-09 09:46:26 UTC (rev 30350)
+++ scummvm/trunk/engines/agi/preagi_mickey.h	2008-01-09 10:31:52 UTC (rev 30351)
@@ -737,6 +737,7 @@
 	void run();
 
 	void debugCurRoom();
+	void debugGotoRoom(int);
 	void drawPic(int);
 	void drawObj(ENUM_MSA_OBJECT, int, int);
 
@@ -757,6 +758,7 @@
 	void printExeStr(int);
 	void printExeMsg(int);
 	void printDesc(int);
+	bool checkMenu();
 	void drawMenu(MSA_MENU, int, int);
 	void getMouseMenuSelRow(MSA_MENU, int*, int*, int, int, int);
 	bool getMenuSelRow(MSA_MENU, int*, int*, int);


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list