diff options
author | Peter Kohaut | 2019-01-08 19:25:27 +0100 |
---|---|---|
committer | Peter Kohaut | 2019-01-08 19:25:27 +0100 |
commit | d14c6976da1f1bfa5e66ae23b512ab9129eba6a1 (patch) | |
tree | 447380de14f427203c24b9be9c6701b58f295852 /engines/bladerunner/bladerunner.cpp | |
parent | 25d3b2bf5b7c972de90599dbd08d2c614bec28c3 (diff) | |
download | scummvm-rg350-d14c6976da1f1bfa5e66ae23b512ab9129eba6a1.tar.gz scummvm-rg350-d14c6976da1f1bfa5e66ae23b512ab9129eba6a1.tar.bz2 scummvm-rg350-d14c6976da1f1bfa5e66ae23b512ab9129eba6a1.zip |
BLADERUNNER: Player death
Added original game behavior when player died, 5 second wait and then
load screen.
Diffstat (limited to 'engines/bladerunner/bladerunner.cpp')
-rw-r--r-- | engines/bladerunner/bladerunner.cpp | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/engines/bladerunner/bladerunner.cpp b/engines/bladerunner/bladerunner.cpp index bd7379e966..08de96766c 100644 --- a/engines/bladerunner/bladerunner.cpp +++ b/engines/bladerunner/bladerunner.cpp @@ -832,7 +832,10 @@ bool BladeRunnerEngine::isMouseButtonDown() const { void BladeRunnerEngine::gameLoop() { _gameIsRunning = true; do { - /* TODO: check player death */ + if (_playerDead) { + playerDied(); + _playerDead = false; + } gameTick(); } while (_gameIsRunning); } @@ -1759,6 +1762,24 @@ void BladeRunnerEngine::playerGainsControl() { } } +void BladeRunnerEngine::playerDied() { + playerLosesControl(); + + int timeWaitEnd = _time->current() + 5000; + while (_time->current() < timeWaitEnd) { + gameTick(); + } + + _actorDialogueQueue->flush(1, false); + + while (_playerLosesControlCounter > 0) { + playerGainsControl(); + } + + _kia->_forceOpen = true; + _kia->open(kKIASectionLoad); +} + bool BladeRunnerEngine::saveGame(Common::WriteStream &stream, const Graphics::Surface &thumbnail) { if (!playerHasControl() || _sceneScript->isInsideScript() || _aiScripts->isInsideScript()) { return false; |