From a8dd2defaa3a6680102e230d091d705d54f87d7e Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Wed, 20 Aug 2014 20:27:52 -0400 Subject: ACCESS: Added scene debugger command --- engines/access/debugger.cpp | 36 ++++++++++++++++++++++++++++++++++++ engines/access/debugger.h | 1 + 2 files changed, 37 insertions(+) (limited to 'engines') diff --git a/engines/access/debugger.cpp b/engines/access/debugger.cpp index e92e3402ac..d20b5d3e6b 100644 --- a/engines/access/debugger.cpp +++ b/engines/access/debugger.cpp @@ -28,6 +28,42 @@ namespace Access { Debugger::Debugger(AccessEngine *vm) : GUI::Debugger(), _vm(vm) { registerCmd("continue", WRAP_METHOD(Debugger, cmdExit)); + registerCmd("scene", WRAP_METHOD(Debugger, Cmd_LoadScene)); +} + +static int strToInt(const char *s) { + if (!*s) + // No string at all + return 0; + else if (toupper(s[strlen(s) - 1]) != 'H') + // Standard decimal string + return atoi(s); + + // Hexadecimal string + uint tmp = 0; + int read = sscanf(s, "%xh", &tmp); + if (read < 1) + error("strToInt failed on string \"%s\"", s); + return (int)tmp; +} + +bool Debugger::Cmd_LoadScene(int argc, const char **argv) { + if (argc != 2) { + debugPrintf("Current scene is: %d\n", _vm->_player->_roomNumber); + debugPrintf("Usage: %s \n", argv[0]); + return true; + } + else { + _vm->_player->_roomNumber = strToInt(argv[1]); + + _vm->_room->_function = FN_CLEAR1; + _vm->freeChar(); + _vm->_converseMode = 0; + _vm->_scripts->_endFlag = true; + _vm->_scripts->_returnCode = 0; + + return false; + } } } // End of namespace Access diff --git a/engines/access/debugger.h b/engines/access/debugger.h index dcf49c4ecd..6c8424dac4 100644 --- a/engines/access/debugger.h +++ b/engines/access/debugger.h @@ -34,6 +34,7 @@ class Debugger : public GUI::Debugger { private: AccessEngine *_vm; protected: + bool Cmd_LoadScene(int argc, const char **argv); public: public: Debugger(AccessEngine *vm); -- cgit v1.2.3