[Scummvm-git-logs] scummvm master -> 2f12155493086910fa504eb125b04ae9dd75c03e

neuromancer noreply at scummvm.org
Sun Nov 23 22:09:26 UTC 2025


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:
a5fcbcc4de PRIVATE: Hide dossier arrows when unavailable
2f12155493 PRIVATE: Improve dossier navigation


Commit: a5fcbcc4de0b87aef4f996f2aa67e91978524cfb
    https://github.com/scummvm/scummvm/commit/a5fcbcc4de0b87aef4f996f2aa67e91978524cfb
Author: sluicebox (22204938+sluicebox at users.noreply.github.com)
Date: 2025-11-23T23:09:21+01:00

Commit Message:
PRIVATE: Hide dossier arrows when unavailable

Changed paths:
    engines/private/funcs.cpp
    engines/private/private.cpp


diff --git a/engines/private/funcs.cpp b/engines/private/funcs.cpp
index d79c4f53603..1b648f7de5b 100644
--- a/engines/private/funcs.cpp
+++ b/engines/private/funcs.cpp
@@ -315,6 +315,10 @@ static void fDossierPrevSuspect(ArgArray args) {
 	Common::String s(args[0].u.str);
 	MaskInfo m;
 
+	if (g_private->_dossierSuspect == 0) {
+		return;
+	}
+
 	int x = args[1].u.val;
 	int y = args[2].u.val;
 
@@ -332,6 +336,10 @@ static void fDossierNextSuspect(ArgArray args) {
 	Common::String s(args[0].u.str);
 	MaskInfo m;
 
+	if ((g_private->_dossierSuspect + 1) >= g_private->_dossiers.size()) {
+		return;
+	}
+
 	int x = args[1].u.val;
 	int y = args[2].u.val;
 
diff --git a/engines/private/private.cpp b/engines/private/private.cpp
index 3c00ff9bce8..e2274672107 100644
--- a/engines/private/private.cpp
+++ b/engines/private/private.cpp
@@ -1306,10 +1306,9 @@ bool PrivateEngine::selectDossierNextSuspect(Common::Point mousePos) {
 			playSound(getPaperShuffleSound(), 1, false, false);
 			_dossierSuspect++;
 			_dossierPage = 0;
-			loadDossier();
-			drawMask(_dossierNextSuspectMask.surf);
-			drawMask(_dossierPrevSuspectMask.surf);
-			drawScreen();
+			
+			// reload kDossierOpen
+			_nextSetting = _currentSetting;
 		}
 		return true;
 	}
@@ -1324,10 +1323,9 @@ bool PrivateEngine::selectDossierPrevSheet(Common::Point mousePos) {
 		if (_dossierPage == 1) {
 			playSound(getPaperShuffleSound(), 1, false, false);
 			_dossierPage = 0;
-			loadDossier();
-			drawMask(_dossierNextSuspectMask.surf);
-			drawMask(_dossierPrevSuspectMask.surf);
-			drawScreen();
+			
+			// reload kDossierOpen
+			_nextSetting = _currentSetting;
 		}
 		return true;
 	}
@@ -1343,10 +1341,9 @@ bool PrivateEngine::selectDossierNextSheet(Common::Point mousePos) {
 		if (_dossierPage == 0 && !m.page2.empty()) {
 			playSound(getPaperShuffleSound(), 1, false, false);
 			_dossierPage = 1;
-			loadDossier();
-			drawMask(_dossierNextSuspectMask.surf);
-			drawMask(_dossierPrevSuspectMask.surf);
-			drawScreen();
+			
+			// reload kDossierOpen
+			_nextSetting = _currentSetting;
 		}
 		return true;
 	}
@@ -1362,10 +1359,9 @@ bool PrivateEngine::selectDossierPrevSuspect(Common::Point mousePos) {
 			playSound(getPaperShuffleSound(), 1, false, false);
 			_dossierSuspect--;
 			_dossierPage = 0;
-			loadDossier();
-			drawMask(_dossierNextSuspectMask.surf);
-			drawMask(_dossierPrevSuspectMask.surf);
-			drawScreen();
+			
+			// reload kDossierOpen
+			_nextSetting = _currentSetting;
 		}
 		return true;
 	}


Commit: 2f12155493086910fa504eb125b04ae9dd75c03e
    https://github.com/scummvm/scummvm/commit/2f12155493086910fa504eb125b04ae9dd75c03e
