aboutsummaryrefslogtreecommitdiff
path: root/engines/bladerunner/debugger.cpp
diff options
context:
space:
mode:
authorPeter Kohaut2019-01-13 00:30:16 +0100
committerPeter Kohaut2019-01-13 00:30:52 +0100
commit6f478f4c810a0a2252e791aed349dcc8c5929ef4 (patch)
treed37d2bacfb7964092971e4cc0de25e9667eef753 /engines/bladerunner/debugger.cpp
parent62541cec061935ed098792b990bd177a4a2b86eb (diff)
downloadscummvm-rg350-6f478f4c810a0a2252e791aed349dcc8c5929ef4.tar.gz
scummvm-rg350-6f478f4c810a0a2252e791aed349dcc8c5929ef4.tar.bz2
scummvm-rg350-6f478f4c810a0a2252e791aed349dcc8c5929ef4.zip
BLADERUNNER: Merged chapter & scene debugger command
Diffstat (limited to 'engines/bladerunner/debugger.cpp')
-rw-r--r--engines/bladerunner/debugger.cpp63
1 files changed, 32 insertions, 31 deletions
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 <chapter>\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 <actorId> [(<setId> <x> <y> <z> <facing>)|<otherActorId>]\n", argv[0]);
+ debugPrintf("Usage: %s <actorId> [(<setId> <x> <y> <z> <facing>) | <otherActorId>]\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 [<setId> <sceneId>] | [[<chapterId>] <sceneName>]\n", argv[0]);
+ debugPrintf("Usage: %s [(<chapterId> <setId> <sceneId>) | (<chapterId> <sceneName>) | <sceneName>]\n", argv[0]);
return true;
}
- // scene <setId> <sceneId>
- if (argc == 3 && Common::isDigit(*argv[1]) && Common::isDigit(*argv[2])) {
- int setId = atoi(argv[1]);
- int sceneId = atoi(argv[2]);
+ // scene <chapterId> <setId> <sceneId>
+ 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;
}