TSAGE: Blue Force - Implement intro scene 125

This commit is contained in:
Strangerke 2011-10-18 19:51:09 +02:00
parent ee9a17ca7e
commit 714de939ff
3 changed files with 498 additions and 0 deletions

View file

@ -75,6 +75,7 @@ Scene *BlueForceGame::createScene(int sceneNumber) {
// Inside Tony's Bar
return new Scene115();
case 125:
return new Scene125();
case 140:
case 150:
case 160:

View file

@ -1835,6 +1835,458 @@ void Scene115::synchronize(Serializer &s) {
s.syncAsSint16LE(_field31EA);
}
/*--------------------------------------------------------------------------
* Scene 125 -
*
*--------------------------------------------------------------------------*/
void Scene125::Action1::signal() {
Scene125 *scene = (Scene125 *)BF_GLOBALS._sceneManager._scene;
SceneObject *owner = static_cast<SceneObject *>(this->_owner);
switch (_actionIndex++) {
case 1: {
Common::Point destPos(214, 105);
NpcMover *mover = new NpcMover();
owner->addMover(mover, &destPos, this);
break;
}
case 2:
owner->animate(ANIM_MODE_4, 4, 1, this);
break;
case 3:
owner->setFrame(5);
scene->_object2.show();
setDelay(180);
break;
case 4: {
Common::Point destPos(311, 85);
NpcMover *mover = new NpcMover();
owner->addMover(mover, &destPos, this);
break;
}
case 5:
owner->remove();
break;
case 0:
// No break on purpose
default:
break;
}
}
void Scene125::Action2::signal() {
Scene125 *scene = (Scene125 *)BF_GLOBALS._sceneManager._scene;
switch (_actionIndex++) {
case 0:
setDelay(30);
break;
case 1:
scene->_action1.signal();
setDelay(20);
break;
case 2: {
BF_GLOBALS._v501FA = 10;
BF_GLOBALS._v51C44 = 1;
Common::Point destPos(202, 94);
NpcMover *mover = new NpcMover();
BF_GLOBALS._player.addMover(mover, &destPos, this);
break;
}
case 3: {
scene->_action3.signal();
Common::Point destPos(280, 84);
NpcMover *mover = new NpcMover();
BF_GLOBALS._player.addMover(mover, &destPos, this);
break;
}
case 4:
BF_GLOBALS._player.animate(ANIM_MODE_5, this);
break;
case 5: {
Common::Point destPos(375, 111);
NpcMover *mover = new NpcMover();
BF_GLOBALS._player.addMover(mover, &destPos, this);
break;
}
case 6:
BF_GLOBALS._player.setStrip(2);
BF_GLOBALS._player.setFrame(1);
BF_GLOBALS._player.animate(ANIM_MODE_5, this);
break;
case 7: {
Common::Point destPos(347, 139);
NpcMover *mover = new NpcMover();
BF_GLOBALS._player.addMover(mover, &destPos, this);
break;
}
case 8:
BF_GLOBALS._player.setStrip(3);
BF_GLOBALS._player.setFrame(1);
BF_GLOBALS._player.animate(ANIM_MODE_5, this);
break;
case 9: {
Common::Point destPos(107, 75);
NpcMover *mover = new NpcMover();
BF_GLOBALS._player.addMover(mover, &destPos, this);
BF_GLOBALS._player.setPriority(80);
break;
}
case 10:
BF_GLOBALS._player.setStrip(4);
BF_GLOBALS._player.setFrame(1);
BF_GLOBALS._player.animate(ANIM_MODE_5, this);
break;
case 11: {
BF_GLOBALS._player.setPriority(64);
Common::Point destPos(229, 61);
NpcMover *mover = new NpcMover();
BF_GLOBALS._player.addMover(mover, &destPos, this);
break;
}
case 12:
scene->_action3.signal();
BF_GLOBALS._player.remove();
default:
break;
}
}
void Scene125::Action2::dispatch() {
Action::dispatch();
if ((_actionIndex == 10) && (BF_GLOBALS._player._percent > 80))
BF_GLOBALS._player.changeZoom(BF_GLOBALS._player._percent - 1);
if ((_actionIndex == 12) && (BF_GLOBALS._player._percent > 50))
BF_GLOBALS._player.changeZoom(BF_GLOBALS._player._percent - 1);
}
void Scene125::Action3::signal() {
Scene125 *scene = (Scene125 *)BF_GLOBALS._sceneManager._scene;
SceneObject *owner = static_cast<SceneObject *>(this->_owner);
switch (_actionIndex++) {
case 0:
break;
case 1: {
Common::Point destPos(202, 94);
NpcMover *mover = new NpcMover();
owner->addMover(mover, &destPos, this);
break;
}
case 2: {
Common::Point destPos(275, 84);
NpcMover *mover = new NpcMover();
owner->addMover(mover, &destPos, this);
break;
}
case 3:
scene->_soundExt2.fadeSound(20);
owner->fixPriority(70);
owner->animate(ANIM_MODE_5, this);
break;
case 4: {
Common::Point destPos(375, 111);
NpcMover *mover = new NpcMover();
owner->addMover(mover, &destPos, this);
break;
}
case 5:
owner->setStrip(2);
owner->setFrame(1);
owner->animate(ANIM_MODE_5, this);
break;
case 6: {
Common::Point destPos(347, 145);
NpcMover *mover = new NpcMover();
owner->addMover(mover, &destPos, this);
break;
}
case 7:
owner->setStrip(3);
owner->setFrame(1);
owner->animate(ANIM_MODE_5, this);
break;
case 8: {
Common::Point destPos(96, 71);
NpcMover *mover = new NpcMover();
owner->addMover(mover, &destPos, this);
owner->_moveDiff.x = 6;
owner->_moveDiff.y = 6;
owner->setPriority(80);
break;
}
case 9:
owner->setPosition(Common::Point(85, 76));
owner->setStrip(4);
owner->setFrame(1);
owner->changeZoom(100);
owner->animate(ANIM_MODE_5, this);
break;
case 10: {
scene->_action5.signal();
scene->_soundExt1.play(25);
Common::Point destPos(154, 94);
NpcMover *mover = new NpcMover();
owner->addMover(mover, &destPos, this);
break;
}
case 11:
break;
case 12:
scene->_object1.setPosition(owner->_position);
scene->_object1.changeZoom(2);
scene->_object1.show();
setDelay(1);
case 13:
BF_GLOBALS._sound1.play(6);
scene->_object1.changeZoom(4);
scene->_object1.setPosition(Common::Point(148, 88));
setDelay(1);
break;
case 14:
scene->_object1.changeZoom(8);
scene->_object1.setPosition(Common::Point(167, 97));
setDelay(1);
break;
case 15:
scene->_object1.changeZoom(16);
scene->_object1.setPosition(Common::Point(197, 104));
scene->_object4.show();
scene->_object3.show();
scene->_object4.changeZoom(16);
scene->_object4.setPosition(Common::Point(scene->_object1._position.x - 9, scene->_object1._position.y - 8));
scene->_object3.changeZoom(16);
scene->_object3.setPosition(Common::Point(scene->_object1._position.x + 5, scene->_object1._position.y - 8));
setDelay(1);
break;
case 16:
scene->_object1.changeZoom(32);
scene->_object1.setPosition(Common::Point(197, 104));
scene->_object4.changeZoom(32);
scene->_object4.setPosition(Common::Point(scene->_object1._position.x - 17, scene->_object1._position.y - 15));
scene->_object3.changeZoom(32);
scene->_object3.setPosition(Common::Point(scene->_object1._position.x + 12, scene->_object1._position.y - 15));
setDelay(1);
break;
case 17:
scene->_object1.changeZoom(64);
scene->_object1.setPosition(Common::Point(198, 114));
scene->_object4.changeZoom(64);
scene->_object4.setPosition(Common::Point(scene->_object1._position.x - 34, scene->_object1._position.y - 29));
scene->_object3.changeZoom(64);
scene->_object3.setPosition(Common::Point(scene->_object1._position.x + 23, scene->_object1._position.y - 29));
setDelay(1);
break;
case 18:
scene->_object1.changeZoom(100);
scene->_object1.setPosition(Common::Point(160, 112));
scene->_object4.changeZoom(100);
scene->_object4.setPosition(Common::Point(scene->_object1._position.x - 51, scene->_object1._position.y - 45));
scene->_object3.changeZoom(100);
scene->_object3.setPosition(Common::Point(scene->_object1._position.x + 42, scene->_object1._position.y - 45));
scene->_object4.animate(ANIM_MODE_5, this);
scene->_object3.animate(ANIM_MODE_5, this);
setDelay(1);
break;
case 19:
break;
case 20:
setDelay(30);
break;
case 21:
BF_GLOBALS._sceneManager.changeScene(140);
break;
default:
break;
}
}
void Scene125::Action3::dispatch() {
SceneObject *owner = static_cast<SceneObject *>(this->_owner);
Action::dispatch();
if ((_actionIndex == 9) && (owner->_percent > 70))
owner->changeZoom(owner->_percent - 1);
}
void Scene125::Action4::signal() {
Scene125 *scene = (Scene125 *)BF_GLOBALS._sceneManager._scene;
SceneObject *owner = static_cast<SceneObject *>(this->_owner);
switch (_actionIndex++) {
case 0:
setDelay(180);
break;
case 1: {
owner->setPriority(scene->_object2._priority - 1);
Common::Point destPos(66, 168);
NpcMover *mover = new NpcMover();
owner->addMover(mover, &destPos, this);
break;
}
case 2:
owner->animate(ANIM_MODE_5, this);
break;
case 3: {
Common::Point destPos(307, 106);
NpcMover *mover = new NpcMover();
owner->addMover(mover, &destPos, this);
break;
}
case 4:
owner->remove();
break;
default:
break;
}
}
void Scene125::Action4::dispatch() {
SceneObject *owner = static_cast<SceneObject *>(this->_owner);
Action::dispatch();
if ((_actionIndex == 4) && (owner->_percent > 80))
owner->changeZoom(owner->_percent - 1);
}
void Scene125::Action5::signal() {
SceneObject *owner = static_cast<SceneObject *>(this->_owner);
if (_actionIndex++ == 1) {
Common::Point destPos(162, 103);
NpcMover *mover = new NpcMover();
owner->addMover(mover, &destPos, this);
}
}
void Scene125::Action6::signal() {
SceneObject *owner = static_cast<SceneObject *>(this->_owner);
switch (_actionIndex++) {
case 0:
setDelay(60);
break;
case 1: {
Common::Point destPos(410, 181);
NpcMover *mover = new NpcMover();
owner->addMover(mover, &destPos, this);
break;
}
case 2:
owner->remove();
default:
break;
}
}
void Scene125::Action6::dispatch() {
SceneObject *owner = static_cast<SceneObject *>(this->_owner);
Action::dispatch();
if ((_actionIndex == 2) && (owner->_percent < 100))
owner->changeZoom(owner->_percent + 1);
}
void Scene125::postInit(SceneObjectList *OwnerList) {
SceneExt::postInit();
loadScene(120);
_object4.postInit();
_object4.setVisage(124);
_object4.setPosition(Common::Point(0, 0));
_object4.setStrip(1);
_object4.setFrame(1);
_object4.fixPriority(251);
_object4.hide();
_object3.postInit();
_object3.setVisage(124);
_object3.setPosition(Common::Point(0, 0));
_object3.setStrip(2);
_object3.setFrame(1);
_object3.fixPriority(251);
_object3.hide();
BF_GLOBALS._player.postInit();
BF_GLOBALS._player.setVisage(127);
BF_GLOBALS._player.setPosition(Common::Point(160, 110));
BF_GLOBALS._player.setStrip(1);
BF_GLOBALS._player.setFrame(1);
BF_GLOBALS._player.changeZoom(100);
BF_GLOBALS._player.fixPriority(68);
BF_GLOBALS._player._moveDiff.x = 6;
BF_GLOBALS._player._moveDiff.y = 6;
BF_GLOBALS._player.disableControl();
_object5.postInit();
_object5.setVisage(128);
_object5.setPosition(Common::Point(150, 117));
_object5.fixPriority(68);
_object5._moveDiff.x = 6;
_object5._moveDiff.y = 6;
_object9.postInit();
_object9.setVisage(126);
_object9.setPosition(Common::Point(124, 106));
_object9.setStrip(4);
_object9.fixPriority(90);
_object9._moveDiff.x = 3;
_object9._moveDiff.y = 3;
_object1.postInit();
_object1.setVisage(130);
_object1.setPosition(Common::Point(139, 88));
_object1.setStrip(1);
_object1.setFrame(1);
_object1.changeZoom(100);
_object1.fixPriority(250);
_object1.hide();
_object8.postInit();
_object8.setVisage(126);
_object8.setPosition(Common::Point(89, 181));
_object8.setStrip(3);
_object8._moveDiff.x = 6;
_object8._moveDiff.y = 6;
_object6.postInit();
_object6.setVisage(126);
_object6.setPosition(Common::Point(289, 128));
_object6.fixPriority(69);
_object6._moveDiff.x = 6;
_object6._moveDiff.y = 6;
_object6.setAction(&_action1);
_object2.postInit();
_object2.setVisage(126);
_object2.setPosition(Common::Point(214, 105));
_object2.setStrip(2);
_object2.setFrame(1);
_object2.changeZoom(100);
_object2.fixPriority(63);
_object2.hide();
_object7.postInit();
_object7.setVisage(126);
_object7.setPosition(Common::Point(87, 76));
_object7.setStrip(6);
_object7.setFrame(6);
_object7.changeZoom(80);
_object7._moveDiff.x = 4;
_object7._moveDiff.y = 4;
_object7.setAction(&_action6);
BF_GLOBALS._sound1.play(5);
setAction(&_action2);
_object5.setAction(&_action3);
_object8.setAction(&_action4);
_object9.setAction(&_action5);
}
/*--------------------------------------------------------------------------
* Scene 180 - Front of Home
*

View file

@ -311,6 +311,51 @@ public:
virtual void process(Event &event);
};
class Scene125: public SceneExt {
class Action1: public Action {
public:
virtual void signal();
};
class Action2: public Action {
public:
virtual void signal();
virtual void dispatch();
};
class Action3: public Action {
public:
virtual void signal();
virtual void dispatch();
};
class Action4: public Action {
public:
virtual void signal();
virtual void dispatch();
};
class Action5: public Action {
public:
virtual void signal();
};
class Action6: public Action {
public:
virtual void signal();
virtual void dispatch();
};
public:
Action1 _action1;
Action2 _action2;
Action3 _action3;
Action4 _action4;
Action5 _action5;
Action6 _action6;
NamedObject _object1, _object2, _object3, _object4, _object5;
NamedObject _object6, _object7, _object8, _object9;
ASoundExt _soundExt1;
ASoundExt _soundExt2;
void postInit(SceneObjectList *OwnerList);
};
class Scene180: public SceneExt {
/* Objects */
class Vechile: public NamedObject {