diff options
author | Thanasis Antoniou | 2019-05-23 02:17:56 +0300 |
---|---|---|
committer | Thanasis Antoniou | 2019-05-23 02:17:56 +0300 |
commit | 3322bc44db112d0f35118d80e835b27f6b76668b (patch) | |
tree | 71ae0c93803c451c68d2d5e433c5f473fd4768bc | |
parent | e4b8c0f4e3911062bbbb4829d85b11be80a0e8ae (diff) | |
download | scummvm-rg350-3322bc44db112d0f35118d80e835b27f6b76668b.tar.gz scummvm-rg350-3322bc44db112d0f35118d80e835b27f6b76668b.tar.bz2 scummvm-rg350-3322bc44db112d0f35118d80e835b27f6b76668b.zip |
BLADERUNNER: Fix mouse in KIA after moonbus massacre ending
-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); |