[Scummvm-git-logs] scummvm master -> 04851ed522685d1ed5324d6b64d27212181f7a24
neuromancer
neuromancer at users.noreply.github.com
Thu Mar 18 22:21:37 UTC 2021
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
04851ed522 PRIVATE: implemented DossierChgSheet
Commit: 04851ed522685d1ed5324d6b64d27212181f7a24
https://github.com/scummvm/scummvm/commit/04851ed522685d1ed5324d6b64d27212181f7a24
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2021-03-18T19:17:52-03:00
Commit Message:
PRIVATE: implemented DossierChgSheet
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 57adb05431..d781325ab0 100644
--- a/engines/private/funcs.cpp
+++ b/engines/private/funcs.cpp
@@ -228,7 +228,28 @@ static void fDossierBitmap(ArgArray args) {
}
static void fDossierChgSheet(ArgArray args) {
- debugC(1, kPrivateDebugScript, "WARNING: DossierChgSheet is not implemented");
+ assert(args.size() == 4);
+ debugC(1, kPrivateDebugScript, "DossierChgSheet(%s,%d,%d,%d)", args[0].u.str, args[1].u.val, args[2].u.val, args[3].u.val);
+ Common::String s(args[0].u.str);
+ MaskInfo m;
+
+ int p = args[1].u.val;
+ int x = args[2].u.val;
+ int y = args[3].u.val;
+
+ m.surf = g_private->loadMask(s, x, y, true);
+ m.cursor = "kExit";
+ m.nextSetting = "";
+ m.flag1 = NULL;
+ m.flag2 = NULL;
+ if (p == 0)
+ g_private->_dossierPrevSheetMask = m;
+ else if (p == 1)
+ g_private->_dossierNextSheetMask = m;
+ else
+ error("Invalid sheet number in DossierChgSheet %d", p);
+
+ g_private->_masks.push_front(m);
}
static void fDossierPrevSuspect(ArgArray args) {
diff --git a/engines/private/private.cpp b/engines/private/private.cpp
index 15321f8bfa..0fe36bf2b8 100644
--- a/engines/private/private.cpp
+++ b/engines/private/private.cpp
@@ -105,6 +105,8 @@ PrivateEngine::PrivateEngine(OSystem *syst, const ADGameDescription *gd)
_dossierSuspect = 0;
_dossierNextSuspectMask.clear();
_dossierPrevSuspectMask.clear();
+ _dossierNextSheetMask.clear();
+ _dossierPrevSheetMask.clear();
// Diary
_diaryLocPrefix = "inface/diary/loclist/";
@@ -216,6 +218,10 @@ Common::Error PrivateEngine::run() {
break;
else if (selectDossierPrevSuspect(mousePos))
break;
+ else if (selectDossierNextSheet(mousePos))
+ break;
+ else if (selectDossierPrevSheet(mousePos))
+ break;
selectPauseMovie(mousePos);
selectPhoneArea(mousePos);
@@ -338,6 +344,16 @@ void PrivateEngine::clearAreas() {
_dossierPrevSuspectMask.surf->free();
delete _dossierPrevSuspectMask.surf;
_dossierPrevSuspectMask.clear();
+
+ if (_dossierNextSheetMask.surf)
+ _dossierNextSheetMask.surf->free();
+ delete _dossierNextSheetMask.surf;
+ _dossierNextSheetMask.clear();
+
+ if (_dossierPrevSheetMask.surf)
+ _dossierPrevSheetMask.surf->free();
+ delete _dossierPrevSheetMask.surf;
+ _dossierPrevSheetMask.clear();
}
void PrivateEngine::startPoliceBust() {
@@ -625,6 +641,41 @@ bool PrivateEngine::selectDossierNextSuspect(Common::Point mousePos) {
return false;
}
+bool PrivateEngine::selectDossierPrevSheet(Common::Point mousePos) {
+ if (_dossierNextSheetMask.surf == NULL)
+ return false;
+
+ if (inMask(_dossierPrevSheetMask.surf, mousePos)) {
+ if (_dossierPage == 1) {
+ _dossierPage = 0;
+ loadDossier();
+ drawMask(_dossierNextSuspectMask.surf);
+ drawMask(_dossierPrevSuspectMask.surf);
+ drawScreen();
+ }
+ return true;
+ }
+ return false;
+}
+
+bool PrivateEngine::selectDossierNextSheet(Common::Point mousePos) {
+ if (_dossierNextSheetMask.surf == NULL)
+ return false;
+
+ if (inMask(_dossierNextSheetMask.surf, mousePos)) {
+ DossierInfo m = _dossiers[_dossierSuspect];
+ if (_dossierPage == 0 && !m.page2.empty()) {
+ _dossierPage = 1;
+ loadDossier();
+ drawMask(_dossierNextSuspectMask.surf);
+ drawMask(_dossierPrevSuspectMask.surf);
+ drawScreen();
+ }
+ return true;
+ }
+ return false;
+}
+
bool PrivateEngine::selectDossierPrevSuspect(Common::Point mousePos) {
if (_dossierPrevSuspectMask.surf == NULL)
return false;
diff --git a/engines/private/private.h b/engines/private/private.h
index 4e998126c3..362cc3a9d9 100644
--- a/engines/private/private.h
+++ b/engines/private/private.h
@@ -228,8 +228,12 @@ public:
unsigned int _dossierPage;
MaskInfo _dossierNextSuspectMask;
MaskInfo _dossierPrevSuspectMask;
+ MaskInfo _dossierNextSheetMask;
+ MaskInfo _dossierPrevSheetMask;
bool selectDossierNextSuspect(Common::Point);
bool selectDossierPrevSuspect(Common::Point);
+ bool selectDossierNextSheet(Common::Point);
+ bool selectDossierPrevSheet(Common::Point);
void loadDossier();
// Police Bust
More information about the Scummvm-git-logs
mailing list