Author: sluicebox (22204938+sluicebox at users.noreply.github.com)
Date: 2025-11-23T23:09:21+01:00

Commit Message:
PRIVATE: Improve dossier navigation

Fixes two small issues:
- The "next sheet" cursor appeared even when there was no next sheet
- The dossier page acted like an exit hotspot

Changed paths:
    engines/private/funcs.cpp
    engines/private/private.cpp
    engines/private/private.h


diff --git a/engines/private/funcs.cpp b/engines/private/funcs.cpp
index 1b648f7de5b..6a1178e1d55 100644
--- a/engines/private/funcs.cpp
+++ b/engines/private/funcs.cpp
@@ -291,6 +291,11 @@ static void fDossierChgSheet(ArgArray args) {
 	Common::String s(args[0].u.str);
 	MaskInfo m;
 
+	// do nothing if suspect only has one sheet
+	if (g_private->_dossiers[g_private->_dossierSuspect].page2.empty()) {
+		return;
+	}
+
 	int p = args[1].u.val;
 	int x = args[2].u.val;
 	int y = args[3].u.val;
diff --git a/engines/private/private.cpp b/engines/private/private.cpp
index e2274672107..1267e0a87ab 100644
--- a/engines/private/private.cpp
+++ b/engines/private/private.cpp
@@ -105,6 +105,7 @@ PrivateEngine::PrivateEngine(OSystem *syst, const ADGameDescription *gd)
 	// Dossiers
 	_dossierPage = 0;
 	_dossierSuspect = 0;
+	_dossierPageMask.clear();
 	_dossierNextSuspectMask.clear();
 	_dossierPrevSuspectMask.clear();
 	_dossierNextSheetMask.clear();
@@ -380,6 +381,8 @@ Common::Error PrivateEngine::run() {
 					break;
 				else if (selectDossierPrevSheet(mousePos))
 					break;
+				else if (selectDossierPage(mousePos))
+					break;
 				else if (selectSafeDigit(mousePos))
 					break;
 				else if (selectDiaryNextPage(mousePos))
@@ -525,6 +528,7 @@ void PrivateEngine::clearAreas() {
 	_policeRadioArea.clear();
 	_AMRadioArea.clear();
 	_phoneArea.clear();
+	_dossierPageMask.clear();
 	_dossierNextSuspectMask.clear();
 	_dossierPrevSuspectMask.clear();
 	_dossierNextSheetMask.clear();
@@ -1286,15 +1290,31 @@ void PrivateEngine::loadDossier() {
 	int x = 40;
 	int y = 30;
 
-	DossierInfo m = _dossiers[_dossierSuspect];
+	MaskInfo m;
+	DossierInfo d = _dossiers[_dossierSuspect];
 
 	if (_dossierPage == 0) {
-		loadImage(m.page1, x, y);
+		m.surf = loadMask(d.page1, x, y, true);
 	} else if (_dossierPage == 1) {
-		loadImage(m.page2, x, y);
+		m.surf = loadMask(d.page2, x, y, true);
 	} else {
 		error("Invalid page");
 	}
+
+	m.cursor = "default";
+	_dossierPageMask = m;
+	_masks.push_back(m); // not push_front, as this occurs after DossierChgSheet
+}
+
+bool PrivateEngine::selectDossierPage(Common::Point mousePos) {
+	if (_dossierPageMask.surf == nullptr) {
+		return false;
+	}
+
+	if (inMask(_dossierPageMask.surf, mousePos)) {
+		return true;
+	}
+	return false;
 }
 
 bool PrivateEngine::selectDossierNextSuspect(Common::Point mousePos) {
diff --git a/engines/private/private.h b/engines/private/private.h
index 24ecc4eddb2..cbe9678d03f 100644
--- a/engines/private/private.h
+++ b/engines/private/private.h
@@ -321,10 +321,12 @@ public:
 	DossierArray _dossiers;
 	uint _dossierSuspect;
 	uint _dossierPage;
+	MaskInfo _dossierPageMask;
 	MaskInfo _dossierNextSuspectMask;
 	MaskInfo _dossierPrevSuspectMask;
 	MaskInfo _dossierNextSheetMask;
 	MaskInfo _dossierPrevSheetMask;
+	bool selectDossierPage(Common::Point);
 	bool selectDossierNextSuspect(Common::Point);
 	bool selectDossierPrevSuspect(Common::Point);
 	bool selectDossierNextSheet(Common::Point);




More information about the Scummvm-git-logs mailing list