[Scummvm-git-logs] scummvm master -> e75be91f414fb691f2611fb6db99f005e170f6fd

bluegr noreply at scummvm.org
Thu Apr 9 06:38:28 UTC 2026


This automated email contains information about 2 new commits which have been
pushed to the 'scummvm' repo located at https://api.github.com/repos/scummvm/scummvm .

Summary:
31591e5a1b NANCY: Start mapping new cursors for Nancy10+
e75be91f41 NANCY: Map more scene movement AR actions for Nancy10+


Commit: 31591e5a1b53cb437329f87a40fc6ded6e2beaf9
    https://github.com/scummvm/scummvm/commit/31591e5a1b53cb437329f87a40fc6ded6e2beaf9
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2026-04-09T09:37:12+03:00

Commit Message:
NANCY: Start mapping new cursors for Nancy10+

Still not right, but noticeably better

Changed paths:
    engines/nancy/cursor.cpp
    engines/nancy/cursor.h


diff --git a/engines/nancy/cursor.cpp b/engines/nancy/cursor.cpp
index 99891744485..263832ef519 100644
--- a/engines/nancy/cursor.cpp
+++ b/engines/nancy/cursor.cpp
@@ -135,21 +135,15 @@ void CursorManager::setCursor(CursorType type, int16 itemID) {
 	// value of the CursorType enum.
 	switch (type) {
 	case kNormalArrow:
-		if (gameType >= kGameTypeNancy10)
-			_curCursorID = 8;
-		else
-			_curCursorID = _numCursorTypes;
+		_curCursorID = (gameType >= kGameTypeNancy10) ? kNewNormalArrow: _numCursorTypes;
 		return;
 	case kHotspotArrow:
-		if (gameType >= kGameTypeNancy10)
-			_curCursorID = 9;
-		else
-			_curCursorID = _numCursorTypes + 1;
+		_curCursorID = (gameType >= kGameTypeNancy10) ? kNewHotspotArrow : _numCursorTypes + 1;
 		return;
 	case kInvertedRotateLeft:
 		// Only valid for nancy6 and up
 		if (gameType >= kGameTypeNancy6) {
-			_curCursorID = kInvertedRotateLeft;
+			_curCursorID = (gameType >= kGameTypeNancy10) ? kNewInvertedRotateLeft : kInvertedRotateLeft;
 			return;
 		}
 
@@ -157,7 +151,7 @@ void CursorManager::setCursor(CursorType type, int16 itemID) {
 	case kRotateLeft:
 		// Only valid for nancy6 and up
 		if (gameType >= kGameTypeNancy6) {
-			_curCursorID = kRotateLeft;
+			_curCursorID = (gameType >= kGameTypeNancy10) ? kNewRotateLeft : kRotateLeft;
 			return;
 		}
 
@@ -165,7 +159,7 @@ void CursorManager::setCursor(CursorType type, int16 itemID) {
 	case kMoveLeft:
 		// Only valid for nancy3 and up
 		if (gameType >= kGameTypeNancy3) {
-			_curCursorID = kMoveLeft;
+			_curCursorID = (gameType >= kGameTypeNancy10) ? kNewMoveLeft : kMoveLeft;
 			return;
 		} else {
 			type = kMove;
@@ -175,7 +169,7 @@ void CursorManager::setCursor(CursorType type, int16 itemID) {
 	case kInvertedRotateRight:
 		// Only valid for nancy6 and up
 		if (gameType >= kGameTypeNancy6) {
-			_curCursorID = kInvertedRotateRight;
+			_curCursorID = (gameType >= kGameTypeNancy10) ? kNewInvertedRotateRight : kInvertedRotateRight;
 			return;
 		}
 
@@ -183,7 +177,7 @@ void CursorManager::setCursor(CursorType type, int16 itemID) {
 	case kRotateRight:
 		// Only valid for nancy6 and up
 		if (gameType >= kGameTypeNancy6) {
-			_curCursorID = kRotateRight;
+			_curCursorID = (gameType >= kGameTypeNancy10) ? kNewRotateRight : kRotateRight;
 			return;
 		}
 
@@ -191,7 +185,7 @@ void CursorManager::setCursor(CursorType type, int16 itemID) {
 	case kMoveRight:
 		// Only valid for nancy3 and up
 		if (gameType >= kGameTypeNancy3) {
-			_curCursorID = kMoveRight;
+			_curCursorID = (gameType >= kGameTypeNancy10) ? kNewMoveRight : kMoveRight;
 			return;
 		} else {
 			type = kMove;
@@ -201,7 +195,7 @@ void CursorManager::setCursor(CursorType type, int16 itemID) {
 	case kMoveUp:
 		// Only valid for nancy4 and up
 		if (gameType >= kGameTypeNancy4) {
-			_curCursorID = kMoveUp;
+			_curCursorID = (gameType >= kGameTypeNancy10) ? kNewMoveUp : kMoveUp;
 			return;
 		} else {
 			type = kMove;
@@ -211,7 +205,7 @@ void CursorManager::setCursor(CursorType type, int16 itemID) {
 	case kMoveDown:
 		// Only valid for nancy4 and up
 		if (gameType >= kGameTypeNancy4) {
-			_curCursorID = kMoveDown;
+			_curCursorID = (gameType >= kGameTypeNancy10) ? kNewMoveDown : kMoveDown;
 			return;
 		} else {
 			type = kMove;
@@ -221,7 +215,7 @@ void CursorManager::setCursor(CursorType type, int16 itemID) {
 	case kMoveForward:
 		// Only valid for nancy4 and up
 		if (gameType >= kGameTypeNancy4) {
-			_curCursorID = kMoveForward;
+			_curCursorID = (gameType >= kGameTypeNancy10) ? kNewMoveForward : kMoveForward;
 			return;
 		} else {
 			type = kHotspot;
@@ -231,7 +225,7 @@ void CursorManager::setCursor(CursorType type, int16 itemID) {
 	case kMoveBackward:
 		// Only valid for nancy4 and up
 		if (gameType >= kGameTypeNancy4) {
-			_curCursorID = kMoveBackward;
+			_curCursorID = (gameType >= kGameTypeNancy10) ? kNewMoveBackward : kMoveBackward;
 			return;
 		} else {
 			type = kHotspot;
@@ -241,16 +235,16 @@ void CursorManager::setCursor(CursorType type, int16 itemID) {
 	case kExit:
 		// Not valid in TVD
 		if (gameType != kGameTypeVampire) {
-			_curCursorID = 3;
+			_curCursorID = (gameType >= kGameTypeNancy10) ? kNewExit : kExit;
 			return;
 		}
 
 		break;
 	case kRotateCW:
-		_curCursorID = kRotateCW;
+		_curCursorID = (gameType >= kGameTypeNancy10) ? kNewRotateCW : kRotateCW;
 		return;
 	case kRotateCCW:
-		_curCursorID = kRotateCCW;
+		_curCursorID = (gameType >= kGameTypeNancy10) ? kNewRotateCCW : kRotateCCW;
 		return;
 	default:
 		break;
diff --git a/engines/nancy/cursor.h b/engines/nancy/cursor.h
index 42622d6d1eb..16c88371d41 100644
--- a/engines/nancy/cursor.h
+++ b/engines/nancy/cursor.h
@@ -56,8 +56,27 @@ public:
 		kCustom1Hotspot			= 17,
 		kCustom2				= 18,
 		kCustom2Hotspot			= 19,
-		kNormalArrow,
-		kHotspotArrow
+		kNormalArrow			= 20,
+		kHotspotArrow			= 21,
+
+		// Cursors in Nancy10 and newer games
+		kNewNormal 				= 0,	// Eyeglass, non-highlighted
+		kNewHotspot 			= 1,	// Eyeglass, highlighted
+		kNewNormalArrow			= 8,
+		kNewHotspotArrow		= 9,
+		kNewExit 				= 10,	// Used for movement and exiting puzzles
+		kNewRotateCW 			= 13,	// Used in puzzles only
+		kNewRotateCCW 			= 14,	// Used in puzzles only
+		kNewMoveLeft 			= 15,	// Used for movement and turning in 360 scenes
+		kNewMoveRight 			= 16,	// Used for movement and turning in 360 scenes
+		kNewMoveForward			= 17,	// Used for movement
+		kNewMoveBackward		= 18,	// Used for movement and exiting puzzles
+		kNewMoveUp				= 19,	// Used for movement
+		kNewMoveDown			= 20,	// Used for movement
+		kNewRotateRight			= 21,	// Used in 360 scenes
+		kNewRotateLeft			= 22,	// Used in 360 scenes
+		kNewInvertedRotateRight = 23,	// Used in 360 scenes
+		kNewInvertedRotateLeft	= 24,	// Used in 360 scenes
 	};
 
 	CursorManager();


Commit: e75be91f414fb691f2611fb6db99f005e170f6fd
    https://github.com/scummvm/scummvm/commit/e75be91f414fb691f2611fb6db99f005e170f6fd
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2026-04-09T09:37:13+03:00

Commit Message:
NANCY: Map more scene movement AR actions for Nancy10+

Changed paths:
    engines/nancy/action/arfactory.cpp


diff --git a/engines/nancy/action/arfactory.cpp b/engines/nancy/action/arfactory.cpp
index 2de25ae3499..29ecec5fd53 100644
--- a/engines/nancy/action/arfactory.cpp
+++ b/engines/nancy/action/arfactory.cpp
@@ -90,12 +90,16 @@ ActionRecord *ActionManager::createActionRecord(uint16 type, Common::SeekableRea
 		if (g_nancy->getGameType() <= kGameTypeNancy9) {
 			return new HotMultiframeSceneChange(CursorManager::kHotspot);
 		} else {
-			// TODO: Handle this correctly, as it messes up scene hotspots
-			return nullptr;
-			//return new HotSingleFrameSceneChange(true);
+			return new HotSingleFrameSceneChange(true);
 		}
 	case 12:
-		return new SceneChange();
+		if (g_nancy->getGameType() <= kGameTypeNancy9) {
+			return new SceneChange();
+		} else {
+			// Nancy11+
+			// TODO: Handle this correctly
+			return nullptr;
+		}
 	case 13:
 		return new HotMultiframeMultisceneChange();
 	case 14:




More information about the Scummvm-git-logs mailing list