TSAGE: Implemented Blue Force scene 620

This commit is contained in:
Paul Gilbert 2011-09-28 21:24:27 +10:00
parent 7aad29572d
commit d85f0b7d45
3 changed files with 117 additions and 1 deletions

View file

@ -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();

View file

@ -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
*

View file

@ -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 {