[Scummvm-git-logs] scummvm master -> 5ba90c7bcbedd77394bdd8483e9e4ae801cc926f
bluegr
noreply at scummvm.org
Tue Apr 28 01:52:23 UTC 2026
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://api.github.com/repos/scummvm/scummvm .
Summary:
5ba90c7bcb NANCY: Read and handle the exit hotspot in the Lathe puzzle
Commit: 5ba90c7bcbedd77394bdd8483e9e4ae801cc926f
https://github.com/scummvm/scummvm/commit/5ba90c7bcbedd77394bdd8483e9e4ae801cc926f
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2026-04-28T04:51:52+03:00
Commit Message:
NANCY: Read and handle the exit hotspot in the Lathe puzzle
Fix bug #16713
Changed paths:
engines/nancy/action/puzzle/cuttingpuzzle.cpp
engines/nancy/action/puzzle/cuttingpuzzle.h
diff --git a/engines/nancy/action/puzzle/cuttingpuzzle.cpp b/engines/nancy/action/puzzle/cuttingpuzzle.cpp
index 8c41ab388a7..d415a629ea9 100644
--- a/engines/nancy/action/puzzle/cuttingpuzzle.cpp
+++ b/engines/nancy/action/puzzle/cuttingpuzzle.cpp
@@ -85,6 +85,7 @@ void CuttingPuzzle::readData(Common::SeekableReadStream &stream) {
stream.skip(2); // +0x534 skip
_cancelScene.readData(stream); // +0x536 (25 bytes)
+ readRect(stream, _exitHotspot);
}
void CuttingPuzzle::init() {
@@ -343,18 +344,20 @@ void CuttingPuzzle::handleInput(NancyInput &input) {
if (_state != kRun || _latheRunning)
return;
- // Right-click cancels the puzzle (no dedicated exit hotspot in the data).
- if (input.input & NancyInput::kRightMouseButtonUp) {
- _cancelled = true;
- _state = kActionTrigger;
- return;
- }
-
// Convert mouse position to viewport-local coordinates.
Common::Point localMouse = input.mousePos;
Common::Rect vpPos = NancySceneState.getViewport().getScreenPosition();
localMouse -= Common::Point(vpPos.left, vpPos.top);
+ if (!_exitHotspot.isEmpty() && _exitHotspot.contains(localMouse)) {
+ g_nancy->_cursor->setCursorType(CursorManager::kMoveBackward);
+ if (input.input & NancyInput::kLeftMouseButtonUp) {
+ _cancelled = true;
+ _state = kActionTrigger;
+ return;
+ }
+ }
+
// Lever: left half of the rect rotates the knob left (decrement depth),
// right half rotates right (increment depth).
if (_leverDest.contains(localMouse)) {
diff --git a/engines/nancy/action/puzzle/cuttingpuzzle.h b/engines/nancy/action/puzzle/cuttingpuzzle.h
index 541b230e6b9..95cded5c982 100644
--- a/engines/nancy/action/puzzle/cuttingpuzzle.h
+++ b/engines/nancy/action/puzzle/cuttingpuzzle.h
@@ -113,6 +113,7 @@ protected:
SceneChangeDescription _missingGogglesScene; // data+0x520 (20 bytes + 2-byte skip = 22 bytes total)
SceneChangeWithFlag _cancelScene; // data+0x536 (25 bytes)
+ Common::Rect _exitHotspot;
// ---- runtime state ----
More information about the Scummvm-git-logs
mailing list