aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorPaul Gilbert2017-07-15 15:48:43 -0400
committerPaul Gilbert2017-07-15 15:48:43 -0400
commitb4c5318e6d48366e23221e9ab1643393c497561e (patch)
tree093c41f10e22aff55de5daa11a7785cb93744dda /engines
parent0f33e8ff8feb70f3b0625dc5c2ed012e9d3924e8 (diff)
downloadscummvm-rg350-b4c5318e6d48366e23221e9ab1643393c497561e.tar.gz
scummvm-rg350-b4c5318e6d48366e23221e9ab1643393c497561e.tar.bz2
scummvm-rg350-b4c5318e6d48366e23221e9ab1643393c497561e.zip
TITANIC: Don't allow starfield to be shown if puzzle was skipped
Diffstat (limited to 'engines')
-rw-r--r--engines/titanic/pet_control/pet_remote_glyphs.cpp13
-rw-r--r--engines/titanic/star_control/star_control.cpp7
-rw-r--r--engines/titanic/star_control/star_control.h5
-rw-r--r--engines/titanic/star_control/star_crosshairs.h7
-rw-r--r--engines/titanic/star_control/star_field.cpp11
-rw-r--r--engines/titanic/star_control/star_field.h10
6 files changed, 45 insertions, 8 deletions
diff --git a/engines/titanic/pet_control/pet_remote_glyphs.cpp b/engines/titanic/pet_control/pet_remote_glyphs.cpp
index b56c2f6854..7aae879646 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 ff2c498e3f..42f81f5f2e 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 2c314a67a8..776f25afd1 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 e91e245ad1..ebd6f0d07b 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 6d8661f246..722b448bc9 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 63eb68d853..bd3f8aecb6 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 {