diff options
author | athrxx | 2013-04-22 00:57:38 +0200 |
---|---|---|
committer | athrxx | 2013-04-22 01:02:41 +0200 |
commit | 65caa0500ff6ef40825dcf178d721827cf702264 (patch) | |
tree | 8d57ec80521fdc5560faaeceef5bfd6260b952a5 /engines/kyra/debugger.cpp | |
parent | 419252dbd64fb6f1a07079384418778c6946242f (diff) | |
download | scummvm-rg350-65caa0500ff6ef40825dcf178d721827cf702264.tar.gz scummvm-rg350-65caa0500ff6ef40825dcf178d721827cf702264.tar.bz2 scummvm-rg350-65caa0500ff6ef40825dcf178d721827cf702264.zip |
KYRA: (EOB) - add some debugger functions
(show_position, set_position)
Diffstat (limited to 'engines/kyra/debugger.cpp')
-rw-r--r-- | engines/kyra/debugger.cpp | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/engines/kyra/debugger.cpp b/engines/kyra/debugger.cpp index 084c436831..0a9ec25b8e 100644 --- a/engines/kyra/debugger.cpp +++ b/engines/kyra/debugger.cpp @@ -485,6 +485,9 @@ void Debugger_EoB::initialize() { DCmd_Register("import_savefile", WRAP_METHOD(Debugger_EoB, cmd_importSaveFile)); DCmd_Register("save_original", WRAP_METHOD(Debugger_EoB, cmd_saveOriginal)); DCmd_Register("list_monsters", WRAP_METHOD(Debugger_EoB, cmd_listMonsters)); + DCmd_Register("show_position", WRAP_METHOD(Debugger_EoB, cmd_showPosition)); + DCmd_Register("set_position", WRAP_METHOD(Debugger_EoB, cmd_setPosition)); + } bool Debugger_EoB::cmd_importSaveFile(int argc, const char **argv) { @@ -573,6 +576,48 @@ bool Debugger_EoB::cmd_listMonsters(int, const char **) { return true; } +bool Debugger_EoB::cmd_showPosition(int, const char **) { + DebugPrintf("\nCurrent level: %d\nCurrent Sub Level: %d\nCurrent block: %d\nCurrent direction: %d\n\n", _vm->_currentLevel, _vm->_currentSub, _vm->_currentBlock, _vm->_currentDirection); + return true; +} + +bool Debugger_EoB::cmd_setPosition(int argc, const char **argv) { + if (argc == 4) { + _vm->_currentBlock = atoi(argv[3]); + int sub = atoi(argv[2]); + int level = atoi(argv[1]); + + int maxLevel = (_vm->game() == GI_EOB1) ? 12 : 16; + if (level < 1 || level > maxLevel) { + DebugPrintf("<level> must be a value from 1 to %d.\n\n", maxLevel); + return true; + } + + if (level != _vm->_currentLevel || sub != _vm->_currentSub) { + _vm->completeDoorOperations(); + _vm->generateTempData(); + _vm->txt()->removePageBreakFlag(); + _vm->screen()->setScreenDim(7); + + _vm->loadLevel(level, sub); + + if (_vm->_dialogueField) + _vm->restoreAfterDialogueSequence(); + } + + _vm->moveParty(_vm->_currentBlock); + + _vm->_sceneUpdateRequired = true; + _vm->gui_drawAllCharPortraitsWithStats(); + DebugPrintf("Success.\n\n"); + + } else { + DebugPrintf("Syntax: set_position <level>, <sub level>, <block>\n"); + DebugPrintf(" (Warning: The sub level and block position parameters will not be checked. Invalid parameters may cause problems.)\n\n"); + } + return true; +} + #endif // ENABLE_EOB } // End of namespace Kyra |