[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