aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Kohaut2019-01-08 19:25:27 +0100
committerPeter Kohaut2019-01-08 19:25:27 +0100
commitd14c6976da1f1bfa5e66ae23b512ab9129eba6a1 (patch)
tree447380de14f427203c24b9be9c6701b58f295852
parent25d3b2bf5b7c972de90599dbd08d2c614bec28c3 (diff)
downloadscummvm-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.cpp23
-rw-r--r--engines/bladerunner/bladerunner.h1
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);