From d85f0b7d45e11e26df1699bc9fd7f1846f5d0d23 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Wed, 28 Sep 2011 21:24:27 +1000 Subject: TSAGE: Implemented Blue Force scene 620 --- engines/tsage/blue_force/blueforce_logic.cpp | 3 +- engines/tsage/blue_force/blueforce_scenes6.cpp | 104 +++++++++++++++++++++++++ engines/tsage/blue_force/blueforce_scenes6.h | 11 +++ 3 files changed, 117 insertions(+), 1 deletion(-) (limited to 'engines/tsage') diff --git a/engines/tsage/blue_force/blueforce_logic.cpp b/engines/tsage/blue_force/blueforce_logic.cpp index b0f3b21e3a..e79068bae9 100644 --- a/engines/tsage/blue_force/blueforce_logic.cpp +++ b/engines/tsage/blue_force/blueforce_logic.cpp @@ -147,7 +147,8 @@ Scene *BlueForceGame::createScene(int sceneNumber) { // Crash cut-scene return new Scene600(); case 620: - error("Scene group 6 not implemented"); + // Hospital cut-scene + return new Scene620(); case 666: // Death scene return new Scene666(); diff --git a/engines/tsage/blue_force/blueforce_scenes6.cpp b/engines/tsage/blue_force/blueforce_scenes6.cpp index 5c48de3f30..327bfde2b9 100644 --- a/engines/tsage/blue_force/blueforce_scenes6.cpp +++ b/engines/tsage/blue_force/blueforce_scenes6.cpp @@ -131,6 +131,110 @@ void Scene600::signal() { BF_GLOBALS._sceneManager.changeScene(620); } +/*-------------------------------------------------------------------------- + * Scene 620 - Hospital cut-scene + * + *--------------------------------------------------------------------------*/ + +void Scene620::postInit(SceneObjectList *OwnerList) { + SceneExt::postInit(); + loadScene(999); + + BF_GLOBALS._player.postInit(); + BF_GLOBALS._player.disableControl(); + BF_GLOBALS._player.setVisage(621); + BF_GLOBALS._player.setPosition(Common::Point(47, 96)); + + static const uint32 black = 0; + sub15DD6((const byte *)&black, 2, 621, this); +} + +void Scene620::signal() { + static const uint32 black = 0; + + switch (_sceneMode++) { + case 0: + case 3: + case 9: + case 12: + _timer1.set(60, this); + break; + case 1: + case 4: + case 7: + case 10: + case 13: + case 16: + case 19: + addFader((const byte *)&black, 2, this); + break; + case 2: + BF_GLOBALS._player.remove(); + _object1.postInit(); + _object1.setVisage(622); + _object1.setPosition(Common::Point(101, 41)); + addFader((const byte *)&black, 2, this); + break; + case 5: + _object1.remove(); + + _object2.postInit(); + _object2.setVisage(623); + _object2.setPosition(Common::Point(216, 4)); + sub15DD6((const byte *)&black, 2, 623, this); + break; + case 6: + _object2.animate(ANIM_MODE_5, this); + break; + case 8: + _object2.remove(); + + _object3.postInit(); + _object3.setVisage(624); + _object3.setFrame(1); + _object3.setPosition(Common::Point(28, 88)); + sub15DD6((const byte *)&black, 2, 624, this); + break; + case 11: + _object3.remove(); + + _object4.postInit(); + _object4.setVisage(625); + _object4.setPosition(Common::Point(168, 8)); + sub15DD6((const byte *)&black, 2, 625, this); + break; + case 14: + _object4.remove(); + + _object5.postInit(); + _object5.setVisage(626); + _object5.setPosition(Common::Point(249, 183)); + sub15DD6((const byte *)&black, 2, 626, this); + break; + case 15: + _object5.animate(ANIM_MODE_5, this); + break; + case 17: + _object5.remove(); + + _object6.postInit(); + _object6.setVisage(627); + _object6.setPosition(Common::Point(65, 24)); + sub15DD6((const byte *)&black, 2, 627, this); + break; + case 18: + _object6.animate(ANIM_MODE_5, this); + break; + case 20: + _object6.remove(); + BF_GLOBALS._bookmark = bArrestedDrunk; + BF_GLOBALS._v4CEB6 = 0; + BF_GLOBALS._dayNumber = 3; + BF_GLOBALS._sceneManager.changeScene(271); + break; + } +} + /*-------------------------------------------------------------------------- * Scene 666 - Death Scene * diff --git a/engines/tsage/blue_force/blueforce_scenes6.h b/engines/tsage/blue_force/blueforce_scenes6.h index 8b97af8bfe..89a7946827 100644 --- a/engines/tsage/blue_force/blueforce_scenes6.h +++ b/engines/tsage/blue_force/blueforce_scenes6.h @@ -57,6 +57,17 @@ public: virtual void signal(); }; +class Scene620 : public PalettedScene { +public: + SequenceManager _sequenceManager; + Timer _timer1; + NamedObject _object1, _object2, _object3; + NamedObject _object4, _object5, _object6; + + virtual void postInit(SceneObjectList *OwnerList = NULL); + virtual void signal(); +}; + class Scene666 : public SceneExt { /* Actions */ class Action1 : public Action { -- cgit v1.2.3