[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