TSAGE: Implemented Scene #1500 - Ringworld Space-port

This commit is contained in:
Paul Gilbert 2011-02-27 21:42:19 +11:00
parent 685c47f63f
commit b702cd0fdf
3 changed files with 165 additions and 2 deletions

View File

@ -61,9 +61,10 @@ Scene *SceneFactory::createScene(int sceneNumber) {
case 1000: return new Scene1000();
// Fleeing planet cutscene
case 1001: return new Scene1001();
//
// Unused
case 1250: return new Scene1250();
// Ringworld Space-port
case 1500: return new Scene1500();
default:
error("Unknown scene number - %d", sceneNumber);

View File

@ -654,6 +654,146 @@ void Scene1250::postInit(SceneObjectList *OwnerList) {
}
}
/*--------------------------------------------------------------------------
* Scene 1500 - Ringworld Space-port
*
*--------------------------------------------------------------------------*/
void Scene1500::Action1::signal() {
Scene1500 *scene = (Scene1500 *)_globals->_sceneManager._scene;
switch (_actionIndex++) {
case 0: {
scene->_object1.postInit();
scene->_object1.setVisage(1501);
scene->_object1._moveDiff = Common::Point(2, 1);
scene->_object1.setPosition(Common::Point(204, 85));
scene->_object1.animate(ANIM_MODE_2, NULL);
scene->_object1._numFrames = 3;
scene->_object1.changeZoom(-1);
Common::Point pt(238, 121);
PlayerMover *mover = new PlayerMover();
scene->_object1.addMover(mover, &pt, this);
break;
}
case 1: {
Common::Point pt(312, 145);
PlayerMover *mover = new PlayerMover();
scene->_object1.addMover(mover, &pt, this);
break;
}
case 2: {
scene->_object1.setStrip(2);
scene->_object1.setFrame(1);
scene->_object1._moveDiff.y = 2;
scene->_object1._numFrames = 5;
Common::Point pt(310, 150);
PlayerMover *mover = new PlayerMover();
scene->_object1.addMover(mover, &pt, this);
break;
}
case 3: {
Common::Point pt(304, 165);
PlayerMover *mover = new PlayerMover();
scene->_object1.addMover(mover, &pt, this);
break;
}
case 4: {
scene->_object1._numFrames = 3;
scene->_object1.setStrip2(3);
scene->_object1.animate(ANIM_MODE_2, this);
Common::Point pt(94, 175);
PlayerMover *mover = new PlayerMover();
scene->_object1.addMover(mover, &pt, this);
break;
}
case 5:
setDelay(30);
break;
case 6:
scene->_soundHandler.startSound(123);
scene->_object1.setStrip2(4);
scene->_object1.setFrame(1);
scene->_object1.animate(ANIM_MODE_5, this);
break;
case 7:
scene->_object1.setStrip2(5);
scene->_object1.animate(ANIM_MODE_2, NULL);
scene->_soundHandler.startSound(124, this);
break;
case 8:
_globals->_soundHandler.startSound(126, this);
break;
case 9:
_globals->_soundHandler.startSound(127);
_globals->_sceneManager.changeScene(2000);
break;
}
}
void Scene1500::Action2::signal() {
Scene1500 *scene = (Scene1500 *)_globals->_sceneManager._scene;
switch (_actionIndex++) {
case 0:
setDelay(6);
break;
case 1: {
scene->_object2.postInit();
scene->_object2.setVisage(1502);
scene->_object2.setPriority2(255);
scene->_object2.changeZoom(5);
scene->_object2._frame = 1;
scene->_object2._moveDiff = Common::Point(1, 1);
scene->_object2.setPosition(Common::Point(104, 184));
scene->_object2.animate(ANIM_MODE_2, NULL);
Common::Point pt(118, 147);
NpcMover *mover = new NpcMover();
scene->_object2.addMover(mover, &pt, this);
break;
}
case 2: {
scene->_object2._moveDiff.x = 5;
scene->_object2.changeZoom(-1);
Common::Point pt(-55, 200);
NpcMover *mover = new NpcMover();
scene->_object2.addMover(mover, &pt, this);
break;
}
case 3:
scene->_soundHandler.proc4();
_globals->_stripNum = 1505;
_globals->_sceneManager.changeScene(1505);
break;
}
}
/*--------------------------------------------------------------------------*/
void Scene1500::postInit(SceneObjectList *OwnerList) {
loadScene(1500);
Scene::postInit();
if ((_globals->_stripNum == 1500) || ((_globals->_stripNum != 1504) && (_globals->_stripNum != 2751))) {
_globals->_soundHandler.startSound(120);
setZoomPercents(105, 20, 145, 100);
setAction(&_action1);
} else {
setZoomPercents(150, 5, 200, 100);
_object1.postInit();
_object1.setVisage(1501);
_object1.setStrip2(5);
_object1.setPosition(Common::Point(94, 175));
_object1.animate(ANIM_MODE_2, NULL);
setAction(&_action2);
}
}
} // End of namespace tSage

View File

@ -110,6 +110,28 @@ public:
virtual void postInit(SceneObjectList *OwnerList = NULL);
};
class Scene1500: public Scene {
public:
/* Actions */
class Action1: public Action {
public:
virtual void signal();
};
class Action2: public Action {
public:
virtual void signal();
};
public:
SoundHandler _soundHandler;
Action1 _action1;
Action2 _action2;
SceneObject _object1, _object2, _object3;
virtual void postInit(SceneObjectList *OwnerList = NULL);
};
} // End of namespace tSage
#endif