diff options
author | Filippos Karapetis | 2008-01-09 10:31:52 +0000 |
---|---|---|
committer | Filippos Karapetis | 2008-01-09 10:31:52 +0000 |
commit | 85b3a4a59e1ddc6da55bdcf8212e6bfac391af6d (patch) | |
tree | 3c53d194854e6bc165379b2d1d0d295f452fc9e0 /engines/agi | |
parent | b0f2e823e0672fbc44350376911d346d86de4106 (diff) | |
download | scummvm-rg350-85b3a4a59e1ddc6da55bdcf8212e6bfac391af6d.tar.gz scummvm-rg350-85b3a4a59e1ddc6da55bdcf8212e6bfac391af6d.tar.bz2 scummvm-rg350-85b3a4a59e1ddc6da55bdcf8212e6bfac391af6d.zip |
Added a debug command, did some cleanup
svn-id: r30351
Diffstat (limited to 'engines/agi')
-rw-r--r-- | engines/agi/console.cpp | 9 | ||||
-rw-r--r-- | engines/agi/console.h | 1 | ||||
-rw-r--r-- | engines/agi/preagi_mickey.cpp | 55 | ||||
-rw-r--r-- | engines/agi/preagi_mickey.h | 2 |
4 files changed, 44 insertions, 23 deletions
diff --git a/engines/agi/console.cpp b/engines/agi/console.cpp index 538cd8c4ea..6548772f51 100644 --- a/engines/agi/console.cpp +++ b/engines/agi/console.cpp @@ -251,6 +251,7 @@ Mickey_Console::Mickey_Console(PreAgiEngine *vm, Mickey *mickey) : PreAGI_Consol _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 @@ bool Mickey_Console::Cmd_CurRoom(int argc, const char **argv) { 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]); diff --git a/engines/agi/console.h b/engines/agi/console.h index 54ea898e37..c435a70188 100644 --- a/engines/agi/console.h +++ b/engines/agi/console.h @@ -103,6 +103,7 @@ private: 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); }; diff --git a/engines/agi/preagi_mickey.cpp b/engines/agi/preagi_mickey.cpp index d3ef2b90c5..9ddf664e78 100644 --- a/engines/agi/preagi_mickey.cpp +++ b/engines/agi/preagi_mickey.cpp @@ -220,6 +220,32 @@ void Mickey::printDesc(int iRoom) { 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::debugCurRoom() { } } +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::init() { } 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 @@ void Mickey::run() { _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(); } diff --git a/engines/agi/preagi_mickey.h b/engines/agi/preagi_mickey.h index de01d11f4c..350456b982 100644 --- a/engines/agi/preagi_mickey.h +++ b/engines/agi/preagi_mickey.h @@ -737,6 +737,7 @@ public: void run(); void debugCurRoom(); + void debugGotoRoom(int); void drawPic(int); void drawObj(ENUM_MSA_OBJECT, int, int); @@ -757,6 +758,7 @@ protected: 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); |