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 | |
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.
-rw-r--r-- | engines/bladerunner/bladerunner.cpp | 23 | ||||
-rw-r--r-- | engines/bladerunner/bladerunner.h | 1 |
2 files changed, 23 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; diff --git a/engines/bladerunner/bladerunner.h b/engines/bladerunner/bladerunner.h index 75ff0c8173..780c32b9a7 100644 --- a/engines/bladerunner/bladerunner.h +++ b/engines/bladerunner/bladerunner.h @@ -281,6 +281,7 @@ public: bool playerHasControl(); void playerLosesControl(); void playerGainsControl(); + void playerDied(); bool saveGame(Common::WriteStream &stream, const Graphics::Surface &thumbnail); bool loadGame(Common::SeekableReadStream &stream); |