aboutsummaryrefslogtreecommitdiff
path: root/engines/bladerunner/script
diff options
context:
space:
mode:
authorThanasis Antoniou2019-03-31 12:23:01 +0300
committerThanasis Antoniou2019-03-31 12:24:23 +0300
commit20d77710c98ace3a018244586c08ab82bb9b5c41 (patch)
tree95fdbb9493a9be97376085ad01f7fc7b7e36cfeb /engines/bladerunner/script
parentfa50678125ed51ccdbf9362762b520ecfa6be423 (diff)
downloadscummvm-rg350-20d77710c98ace3a018244586c08ab82bb9b5c41.tar.gz
scummvm-rg350-20d77710c98ace3a018244586c08ab82bb9b5c41.tar.bz2
scummvm-rg350-20d77710c98ace3a018244586c08ab82bb9b5c41.zip
BLADERUNNER: Release non-repeated and support queued overlays
Diffstat (limited to 'engines/bladerunner/script')
-rw-r--r--engines/bladerunner/script/scene/bb06.cpp15
-rw-r--r--engines/bladerunner/script/scene/bb51.cpp2
2 files changed, 13 insertions, 4 deletions
diff --git a/engines/bladerunner/script/scene/bb06.cpp b/engines/bladerunner/script/scene/bb06.cpp
index 92fdefefd8..b2b185d630 100644
--- a/engines/bladerunner/script/scene/bb06.cpp
+++ b/engines/bladerunner/script/scene/bb06.cpp
@@ -67,7 +67,7 @@ void SceneScriptBB06::InitializeScene() {
#else
// bugfix: case of not transitioning from BB51: chess/ egg boiler sub-space
if (Game_Flag_Query(kFlagBB06AndroidDestroyed)) {
- Overlay_Play("BB06OVER", 1, false, false, 0);
+ Overlay_Play("BB06OVER", 1, true, true, 0);
}
#endif // BLADERUNNER_ORIGINAL_BUGS
}
@@ -111,8 +111,17 @@ bool SceneScriptBB06::ClickedOn3DObject(const char *objectName, bool a2) {
}
#else
if (Player_Query_Combat_Mode()) {
- Overlay_Play("BB06OVER", 0, false, true, 0); // explosion - don't loop
+ // Doll Explosion case:
+ // We need to use enqueued overlays for this.
+ // Note: Queuing only works on top of a video that is repeating itself.
+ // First we load the "exploding animation state" as a forever loop (even though it will only play once)
+ // Then we enqueue the final exploded state loop, also as a forever loop.
+ // This (along with some fixes in the Overlays class will ensure
+ // that the second overlay will play after the first has completed one loop
+ // and it will persist (across save games too).
Game_Flag_Set(kFlagBB06AndroidDestroyed);
+ Overlay_Play("BB06OVER", 0, true, true, 0);
+ Overlay_Play("BB06OVER", 1, true, false, 0);
Un_Combat_Target_Object("BOX31");
return true;
} else {
@@ -195,7 +204,7 @@ void SceneScriptBB06::SceneFrameAdvanced(int frame) {
// last frame of transition is 15, try 13 for better transition - minimize weird effect
if (frame == 13) { // executed once during transition FROM bb51 (chess sub space)
if (Game_Flag_Query(kFlagBB06AndroidDestroyed)) {
- Overlay_Play("BB06OVER", 1, false, false, 0);
+ Overlay_Play("BB06OVER", 1, true, true, 0);
}
}
#endif // BLADERUNNER_ORIGINAL_BUGS
diff --git a/engines/bladerunner/script/scene/bb51.cpp b/engines/bladerunner/script/scene/bb51.cpp
index fd706c2bcf..d5d5630d36 100644
--- a/engines/bladerunner/script/scene/bb51.cpp
+++ b/engines/bladerunner/script/scene/bb51.cpp
@@ -51,7 +51,7 @@ void SceneScriptBB51::InitializeScene() {
#if BLADERUNNER_ORIGINAL_BUGS // Sebastian's Doll Fix
#else
if (Game_Flag_Query(kFlagBB06AndroidDestroyed)) {
- Overlay_Play("BB06OVER", 1, false, false, 0);
+ Overlay_Play("BB06OVER", 1, true, true, 0);
}
#endif // BLADERUNNER_ORIGINAL_BUGS