diff options
author | Paul Gilbert | 2017-07-15 15:48:43 -0400 |
---|---|---|
committer | Paul Gilbert | 2017-07-15 15:48:43 -0400 |
commit | b4c5318e6d48366e23221e9ab1643393c497561e (patch) | |
tree | 093c41f10e22aff55de5daa11a7785cb93744dda /engines/titanic/star_control | |
parent | 0f33e8ff8feb70f3b0625dc5c2ed012e9d3924e8 (diff) | |
download | scummvm-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/titanic/star_control')
-rw-r--r-- | engines/titanic/star_control/star_control.cpp | 7 | ||||
-rw-r--r-- | engines/titanic/star_control/star_control.h | 5 | ||||
-rw-r--r-- | engines/titanic/star_control/star_crosshairs.h | 7 | ||||
-rw-r--r-- | engines/titanic/star_control/star_field.cpp | 11 | ||||
-rw-r--r-- | engines/titanic/star_control/star_field.h | 10 |
5 files changed, 36 insertions, 4 deletions
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 { |