aboutsummaryrefslogtreecommitdiff
path: root/engines/adl/console.cpp
diff options
context:
space:
mode:
authorWalter van Niftrik2016-04-01 14:53:14 +0200
committerWalter van Niftrik2016-06-06 20:35:49 +0200
commit9eb7af0f671d6b172c838666f423a3be5eaeae09 (patch)
treef8fac7ce3c90923ddcc1eeb5a84cac9f52942b41 /engines/adl/console.cpp
parent26b8e8d66a0039281ec3b8fe8d2f29efed37fda2 (diff)
downloadscummvm-rg350-9eb7af0f671d6b172c838666f423a3be5eaeae09.tar.gz
scummvm-rg350-9eb7af0f671d6b172c838666f423a3be5eaeae09.tar.bz2
scummvm-rg350-9eb7af0f671d6b172c838666f423a3be5eaeae09.zip
ADL: Add 'room' debugger command
Diffstat (limited to 'engines/adl/console.cpp')
-rw-r--r--engines/adl/console.cpp34
1 files changed, 34 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;