aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorathrxx2013-04-22 00:57:38 +0200
committerathrxx2013-04-22 01:02:41 +0200
commit65caa0500ff6ef40825dcf178d721827cf702264 (patch)
tree8d57ec80521fdc5560faaeceef5bfd6260b952a5 /engines
parent419252dbd64fb6f1a07079384418778c6946242f (diff)
downloadscummvm-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')
-rw-r--r--engines/kyra/debugger.cpp45
-rw-r--r--engines/kyra/debugger.h2
2 files changed, 47 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
diff --git a/engines/kyra/debugger.h b/engines/kyra/debugger.h
index d741e195a7..14326708dc 100644
--- a/engines/kyra/debugger.h
+++ b/engines/kyra/debugger.h
@@ -122,6 +122,8 @@ protected:
bool cmd_importSaveFile(int argc, const char **argv);
bool cmd_saveOriginal(int argc, const char **argv);
bool cmd_listMonsters(int argc, const char **argv);
+ bool cmd_showPosition(int argc, const char **argv);
+ bool cmd_setPosition(int argc, const char **argv);
};
#endif // ENABLE_EOB