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

dreammaster dreammaster at scummvm.org
Sat Jul 15 21:48:49 CEST 2017


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:
b4c5318e6d TITANIC: Don't allow starfield to be shown if puzzle was skipped


Commit: b4c5318e6d48366e23221e9ab1643393c497561e
    https://github.com/scummvm/scummvm/commit/b4c5318e6d48366e23221e9ab1643393c497561e
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2017-07-15T15:48:43-04:00

Commit Message:
TITANIC: Don't allow starfield to be shown if puzzle was skipped

Changed paths:
    engines/titanic/pet_control/pet_remote_glyphs.cpp
    engines/titanic/star_control/star_control.cpp
    engines/titanic/star_control/star_control.h
    engines/titanic/star_control/star_crosshairs.h
    engines/titanic/star_control/star_field.cpp
    engines/titanic/star_control/star_field.h


diff --git a/engines/titanic/pet_control/pet_remote_glyphs.cpp b/engines/titanic/pet_control/pet_remote_glyphs.cpp
index b56c2f6..7aae879 100644
--- a/engines/titanic/pet_control/pet_remote_glyphs.cpp
+++ b/engines/titanic/pet_control/pet_remote_glyphs.cpp
@@ -545,11 +545,16 @@ bool CNavigationControllerGlyph::MouseButtonUpMsg(const Point &pt) {
 	if (!_gfxElement->MouseButtonUpMsg(pt))
 		return false;
 
+	CPetControl *pet = getPetControl();
+	CStarControl *starControl = pet->getStarControl();
 	_flag = !_flag;
-	CTreeItem *target = getPetControl()->_remoteTarget;
-	if (target) {
-		CPETHelmetOnOffMsg msg;
-		msg.execute(target);
+
+	if (!starControl->isSkipped()) {
+		CTreeItem *target = pet->_remoteTarget;
+		if (target) {
+			CPETHelmetOnOffMsg msg;
+			msg.execute(target);
+		}
 	}
 
 	return true;
diff --git a/engines/titanic/star_control/star_control.cpp b/engines/titanic/star_control/star_control.cpp
index ff2c498..42f81f5 100644
--- a/engines/titanic/star_control/star_control.cpp
+++ b/engines/titanic/star_control/star_control.cpp
@@ -260,9 +260,12 @@ bool CStarControl::isSolved() const {
 	return _starField.isSolved();
 }
 
+bool CStarControl::isSkipped() const {
+	return _starField.isSkipped();
+}
+
 void CStarControl::forceSolved() {
-	while (!_starField.isSolved())
-		_starField.incMatches();
+	_starField.skipPuzzle();
 }
 
 bool CStarControl::canSetStarDestination() const {
diff --git a/engines/titanic/star_control/star_control.h b/engines/titanic/star_control/star_control.h
index 2c314a6..776f25a 100644
--- a/engines/titanic/star_control/star_control.h
+++ b/engines/titanic/star_control/star_control.h
@@ -78,6 +78,11 @@ public:
 	bool isSolved() const;
 
 	/**
+	 * Return true if the starfield puzzle was skipped
+	 */
+	bool isSkipped() const;
+
+	/**
 	 * Forces the starfield to be solved
 	 */
 	void forceSolved();
diff --git a/engines/titanic/star_control/star_crosshairs.h b/engines/titanic/star_control/star_crosshairs.h
index e91e245..ebd6f0d 100644
--- a/engines/titanic/star_control/star_crosshairs.h
+++ b/engines/titanic/star_control/star_crosshairs.h
@@ -120,7 +120,12 @@ public:
 	/**
 	 * Returns true if the starfield is solved
 	 */
-	bool isSolved() const { return _matchIndex == 2; }
+	bool isSolved() const { return _matchIndex >= 2; }
+
+	/**
+	 * Return true if the starfield puzzle was skipped
+	 */
+	bool isSkipped() const { return _matchIndex == 3; }
 };
 
 } // End of namespace Titanic
diff --git a/engines/titanic/star_control/star_field.cpp b/engines/titanic/star_control/star_field.cpp
index 6d8661f..722b448 100644
--- a/engines/titanic/star_control/star_field.cpp
+++ b/engines/titanic/star_control/star_field.cpp
@@ -131,13 +131,22 @@ bool CStarField::isCloseToMarker() const {
 }
 
 void CStarField::setSolved() {
-	_isSolved = _crosshairs._matchIndex == 2;
+	_isSolved = _crosshairs._matchIndex >= 2;
 }
 
 bool CStarField::isSolved() const {
 	return _isSolved;
 }
 
+bool CStarField::isSkipped() const {
+	return _crosshairs.isSkipped();
+}
+
+void CStarField::skipPuzzle() {
+	_crosshairs._matchIndex = 3;
+	setSolved();
+}
+
 void CStarField::fn1(CErrorCode *errorCode) {
 	_starCloseup.proc3(errorCode);
 }
diff --git a/engines/titanic/star_control/star_field.h b/engines/titanic/star_control/star_field.h
index 63eb68d..bd3f8ae 100644
--- a/engines/titanic/star_control/star_field.h
+++ b/engines/titanic/star_control/star_field.h
@@ -120,6 +120,16 @@ public:
 	bool isSolved() const;
 
 	/**
+	 * Return true if the starfield puzzle was skipped
+	 */
+	bool isSkipped() const;
+
+	/**
+	 * Skips the starfield puzzle
+	 */
+	void skipPuzzle();
+
+	/**
 	 * Returns the number of markers placed in the starfield
 	 */
 	int getMarkerCount() const {





More information about the Scummvm-git-logs mailing list