diff options
author | Walter van Niftrik | 2016-04-01 14:53:14 +0200 |
---|---|---|
committer | Walter van Niftrik | 2016-06-06 20:35:49 +0200 |
commit | 9eb7af0f671d6b172c838666f423a3be5eaeae09 (patch) | |
tree | f8fac7ce3c90923ddcc1eeb5a84cac9f52942b41 | |
parent | 26b8e8d66a0039281ec3b8fe8d2f29efed37fda2 (diff) | |
download | scummvm-rg350-9eb7af0f671d6b172c838666f423a3be5eaeae09.tar.gz scummvm-rg350-9eb7af0f671d6b172c838666f423a3be5eaeae09.tar.bz2 scummvm-rg350-9eb7af0f671d6b172c838666f423a3be5eaeae09.zip |
ADL: Add 'room' debugger command
-rw-r--r-- | engines/adl/console.cpp | 34 | ||||
-rw-r--r-- | engines/adl/console.h | 1 |
2 files changed, 35 insertions, 0 deletions
diff --git a/engines/adl/console.cpp b/engines/adl/console.cpp index 9653466c2f..e1625979c5 100644 --- a/engines/adl/console.cpp +++ b/engines/adl/console.cpp @@ -23,6 +23,7 @@ #include "common/debug-channels.h" #include "adl/console.h" +#include "adl/display.h" #include "adl/adl.h" namespace Adl { @@ -34,6 +35,7 @@ Console::Console(AdlEngine *engine) : GUI::Debugger() { registerCmd("verbs", WRAP_METHOD(Console, Cmd_Verbs)); registerCmd("dump_scripts", WRAP_METHOD(Console, Cmd_DumpScripts)); registerCmd("valid_cmds", WRAP_METHOD(Console, Cmd_ValidCommands)); + registerCmd("room", WRAP_METHOD(Console, Cmd_Room)); } Common::String Console::toAscii(const Common::String &str) { @@ -129,6 +131,38 @@ bool Console::Cmd_DumpScripts(int argc, const char **argv) { return true; } +bool Console::Cmd_Room(int argc, const char **argv) { + if (argc > 2) { + debugPrintf("Usage: %s [<new_room>]\n", argv[0]); + return true; + } + + if (argc == 2) { + if (!_engine->_canRestoreNow) { + debugPrintf("Cannot change rooms right now\n"); + return true; + } + + int roomCount = _engine->_state.rooms.size(); + int room = strtoul(argv[1], NULL, 0); + if (room < 1 || room > roomCount) { + debugPrintf("Room %i out of valid range [1, %d]\n", room, roomCount); + return true; + } + + _engine->_state.room = room; + _engine->clearScreen(); + _engine->loadRoom(_engine->_state.room); + _engine->showRoom(); + _engine->_display->updateTextScreen(); + _engine->_display->updateHiResScreen(); + } + + debugPrintf("Current room: %d\n", _engine->_state.room); + + return true; +} + void Console::printWordMap(const WordMap &wordMap) { Common::StringArray words; WordMap::const_iterator verb; diff --git a/engines/adl/console.h b/engines/adl/console.h index bfe09a1303..8af23b9694 100644 --- a/engines/adl/console.h +++ b/engines/adl/console.h @@ -46,6 +46,7 @@ private: bool Cmd_Verbs(int argc, const char **argv); bool Cmd_DumpScripts(int argc, const char **argv); bool Cmd_ValidCommands(int argc, const char **argv); + bool Cmd_Room(int argc, const char **argv); void printWordMap(const Common::HashMap<Common::String, uint> &wordMap); |