diff options
Diffstat (limited to 'engines')
-rw-r--r-- | engines/bladerunner/bladerunner.cpp | 22 | ||||
-rw-r--r-- | engines/bladerunner/debugger.cpp | 32 | ||||
-rw-r--r-- | engines/bladerunner/debugger.h | 2 |
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); |