From 9eb7af0f671d6b172c838666f423a3be5eaeae09 Mon Sep 17 00:00:00 2001 From: Walter van Niftrik Date: Fri, 1 Apr 2016 14:53:14 +0200 Subject: ADL: Add 'room' debugger command --- engines/adl/console.cpp | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) (limited to 'engines/adl/console.cpp') 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 []\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; -- cgit v1.2.3