[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