From 6f478f4c810a0a2252e791aed349dcc8c5929ef4 Mon Sep 17 00:00:00 2001 From: Peter Kohaut Date: Sun, 13 Jan 2019 00:30:16 +0100 Subject: BLADERUNNER: Merged chapter & scene debugger command --- engines/bladerunner/debugger.cpp | 63 ++++++++++++++++++++-------------------- 1 file changed, 32 insertions(+), 31 deletions(-) (limited to 'engines/bladerunner/debugger.cpp') diff --git a/engines/bladerunner/debugger.cpp b/engines/bladerunner/debugger.cpp index 9863dd9aee..57b49b0f19 100644 --- a/engines/bladerunner/debugger.cpp +++ b/engines/bladerunner/debugger.cpp @@ -63,7 +63,6 @@ Debugger::Debugger(BladeRunnerEngine *vm) : GUI::Debugger() { _viewZBuffer = false; registerCmd("anim", WRAP_METHOD(Debugger, cmdAnimation)); - registerCmd("chapter", WRAP_METHOD(Debugger, cmdChapter)); registerCmd("draw", WRAP_METHOD(Debugger, cmdDraw)); registerCmd("flag", WRAP_METHOD(Debugger, cmdFlag)); registerCmd("goal", WRAP_METHOD(Debugger, cmdGoal)); @@ -145,23 +144,6 @@ bool Debugger::cmdDraw(int argc, const char **argv) { return true; } -bool Debugger::cmdChapter(int argc, const char **argv) { - if (argc != 2) { - debugPrintf("Changes chapter of the game without changing scene.\n"); - debugPrintf("Usage: %s \n", argv[0]); - return true; - } - - int chapter = atoi(argv[1]); - if (chapter >= 1 && chapter <= 5) { - _vm->_settings->setChapter(chapter); - } else { - debugPrintf("Chapter must be between 1 and 5\n"); - } - - return true; -} - bool Debugger::cmdFlag(int argc, const char **argv) { if (argc != 2 && argc != 3) { debugPrintf("Get or set game flag (boolean value).\n"); @@ -247,7 +229,7 @@ bool Debugger::cmdLoop(int argc, const char **argv) { bool Debugger::cmdPosition(int argc, const char **argv) { if (argc != 2 && argc != 3 && argc != 7) { debugPrintf("Get or set position of the actor.\n"); - debugPrintf("Usage: %s [( )|]\n", argv[0]); + debugPrintf("Usage: %s [( ) | ]\n", argv[0]); return true; } @@ -389,29 +371,48 @@ const struct SceneList { }; bool Debugger::cmdScene(int argc, const char **argv) { - if (argc != 0 && argc > 3) { + if (argc != 0 && argc > 4) { debugPrintf("Changes set and scene.\n"); - debugPrintf("Usage: %s [ ] | [[] ]\n", argv[0]); + debugPrintf("Usage: %s [( ) | ( ) | ]\n", argv[0]); return true; } - // scene - if (argc == 3 && Common::isDigit(*argv[1]) && Common::isDigit(*argv[2])) { - int setId = atoi(argv[1]); - int sceneId = atoi(argv[2]); + // scene + if (argc == 4 && Common::isDigit(*argv[1]) && Common::isDigit(*argv[2]) && Common::isDigit(*argv[3])) { + int chapterId = atoi(argv[1]); + int setId = atoi(argv[2]); + int sceneId = atoi(argv[3]); + + if (chapterId < 1 || chapterId > 5) { + debugPrintf("chapterID must be between 1 and 5\n"); + return true; + } + + int chapterIdNormalized = chapterId; + + if (chapterId == 3 || chapterId == 5) { + chapterIdNormalized = chapterId - 1; + } + // Sanity check uint i; for (i = 0; sceneList[i].chapter != 0; i++) { - if (sceneList[i].chapter == _vm->_settings->getChapter() && sceneList[i].set == setId - && sceneList[i].scene == sceneId) + if (sceneList[i].chapter == chapterIdNormalized && + sceneList[i].set == setId && + sceneList[i].scene == sceneId + ) { break; + } } - if (sceneList[i].chapter == 0) { // end of list - debugPrintf("Scene does not exist in this chapter.\n"); + if (sceneList[i].chapter == 0) { // end of list + debugPrintf("chapterId, setId and sceneId combination is not valid.\n"); return true; } + if (chapterId != _vm->_settings->getChapter()) { + _vm->_settings->setChapter(chapterId); + } _vm->_settings->setNewSetAndScene(setId, sceneId); return false; } else if (argc > 1) { @@ -423,7 +424,7 @@ bool Debugger::cmdScene(int argc, const char **argv) { chapterId = atoi(argv[1]); if (chapterId < 1 || chapterId > 5) { - debugPrintf("Chapter must be between 1 and 5\n"); + debugPrintf("chapterId must be between 1 and 5\n"); return true; } @@ -464,7 +465,7 @@ bool Debugger::cmdScene(int argc, const char **argv) { break; } - debugPrintf("chapter = %i\nset = %i\nscene = %i '%s'\n", _vm->_settings->getChapter(), _vm->_scene->getSetId(), + debugPrintf("chapterID = %i\nsetId = %i\nsceneId = %i\nsceneName = '%s'\n", _vm->_settings->getChapter(), _vm->_scene->getSetId(), _vm->_scene->getSceneId(), sceneList[i].name); return true; } -- cgit v1.2.3