aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorThanasis Antoniou2019-05-27 14:16:03 +0300
committerThanasis Antoniou2019-05-29 12:08:24 +0300
commita041a291112433d014551c409cc48c629a077a09 (patch)
treec915137dd41254dc00dddcab2b0c74f78633e4bb /engines
parent8999b95053c6a22d4b4d639c584f1ad7513a5785 (diff)
downloadscummvm-rg350-a041a291112433d014551c409cc48c629a077a09.tar.gz
scummvm-rg350-a041a291112433d014551c409cc48c629a077a09.tar.bz2
scummvm-rg350-a041a291112433d014551c409cc48c629a077a09.zip
BLADERUNNER: Added click debugger command
Shows mouse click pos (x,y,z) and detected clickable region/actor/item/object id underneath
Diffstat (limited to 'engines')
-rw-r--r--engines/bladerunner/bladerunner.cpp22
-rw-r--r--engines/bladerunner/debugger.cpp32
-rw-r--r--engines/bladerunner/debugger.h2
3 files changed, 55 insertions, 1 deletions
diff --git a/engines/bladerunner/bladerunner.cpp b/engines/bladerunner/bladerunner.cpp
index ec0017e413..6fc8dda67c 100644
--- a/engines/bladerunner/bladerunner.cpp
+++ b/engines/bladerunner/bladerunner.cpp
@@ -1358,6 +1358,26 @@ void BladeRunnerEngine::handleMouseAction(int x, int y, bool mainButton, bool bu
int exitIndex = _scene->_exits->getRegionAtXY(x, y);
int regionIndex = _scene->_regions->getRegionAtXY(x, y);
+ if (_debugger->_showMouseClickInfo) {
+ // Region has highest priority when overlapping
+ debug("Mouse: %02.2f, %02.2f, %02.2f", scenePosition.x, scenePosition.y, scenePosition.z);
+ if ((sceneObjectId < kSceneObjectOffsetActors || sceneObjectId >= kSceneObjectOffsetItems) && exitIndex >= 0) {
+ debug("Clicked on Region-Exit=%d", exitIndex);
+ } else if (regionIndex >= 0) {
+ debug("Clicked on Region-Regular=%d", regionIndex);
+ }
+ // In debug mode we're interested in *all* object/actors/items under mouse click
+ if (sceneObjectId >= kSceneObjectOffsetActors && sceneObjectId < kSceneObjectOffsetItems) {
+ debug("Clicked on Actor: %d", sceneObjectId - kSceneObjectOffsetActors);
+ }
+ if (sceneObjectId >= kSceneObjectOffsetItems && sceneObjectId < kSceneObjectOffsetObjects) {
+ debug("Clicked on Item: %d", sceneObjectId - kSceneObjectOffsetItems);
+ }
+ if (sceneObjectId >= kSceneObjectOffsetObjects && sceneObjectId <= (95 + kSceneObjectOffsetObjects) ) {
+ debug("Clicked on Object: %d", sceneObjectId - kSceneObjectOffsetObjects);
+ }
+ }
+
if ((sceneObjectId < kSceneObjectOffsetActors || sceneObjectId >= kSceneObjectOffsetItems) && exitIndex >= 0) {
handleMouseClickExit(exitIndex, x, y, buttonDown);
} else if (regionIndex >= 0) {
@@ -1368,7 +1388,7 @@ void BladeRunnerEngine::handleMouseAction(int x, int y, bool mainButton, bool bu
handleMouseClickActor(sceneObjectId - kSceneObjectOffsetActors, mainButton, buttonDown, scenePosition, x, y);
} else if (sceneObjectId >= kSceneObjectOffsetItems && sceneObjectId < kSceneObjectOffsetObjects) {
handleMouseClickItem(sceneObjectId - kSceneObjectOffsetItems, buttonDown);
- } else if (sceneObjectId >= kSceneObjectOffsetObjects && sceneObjectId <= 293) {
+ } else if (sceneObjectId >= kSceneObjectOffsetObjects && sceneObjectId <= (95 + kSceneObjectOffsetObjects)) {
handleMouseClick3DObject(sceneObjectId - kSceneObjectOffsetObjects, buttonDown, isClickable, isTarget);
}
} else if (buttonDown) {
diff --git a/engines/bladerunner/debugger.cpp b/engines/bladerunner/debugger.cpp
index 593ecff9b3..633df5eff5 100644
--- a/engines/bladerunner/debugger.cpp
+++ b/engines/bladerunner/debugger.cpp
@@ -107,6 +107,7 @@ Debugger::Debugger(BladeRunnerEngine *vm) : GUI::Debugger() {
_playFullVk = false;
_showStatsVk = false;
_showMazeScore = false;
+ _showMouseClickInfo = false;
registerCmd("anim", WRAP_METHOD(Debugger, cmdAnimation));
registerCmd("health", WRAP_METHOD(Debugger, cmdHealth));
@@ -131,6 +132,7 @@ Debugger::Debugger(BladeRunnerEngine *vm) : GUI::Debugger() {
registerCmd("object", WRAP_METHOD(Debugger, cmdObject));
registerCmd("item", WRAP_METHOD(Debugger, cmdItem));
registerCmd("region", WRAP_METHOD(Debugger, cmdRegion));
+ registerCmd("click", WRAP_METHOD(Debugger, cmdClick));
#if BLADERUNNER_ORIGINAL_BUGS
#else
registerCmd("effect", WRAP_METHOD(Debugger, cmdEffect));
@@ -1735,6 +1737,36 @@ bool Debugger::cmdRegion(int argc, const char **argv) {
return true;
}
+/**
+* Toggle showing mouse click info in the text console (not the debugger window)
+*/
+bool Debugger::cmdClick(int argc, const char **argv) {
+ bool invalidSyntax = false;
+
+ if (argc != 2) {
+ invalidSyntax = true;
+ } else {
+ //
+ // set a debug variable to enable showing the mouse click info
+ //
+ Common::String argName = argv[1];
+ argName.toLowercase();
+ if (argc == 2 && argName == "toggle") {
+ _showMouseClickInfo = !_showMouseClickInfo;
+ debugPrintf("Showing mouse click info = %s\n", _showMouseClickInfo ? "True":"False");
+ return false; // close the debugger console
+ } else {
+ invalidSyntax = true;
+ }
+ }
+
+ if (invalidSyntax) {
+ debugPrintf("Toggle showing mouse info (on mouse click) in the text console\n");
+ debugPrintf("Usage: %s toggle\n", argv[0]);
+ }
+ return true;
+}
+
#if BLADERUNNER_ORIGINAL_BUGS
#else
bool Debugger::cmdEffect(int argc, const char **argv) {
diff --git a/engines/bladerunner/debugger.h b/engines/bladerunner/debugger.h
index a1737de007..414e0ee7de 100644
--- a/engines/bladerunner/debugger.h
+++ b/engines/bladerunner/debugger.h
@@ -85,6 +85,7 @@ public:
bool _playFullVk;
bool _showStatsVk;
bool _showMazeScore;
+ bool _showMouseClickInfo;
Debugger(BladeRunnerEngine *vm);
~Debugger();
@@ -111,6 +112,7 @@ public:
bool cmdObject(int argc, const char **argv);
bool cmdItem(int argc, const char **argv);
bool cmdRegion(int argc, const char **argv);
+ bool cmdClick(int argc, const char **argv);
#if BLADERUNNER_ORIGINAL_BUGS
#else
bool cmdEffect(int argc, const char **argv);