diff options
Diffstat (limited to 'engines/bladerunner')
-rw-r--r-- | engines/bladerunner/bladerunner.cpp | 23 | ||||
-rw-r--r-- | engines/bladerunner/bladerunner.h | 2 |
2 files changed, 17 insertions, 8 deletions
diff --git a/engines/bladerunner/bladerunner.cpp b/engines/bladerunner/bladerunner.cpp index cd8cbbe298..c0f2544e75 100644 --- a/engines/bladerunner/bladerunner.cpp +++ b/engines/bladerunner/bladerunner.cpp @@ -323,6 +323,10 @@ Common::Error BladeRunnerEngine::run() { // additional code for gracefully handling end-game after _endCredits->show() _gameOver = false; _gameIsRunning = true; + if (!playerHasControl()) { + // force a player gains control + playerGainsControl(true); + } if (_mouse->isDisabled()) { // force a mouse enable here since otherwise, after end-game, // we need extra call(s) to mouse->enable to get the _disabledCounter to 0 @@ -1861,16 +1865,21 @@ void BladeRunnerEngine::playerLosesControl() { } } -void BladeRunnerEngine::playerGainsControl() { - if (_playerLosesControlCounter == 0) { +void BladeRunnerEngine::playerGainsControl(bool force) { + if (!force && _playerLosesControlCounter == 0) { warning("Unbalanced call to BladeRunnerEngine::playerGainsControl"); } - if (_playerLosesControlCounter > 0) - --_playerLosesControlCounter; - - if (_playerLosesControlCounter == 0) { - _mouse->enable(); + if (force) { + _playerLosesControlCounter = 0; + _mouse->enable(force); + } else { + if (_playerLosesControlCounter > 0) { + --_playerLosesControlCounter; + } + if (_playerLosesControlCounter == 0) { + _mouse->enable(); + } } } diff --git a/engines/bladerunner/bladerunner.h b/engines/bladerunner/bladerunner.h index 33ab032bb8..2c1aec4c1b 100644 --- a/engines/bladerunner/bladerunner.h +++ b/engines/bladerunner/bladerunner.h @@ -296,7 +296,7 @@ public: bool playerHasControl(); void playerLosesControl(); - void playerGainsControl(); + void playerGainsControl(bool force = false); void playerDied(); bool saveGame(Common::WriteStream &stream, Graphics::Surface &thumbnail); |