scummvm/engines/tsage/ringworld/ringworld_scenes2.cpp
2011-10-02 19:59:13 +11:00

933 lines
24 KiB
C++

/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
*/
#include "common/config-manager.h"
#include "tsage/ringworld/ringworld_scenes2.h"
#include "tsage/scenes.h"
#include "tsage/tsage.h"
#include "tsage/staticres.h"
namespace TsAGE {
namespace Ringworld {
/*--------------------------------------------------------------------------
* Scene 1000 - Title Screen
*
*--------------------------------------------------------------------------*/
void Scene1000::Action1::signal() {
Scene1000 *scene = (Scene1000 *)g_globals->_sceneManager._scene;
switch (_actionIndex++) {
case 0:
g_globals->_player.disableControl();
setDelay(10);
break;
case 1:
scene->_object4.postInit();
scene->_object4.setVisage(1001);
scene->_object4._frame = 1;
scene->_object4.setStrip2(5);
scene->_object4.changeZoom(100);
scene->_object4.animate(ANIM_MODE_2, NULL);
scene->_object4.setPosition(Common::Point(403, 163));
setDelay(90);
break;
case 2: {
SceneItem::display(0, 0);
scene->_object4.remove();
scene->_object1.changeZoom(-1);
NpcMover *mover = new NpcMover();
Common::Point pt(180, 100);
scene->_object1.addMover(mover, &pt, this);
break;
}
case 3:
g_globals->_sceneManager.changeScene(1400);
break;
}
}
void Scene1000::Action2::signal() {
switch (_actionIndex++) {
case 0:
g_globals->_player.disableControl();
setDelay(10);
break;
case 1:
SceneItem::display(1000, 0, SET_Y, 20, SET_FONT, 2, SET_BG_COLOR, -1,
SET_EXT_BGCOLOR, 35, SET_WIDTH, 200, SET_KEEP_ONSCREEN, 1, LIST_END);
setDelay(180);
break;
case 2:
SceneItem::display(0, 0);
g_globals->_sceneManager.changeScene(2000);
break;
default:
break;
}
}
void Scene1000::Action3::signal() {
Scene1000 *scene = (Scene1000 *)g_globals->_sceneManager._scene;
switch (_actionIndex++) {
case 0:
g_globals->_sceneManager._scene->loadBackground(0, 0);
setDelay(60);
break;
case 1: {
NpcMover *mover = new NpcMover();
Common::Point pt(158, 31);
scene->_object3.addMover(mover, &pt, this);
break;
}
case 2:
case 3:
setDelay(60);
break;
case 4:
g_globals->_player.show();
setDelay(240);
break;
case 5: {
g_globals->_player.enableControl();
const char *SEEN_INTRO = "seen_intro";
if (!ConfMan.hasKey(SEEN_INTRO) || !ConfMan.getBool(SEEN_INTRO)) {
// First time being played, so show the introduction
ConfMan.setBool(SEEN_INTRO, true);
ConfMan.flushToDisk();
setDelay(1);
} else {
// Prompt user for whether to start play or watch introduction
g_globals->_player.enableControl();
if (MessageDialog::show2(WATCH_INTRO_MSG, START_PLAY_BTN_STRING, INTRODUCTION_BTN_STRING) == 0) {
_actionIndex = 20;
g_globals->_soundHandler.fadeOut(this);
} else {
setDelay(1);
}
}
g_globals->_player.disableControl();
break;
}
case 6: {
scene->_object3.remove();
g_globals->_player.setStrip2(2);
NpcMover *mover = new NpcMover();
Common::Point pt(480, 100);
g_globals->_player.addMover(mover, &pt, this);
break;
}
case 7:
g_globals->_scenePalette.loadPalette(1002);
g_globals->_scenePalette.refresh();
g_globals->_scenePalette.addRotation(80, 95, -1);
scene->_object3.postInit();
scene->_object3.setVisage(1002);
scene->_object3.setStrip(1);
scene->_object3.setPosition(Common::Point(284, 122));
scene->_object3.changeZoom(1);
zoom(true);
setDelay(200);
break;
case 8:
zoom(false);
setDelay(10);
break;
case 9:
scene->_object3.setStrip(2);
scene->_object3.setPosition(Common::Point(285, 155));
zoom(true);
setDelay(400);
break;
case 10:
zoom(false);
setDelay(10);
break;
case 11:
scene->_object3.setStrip(3);
scene->_object3.setPosition(Common::Point(279, 172));
zoom(true);
setDelay(240);
break;
case 12:
zoom(false);
setDelay(10);
break;
case 13:
scene->_object3.setStrip(4);
scene->_object3.setPosition(Common::Point(270, 128));
zoom(true);
setDelay(300);
break;
case 14:
zoom(false);
setDelay(10);
break;
case 15:
scene->_object3.setStrip(1);
scene->_object3.setFrame(2);
scene->_object3.setPosition(Common::Point(283, 137));
zoom(true);
setDelay(300);
break;
case 16:
zoom(false);
setDelay(10);
break;
case 17:
scene->_object3.setStrip(5);
scene->_object3.setFrame(1);
scene->_object3.setPosition(Common::Point(292, 192));
zoom(true);
setDelay(300);
break;
case 18:
zoom(false);
g_globals->_scenePalette.clearListeners();
g_globals->_soundHandler.fadeOut(this);
break;
case 19:
g_globals->_sceneManager.changeScene(10);
break;
case 20:
g_globals->_sceneManager.changeScene(30);
break;
default:
break;
}
}
void Scene1000::Action3::zoom(bool up) {
Scene1000 *scene = (Scene1000 *)g_globals->_sceneManager._scene;
if (up) {
while ((scene->_object3._percent < 100) && !g_vm->shouldQuit()) {
scene->_object3.changeZoom(MIN(scene->_object3._percent + 5, 100));
g_globals->_sceneObjects->draw();
g_globals->_events.delay(1);
}
} else {
while ((scene->_object3._percent > 0) && !g_vm->shouldQuit()) {
scene->_object3.changeZoom(MAX(scene->_object3._percent - 5, 0));
g_globals->_sceneObjects->draw();
g_globals->_events.delay(1);
}
}
}
/*--------------------------------------------------------------------------*/
void Scene1000::postInit(SceneObjectList *OwnerList) {
Scene::postInit();
setZoomPercents(0, 100, 200, 100);
loadScene(1000);
if (g_globals->_sceneManager._previousScene == 2000) {
setZoomPercents(150, 10, 180, 100);
_object1.postInit();
_object1.setVisage(1001);
_object1._strip = 7;
_object1.animate(ANIM_MODE_2, 0);
_object1._moveDiff = Common::Point(1, 1);
_object1.setPosition(Common::Point(120, 180));
setAction(&_action2);
g_globals->_sceneManager._scene->_sceneBounds.center(_object1._position.x, _object1._position.y);
g_globals->_sceneManager._scene->_sceneBounds.contain(g_globals->_sceneManager._scene->_backgroundBounds);
g_globals->_sceneOffset.x = (g_globals->_sceneManager._scene->_sceneBounds.left / 160) * 160;
g_globals->_soundHandler.play(114);
} else if (g_globals->_sceneManager._previousScene == 2222) {
setZoomPercents(150, 10, 180, 100);
_object1.postInit();
_object1.setVisage(1001);
_object1._strip = 7;
_object1.animate(ANIM_MODE_2, 0);
_object1._moveDiff = Common::Point(2, 2);
_object1.setPosition(Common::Point(120, 180));
g_globals->_sceneManager._scene->_sceneBounds.center(_object1._position.x, _object1._position.y);
g_globals->_sceneManager._scene->_sceneBounds.contain(g_globals->_sceneManager._scene->_backgroundBounds);
g_globals->_sceneOffset.x = (g_globals->_sceneManager._scene->_sceneBounds.left / 160) * 160;
setAction(&_action1);
} else {
g_globals->_soundHandler.play(4);
setZoomPercents(0, 10, 30, 100);
_object3.postInit();
_object3.setVisage(1050);
_object3.changeZoom(-1);
_object3.setPosition(Common::Point(158, 0));
g_globals->_player.postInit();
g_globals->_player.setVisage(1050);
g_globals->_player.setStrip(3);
g_globals->_player.setPosition(Common::Point(160, 191));
g_globals->_player._moveDiff.x = 12;
g_globals->_player.hide();
g_globals->_player.disableControl();
g_globals->_sceneManager._scene->_sceneBounds.center(_object3._position.x, _object3._position.y);
setAction(&_action3);
}
}
/*--------------------------------------------------------------------------
* Scene 1001 - Fleeing planet cutscene
*
*--------------------------------------------------------------------------*/
void Scene1001::Action1::signal() {
Scene1001 *scene = (Scene1001 *)g_globals->_sceneManager._scene;
switch (_actionIndex++) {
case 0:
setDelay(10);
break;
case 1:
scene->_object3.animate(ANIM_MODE_5, this);
break;
case 2: {
Common::Point pt(108, 171);
NpcMover *mover = new NpcMover();
scene->_object3.addMover(mover, &pt, this);
break;
}
case 3: {
Common::Point pt(170, 159);
NpcMover *mover = new NpcMover();
scene->_object3.addMover(mover, &pt, this);
break;
}
case 4: {
scene->_object2.postInit();
scene->_object2.setVisage(16);
scene->_object2.setStrip2(4);
scene->_object2.setPosition(Common::Point(61, 177));
scene->_object2.animate(ANIM_MODE_5, this);
Common::Point pt(320, 100);
NpcMover *mover = new NpcMover();
scene->_object3.addMover(mover, &pt, this);
break;
}
case 5: {
Common::Point pt(82, 166);
NpcMover *mover = new NpcMover();
scene->_object2.addMover(mover, &pt, this);
break;
}
case 6: {
Common::Point pt(64, 149);
NpcMover *mover = new NpcMover();
scene->_object2.addMover(mover, &pt, this);
break;
}
case 7: {
Common::Point pt(15, 136);
NpcMover *mover = new NpcMover();
scene->_object2.addMover(mover, &pt, this);
break;
}
case 8: {
Common::Point pt(-5, 120);
NpcMover *mover = new NpcMover();
scene->_object2.addMover(mover, &pt, this);
break;
}
case 9: {
scene->_object1.postInit();
scene->_object1.setVisage(16);
scene->_object1.setStrip2(1);
scene->_object1.setFrame(1);
scene->_object1.setPosition(Common::Point(-75, 87));
scene->_object1.animate(ANIM_MODE_2, NULL);
Common::Point pt(0, 100);
NpcMover *mover = new NpcMover();
scene->_object1.addMover(mover, &pt, this);
break;
}
case 10: {
Common::Point pt1(107, 115);
NpcMover *mover1 = new NpcMover();
scene->_object1.addMover(mover1, &pt1, NULL);
scene->_object3.setVisage(16);
scene->_object3.setStrip2(5);
scene->_object3.setFrame2(2);
scene->_object3.setPosition(Common::Point(220, 200));
Common::Point pt2(187, 181);
NpcMover *mover2 = new NpcMover();
scene->_object3.addMover(mover2, &pt2, this);
break;
}
case 11: {
scene->_object2.setVisage(16);
scene->_object2.setStrip2(5);
scene->_object2.setFrame2(1);
scene->_object2.setPosition(Common::Point(211, 0));
Common::Point pt(189, 30);
NpcMover *mover = new NpcMover();
scene->_object2.addMover(mover, &pt, this);
break;
}
case 12:
scene->_stripManager.start(100, this);
break;
case 13: {
scene->_object4.postInit();
scene->_object4.setVisage(16);
scene->_object4.setStrip2(2);
scene->_object4.setFrame(4);
scene->_object4.setPosition(Common::Point(360, 80));
scene->_object4.animate(ANIM_MODE_2, NULL);
Common::Point pt(303, 97);
NpcMover *mover = new NpcMover();
scene->_object4.addMover(mover, &pt, this);
break;
}
case 14:
scene->_stripManager.start(110, this);
break;
case 15:
setDelay(10);
break;
case 16: {
scene->_soundHandler1.play(90);
scene->_object6.postInit();
scene->_object6.setVisage(16);
scene->_object6.setStrip2(6);
scene->_object6.setFrame2(2);
scene->_object6._moveDiff = Common::Point(20, 20);
scene->_object6.fixPriority(20);
scene->_object6.setPosition(Common::Point(scene->_object2._position.x - 6, scene->_object2._position.y + 7));
scene->_object6.animate(ANIM_MODE_5, NULL);
Common::Point pt(scene->_object6._position.x - 70, scene->_object6._position.y + 70);
NpcMover *mover = new NpcMover();
scene->_object6.addMover(mover, &pt, this);
break;
}
case 17: {
scene->_soundHandler1.play(90);
scene->_object6.remove();
scene->_object7.postInit();
scene->_object7.setVisage(16);
scene->_object7.setStrip2(6);
scene->_object7.setFrame2(1);
scene->_object7._moveDiff = Common::Point(20, 20);
scene->_object7.setPosition(Common::Point(scene->_object3._position.x - 28, scene->_object3._position.y - 11));
scene->_object7.fixPriority(200);
scene->_object7.animate(ANIM_MODE_5, NULL);
Common::Point pt(scene->_object7._position.x - 70, scene->_object7._position.y - 70);
NpcMover *mover = new NpcMover();
scene->_object7.addMover(mover, &pt, this);
break;
}
case 18:
scene->_object7.remove();
scene->_object5.postInit();
scene->_object5.setVisage(16);
scene->_object5.setPosition(Common::Point(306, 93));
scene->_object5._strip = 3;
scene->_object5.fixPriority(200);
scene->_object5.animate(ANIM_MODE_2, NULL);
setDelay(30);
break;
case 19: {
g_globals->_soundHandler.play(91);
byte adjustData[4] = {0xff, 0xff, 0xff, 0};
g_globals->_scenePalette.fade(adjustData, false, 0);
scene->_object1._strip = 7;
scene->_object1._frame = 1;
scene->_object1.setPosition(Common::Point(314, 112));
scene->_object1.addMover(NULL);
setDelay(2);
break;
}
case 20:
g_globals->_scenePalette.loadPalette(16);
g_globals->_scenePalette.refresh();
setDelay(6);
break;
case 21:
scene->_object1._numFrames = 15;
scene->_object1.animate(ANIM_MODE_5, this);
break;
case 22:
g_globals->_soundHandler.play(92);
scene->_stripManager.start(111, this);
break;
case 23:
setDelay(60);
break;
case 24:
g_globals->_sceneManager.changeScene(2000);
break;
}
}
/*--------------------------------------------------------------------------*/
void Scene1001::postInit(SceneObjectList *OwnerList) {
loadScene(16);
Scene::postInit();
setZoomPercents(0, 100, 200, 100);
_stripManager.addSpeaker(&_speakerQText);
_stripManager.addSpeaker(&_speakerCText);
_stripManager.addSpeaker(&_speakerCR);
_stripManager.addSpeaker(&_speakerSL);
_speakerQText._color1 = 11;
_object3.postInit();
_object3.setVisage(16);
_object3.setStrip2(4);
_object3.setPosition(Common::Point(61, 177));
g_globals->_soundHandler.play(85);
setAction(&_action1);
}
/*--------------------------------------------------------------------------
* Scene 1250 -
*
*--------------------------------------------------------------------------*/
void Scene1250::Action1::signal() {
Scene1250 *scene = (Scene1250 *)g_globals->_sceneManager._scene;
switch (_actionIndex++) {
case 0:
setDelay(g_globals->_randomSource.getRandomNumber(120) + 60);
break;
case 1:
scene->_object1.animate(ANIM_MODE_5, this);
_actionIndex = 0;
break;
}
}
void Scene1250::Action2::signal() {
Scene1250 *scene = (Scene1250 *)g_globals->_sceneManager._scene;
switch (_actionIndex++) {
case 0:
switch (g_globals->_randomSource.getRandomNumber(2)) {
case 0:
scene->_object2.setPosition(Common::Point(163, 75));
break;
case 1:
scene->_object2.setPosition(Common::Point(109, 65));
break;
case 2:
scene->_object2.setPosition(Common::Point(267, 20));
break;
}
setDelay(30);
break;
case 1:
scene->_object2.animate(ANIM_MODE_5, this);
_actionIndex = 0;
break;
}
}
void Scene1250::Action3::signal() {
Scene1250 *scene = (Scene1250 *)g_globals->_sceneManager._scene;
switch (_actionIndex++) {
case 0:
setDelay(30);
break;
case 1:
scene->_stripManager.start(1251, this);
break;
case 2:
setDelay(6);
break;
case 3:
g_globals->_sceneManager.changeScene(1000);
break;
}
}
void Scene1250::Action4::signal() {
Scene1250 *scene = (Scene1250 *)g_globals->_sceneManager._scene;
switch (_actionIndex++) {
case 0:
setDelay(3);
break;
case 1:
scene->_stripManager.start(1250, this);
break;
case 2:
setDelay(6);
break;
case 3:
g_globals->_sceneManager.changeScene(2000);
break;
}
}
/*--------------------------------------------------------------------------*/
void Scene1250::postInit(SceneObjectList *OwnerList) {
loadScene(1250);
Scene::postInit();
setZoomPercents(0, 100, 200, 100);
_stripManager.addSpeaker(&_speakerQText);
_speakerQText._textPos = Common::Point(120, 120);
_speakerQText._textWidth = 180;
_object1.postInit();
_object1.setVisage(1250);
_object1.setPosition(Common::Point(126, 69));
_object1.setStrip2(1);
_object1._frame = 1;
_object1.setAction(&_action1);
_object2.postInit();
_object2.setVisage(1250);
_object2.setPosition(Common::Point(126, 69));
_object2.setStrip2(2);
_object2.fixPriority(255);
_object2._frame = 1;
_object2.setAction(&_action2);
g_globals->_sceneManager._scene->_sceneBounds.contain(g_globals->_sceneManager._scene->_backgroundBounds);
g_globals->_sceneOffset.x = (g_globals->_sceneManager._scene->_sceneBounds.left / 160) * 160;
if ((g_globals->_sceneManager._previousScene != 2000) || (g_globals->_stripNum != 1250)) {
setAction(&_action4);
} else {
setAction(&_action3);
g_globals->_soundHandler.play(114);
}
}
/*--------------------------------------------------------------------------
* Scene 1400 - Ringworld Wall
*
*--------------------------------------------------------------------------*/
void Scene1400::Action1::signal() {
Scene1400 *scene = (Scene1400 *)g_globals->_sceneManager._scene;
switch (_actionIndex++) {
case 0:
setDelay(5);
break;
case 1: {
SceneItem::display(1400, 0, SET_X, 120, SET_Y, 610, SET_FONT, 2, SET_EXT_BGCOLOR, 23, SET_KEEP_ONSCREEN, -1, LIST_END);
Common::Point pt(160, 700);
NpcMover *mover = new NpcMover();
g_globals->_player.addMover(mover, &pt, this);
break;
}
case 2: {
g_globals->_player.setStrip2(3);
g_globals->_player.changeZoom(100);
Common::Point pt(160, 100);
NpcMover *mover = new NpcMover();
g_globals->_player.addMover(mover, &pt, this);
SceneItem::display(0, 0);
setDelay(360);
break;
}
case 3:
SceneItem::display(1400, 2, SET_X, 60, SET_Y, g_globals->_sceneManager._scene->_sceneBounds.bottom - 80,
SET_FONT, 2, SET_FG_COLOR, 13, SET_POS_MODE, 0, SET_KEEP_ONSCREEN, -1, LIST_END);
setDelay(420);
break;
case 4:
SceneItem::display(0, 0);
setDelay(360);
break;
case 5:
SceneItem::display(1400, 3, SET_X, 60, SET_Y, g_globals->_sceneManager._scene->_sceneBounds.bottom - 80,
SET_FONT, 2, SET_FG_COLOR, 23, SET_POS_MODE, 0, SET_KEEP_ONSCREEN, -1, LIST_END);
setDelay(360);
break;
case 6:
SceneItem::display(0, 0);
break;
case 7: {
g_globals->_player._frame = 1;
g_globals->_player.setStrip2(1);
g_globals->_player._numFrames = 5;
g_globals->_player.animate(ANIM_MODE_5, this);
Common::Point pt(205, 70);
NpcMover *mover = new NpcMover();
g_globals->_player.addMover(mover, &pt, NULL);
g_globals->_sceneManager._fadeMode = FADEMODE_NONE;
scene->loadScene(1402);
break;
}
case 8:
g_globals->_player.setStrip2(2);
g_globals->_player._numFrames = 10;
g_globals->_player.animate(ANIM_MODE_2, NULL);
SceneItem::display(1400, 4, SET_X, 30, SET_Y, g_globals->_player._position.y + 10, SET_FONT, 2,
SET_FG_COLOR, 13, SET_POS_MODE, 0, SET_KEEP_ONSCREEN, -1, LIST_END);
setDelay(300);
break;
case 9: {
SceneItem::display(0, 0);
Common::Point pt(450, 45);
NpcMover *mover = new NpcMover();
g_globals->_player.addMover(mover, &pt, this);
break;
}
case 10:
g_globals->_sceneManager._scrollerRect = Rect(40, 20, 280, 180);
g_globals->_sceneManager._fadeMode = FADEMODE_GRADUAL;
g_globals->_stripNum = 1500;
g_globals->_soundHandler.stop();
g_globals->_sceneManager.changeScene(1500);
break;
}
}
void Scene1400::Action1::dispatch() {
Action::dispatch();
if ((_actionIndex > 3) && (_actionIndex < 9))
g_globals->_sceneText.setPosition(Common::Point(60, g_globals->_sceneManager._scene->_sceneBounds.bottom - 80));
if ((_actionIndex <= 2) && (g_globals->_player._percent > 22))
g_globals->_player.changeZoom(100 - (800 - g_globals->_player._position.y));
if ((_actionIndex >= 9) && (g_globals->_player._percent > 22))
g_globals->_player.changeZoom(100 - (g_globals->_player._position.x - 205));
}
/*--------------------------------------------------------------------------*/
void Scene1400::postInit(SceneObjectList *OwnerList) {
if (g_globals->_stripNum != 1400) {
loadScene(1401);
} else {
loadScene(1402);
}
Scene::postInit();
g_globals->_sceneManager._scrollerRect = Rect(40, 90, 280, 180);
g_globals->_player.postInit();
g_globals->_player.setVisage(1401);
g_globals->_player.animate(ANIM_MODE_2, 0);
g_globals->_player.setStrip2(4);
g_globals->_player.fixPriority(4);
g_globals->_player.disableControl();
g_globals->_player._moveDiff = Common::Point(4, 2);
g_globals->_player.setPosition(Common::Point(160, 800));
g_globals->_sceneManager._scene->_sceneBounds.center(g_globals->_player._position);
g_globals->_sceneManager._scene->_sceneBounds.contain(g_globals->_sceneManager._scene->_backgroundBounds);
g_globals->_sceneOffset.y = (g_globals->_sceneManager._scene->_sceneBounds.top / 100) * 100;
setAction(&_action1);
g_globals->_soundHandler.play(118);
}
/*--------------------------------------------------------------------------
* Scene 1500 - Ringworld Space-port
*
*--------------------------------------------------------------------------*/
void Scene1500::Action1::signal() {
Scene1500 *scene = (Scene1500 *)g_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.play(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.play(124, this);
break;
case 8:
g_globals->_soundHandler.play(126, this);
break;
case 9:
g_globals->_soundHandler.play(127);
g_globals->_sceneManager.changeScene(2000);
break;
}
}
void Scene1500::Action2::signal() {
Scene1500 *scene = (Scene1500 *)g_globals->_sceneManager._scene;
switch (_actionIndex++) {
case 0:
setDelay(6);
break;
case 1: {
scene->_object2.postInit();
scene->_object2.setVisage(1502);
scene->_object2.fixPriority(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.release();
g_globals->_stripNum = 1505;
g_globals->_sceneManager.changeScene(2400);
break;
}
}
/*--------------------------------------------------------------------------*/
void Scene1500::postInit(SceneObjectList *OwnerList) {
loadScene(1500);
Scene::postInit();
if ((g_globals->_stripNum == 1500) || ((g_globals->_stripNum != 1504) && (g_globals->_stripNum != 2751))) {
g_globals->_soundHandler.play(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 Ringworld
} // End of namespace TsAGE