mirror of
https://github.com/libretro/scummvm.git
synced 2024-12-23 18:24:59 +00:00
9dddf76aa7
Conflicts: engines/tsage/ringworld_scenes1.cpp engines/tsage/ringworld_scenes5.cpp engines/tsage/tsage.h
2546 lines
67 KiB
C++
2546 lines
67 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 "graphics/cursorman.h"
|
|
#include "tsage/ringworld_scenes8.h"
|
|
#include "tsage/scenes.h"
|
|
#include "tsage/tsage.h"
|
|
#include "tsage/staticres.h"
|
|
|
|
namespace tSage {
|
|
|
|
void NamedHotspotMult::synchronize(Serializer &s) {
|
|
SceneHotspot::synchronize(s);
|
|
s.syncAsSint16LE(_useLineNum);
|
|
s.syncAsSint16LE(_lookLineNum);
|
|
}
|
|
|
|
void SceneObject7700::synchronize(Serializer &s) {
|
|
SceneObject::synchronize(s);
|
|
if (s.getVersion() >= 3) {
|
|
s.syncAsSint16LE(_lookLineNum);
|
|
s.syncAsSint16LE(_defltLineNum);
|
|
}
|
|
}
|
|
|
|
/*--------------------------------------------------------------------------
|
|
* Scene 7000 - Landing near beach
|
|
*
|
|
*--------------------------------------------------------------------------*/
|
|
|
|
void Scene7000::Action1::signal() {
|
|
// Quinn walks from the lander to the seaside (action6) then discuss with Skeenar
|
|
Scene7000 *scene = (Scene7000 *)_globals->_sceneManager._scene;
|
|
|
|
switch (_actionIndex++) {
|
|
case 0:
|
|
_globals->_player.disableControl();
|
|
setDelay(3);
|
|
break;
|
|
case 1:
|
|
setAction(&scene->_action6, this);
|
|
break;
|
|
case 2:
|
|
scene->_soundHandler.play(252);
|
|
scene->_object8.remove();
|
|
scene->_object1.postInit();
|
|
scene->_object1.setVisage(7003);
|
|
scene->_object1.animate(ANIM_MODE_5, this);
|
|
scene->_object1.setPosition(Common::Point(151, 182));
|
|
scene->_object1.fixPriority(205);
|
|
_globals->_sceneItems.push_front(&scene->_object1);
|
|
break;
|
|
case 3:
|
|
scene->_object1._numFrames = 4;
|
|
scene->_object1.setStrip(2);
|
|
scene->_object1.animate(ANIM_MODE_8, 0, NULL);
|
|
scene->_stripManager.start(7005, this);
|
|
break;
|
|
case 4:
|
|
scene->_object1.animate(ANIM_MODE_2, NULL);
|
|
setDelay(3);
|
|
break;
|
|
case 5:
|
|
_globals->_player.enableControl();
|
|
remove();
|
|
break;
|
|
}
|
|
}
|
|
|
|
/*--------------------------------------------------------------------------*/
|
|
|
|
void Scene7000::Action2::signal() {
|
|
Scene7000 *scene = (Scene7000 *)_globals->_sceneManager._scene;
|
|
|
|
switch (_actionIndex++) {
|
|
case 0:
|
|
_globals->_player.disableControl();
|
|
setDelay(3);
|
|
break;
|
|
case 1:
|
|
_globals->_player.addMover(NULL);
|
|
_globals->_player.setVisage(7006);
|
|
_globals->_player.setStrip(1);
|
|
_globals->_player.setFrame(1);
|
|
_globals->_player.setPosition(Common::Point(_globals->_player._position.x, _globals->_player._position.y + 13));
|
|
_globals->_player.changeZoom(68);
|
|
_globals->_player.animate(ANIM_MODE_5, this);
|
|
scene->_object1.remove();
|
|
break;
|
|
case 2:
|
|
_globals->_sceneManager.changeScene(7100);
|
|
remove();
|
|
break;
|
|
}
|
|
}
|
|
|
|
/*--------------------------------------------------------------------------*/
|
|
|
|
void Scene7000::Action3::dispatch() {
|
|
Scene7000 *scene = (Scene7000 *)_globals->_sceneManager._scene;
|
|
|
|
Action::dispatch();
|
|
if (_actionIndex == 4)
|
|
scene->_object4.setPosition(Common::Point(scene->_object3._position.x, scene->_object3._position.y + 15));
|
|
}
|
|
|
|
/*--------------------------------------------------------------------------*/
|
|
|
|
void Scene7000::Action3::signal() {
|
|
// Lander is landing
|
|
Scene7000 *scene = (Scene7000 *)_globals->_sceneManager._scene;
|
|
|
|
switch (_actionIndex++) {
|
|
case 0:
|
|
setDelay(30);
|
|
scene->setZoomPercents(10, 10, 62, 100);
|
|
scene->_object4.postInit();
|
|
scene->_object4.setVisage(5001);
|
|
scene->_object4.setStrip2(2);
|
|
scene->_object4.animate(ANIM_MODE_8, 0, NULL);
|
|
scene->_object4.setPosition(Common::Point(10, 18));
|
|
scene->_object4.fixPriority(10);
|
|
scene->_object4.changeZoom(100);
|
|
scene->_object4.hide();
|
|
break;
|
|
case 1: {
|
|
NpcMover *mover = new NpcMover();
|
|
Common::Point pt(107, 65);
|
|
scene->_object3.addMover(mover, &pt, this);
|
|
break;
|
|
}
|
|
case 2:
|
|
scene->_object3._moveDiff.y = 1;
|
|
scene->_object3.fixPriority(10);
|
|
scene->_object4.setPosition(Common::Point(scene->_object3._position.x, scene->_object3._position.y + 15));
|
|
scene->_object4.show();
|
|
setDelay(30);
|
|
break;
|
|
case 3: {
|
|
NpcMover *mover = new NpcMover();
|
|
Common::Point pt(107, 92);
|
|
scene->_object3.addMover(mover, &pt, this);
|
|
break;
|
|
}
|
|
case 4:
|
|
scene->_object4.remove();
|
|
_globals->_sceneManager.changeScene(2100);
|
|
remove();
|
|
break;
|
|
}
|
|
}
|
|
|
|
/*--------------------------------------------------------------------------*/
|
|
|
|
void Scene7000::Action4::signal() {
|
|
Scene7000 *scene = (Scene7000 *)_globals->_sceneManager._scene;
|
|
|
|
switch (_actionIndex++) {
|
|
case 0:
|
|
_globals->_player.disableControl();
|
|
scene->_object1.animate(ANIM_MODE_6, this);
|
|
break;
|
|
case 1:
|
|
scene->_object1.hide();
|
|
setDelay(300);
|
|
break;
|
|
case 2:
|
|
_globals->_soundHandler.play(252);
|
|
scene->_object1.show();
|
|
scene->_object1.setStrip(3);
|
|
scene->_object1.setFrame(1);
|
|
scene->_object1.animate(ANIM_MODE_5, this);
|
|
break;
|
|
case 3:
|
|
scene->_object1.setStrip(4);
|
|
scene->_object1.animate(ANIM_MODE_8, 0, NULL);
|
|
_globals->setFlag(81);
|
|
_globals->_player.enableControl();
|
|
remove();
|
|
break;
|
|
}
|
|
}
|
|
|
|
/*--------------------------------------------------------------------------*/
|
|
|
|
void Scene7000::Action5::signal() {
|
|
Scene7000 *scene = (Scene7000 *)_globals->_sceneManager._scene;
|
|
|
|
switch (_actionIndex++) {
|
|
case 0: {
|
|
NpcMover *playerMover = new NpcMover();
|
|
Common::Point pt(88, 121);
|
|
_globals->_player.addMover(playerMover, &pt, this);
|
|
break;
|
|
}
|
|
case 1:
|
|
_globals->_player.checkAngle(&scene->_object1);
|
|
_globals->_soundHandler.play(252);
|
|
scene->_object1.setStrip(2);
|
|
scene->_stripManager.start(7015, this);
|
|
break;
|
|
case 2:
|
|
scene->_object1.setStrip(1);
|
|
scene->_object1.setFrame(4);
|
|
scene->_object1.animate(ANIM_MODE_6, this);
|
|
break;
|
|
case 3: {
|
|
scene->_object1.remove();
|
|
NpcMover *mover = new NpcMover();
|
|
Common::Point pt(31, 94);
|
|
_globals->_player.addMover(mover, &pt, this);
|
|
break;
|
|
}
|
|
case 4: {
|
|
NpcMover *mover = new NpcMover();
|
|
Common::Point pt(11, 94);
|
|
_globals->_player.addMover(mover, &pt, this);
|
|
break;
|
|
}
|
|
case 5: {
|
|
_globals->_player.fixPriority(10);
|
|
NpcMover *mover = new NpcMover();
|
|
Common::Point pt(11, 89);
|
|
_globals->_player.addMover(mover, &pt, this);
|
|
break;
|
|
}
|
|
case 6: {
|
|
NpcMover *mover = new NpcMover();
|
|
Common::Point pt(41, 89);
|
|
_globals->_player.addMover(mover, &pt, this);
|
|
break;
|
|
}
|
|
case 7:
|
|
_globals->clearFlag(36);
|
|
_globals->clearFlag(37);
|
|
_globals->clearFlag(72);
|
|
_globals->clearFlag(13);
|
|
_globals->_sceneManager.changeScene(2100);
|
|
break;
|
|
}
|
|
}
|
|
|
|
/*--------------------------------------------------------------------------*/
|
|
|
|
void Scene7000::Action6::signal() {
|
|
// Quinn walks from the lander to the seaside
|
|
switch (_actionIndex++) {
|
|
case 0:
|
|
_globals->_player.disableControl();
|
|
setDelay(3);
|
|
break;
|
|
case 1: {
|
|
NpcMover *mover = new NpcMover();
|
|
Common::Point pt(12, 91);
|
|
_globals->_player.addMover(mover, &pt, this);
|
|
break;
|
|
}
|
|
case 2: {
|
|
NpcMover *mover = new NpcMover();
|
|
Common::Point pt(8, 91);
|
|
_globals->_player.addMover(mover, &pt, this);
|
|
break;
|
|
}
|
|
case 3: {
|
|
NpcMover *mover = new NpcMover();
|
|
Common::Point pt(31, 96);
|
|
_globals->_player.addMover(mover, &pt, this);
|
|
_globals->_player.fixPriority(-1);
|
|
break;
|
|
}
|
|
case 4: {
|
|
NpcMover *mover = new NpcMover();
|
|
Common::Point pt(83, 117);
|
|
_globals->_player.addMover(mover, &pt, this);
|
|
break;
|
|
}
|
|
case 5: {
|
|
NpcMover *mover = new NpcMover();
|
|
Common::Point pt(95, 121);
|
|
_globals->_player.addMover(mover, &pt, this);
|
|
break;
|
|
}
|
|
case 6:
|
|
_globals->_player.setStrip(3);
|
|
_globals->_player.setFrame(1);
|
|
remove();
|
|
break;
|
|
}
|
|
}
|
|
|
|
/*--------------------------------------------------------------------------*/
|
|
|
|
void Scene7000::Action7::signal() {
|
|
switch (_actionIndex++) {
|
|
case 0:
|
|
_globals->_player.disableControl();
|
|
setDelay(3);
|
|
break;
|
|
case 1:
|
|
setDelay(3);
|
|
break;
|
|
case 2: {
|
|
NpcMover *mover = new NpcMover();
|
|
Common::Point pt(31, 94);
|
|
_globals->_player.addMover(mover, &pt, this);
|
|
break;
|
|
}
|
|
case 3: {
|
|
NpcMover *mover = new NpcMover();
|
|
Common::Point pt(11, 94);
|
|
_globals->_player.addMover(mover, &pt, this);
|
|
break;
|
|
}
|
|
case 4: {
|
|
_globals->_player.fixPriority(10);
|
|
NpcMover *mover = new NpcMover();
|
|
Common::Point pt(11, 89);
|
|
_globals->_player.addMover(mover, &pt, this);
|
|
break;
|
|
}
|
|
case 5: {
|
|
NpcMover *mover = new NpcMover();
|
|
Common::Point pt(41, 89);
|
|
_globals->_player.addMover(mover, &pt, this);
|
|
break;
|
|
}
|
|
case 6:
|
|
if (_globals->getFlag(13))
|
|
_globals->_sceneManager.changeScene(2280);
|
|
else
|
|
_globals->_sceneManager.changeScene(2320);
|
|
break;
|
|
}
|
|
}
|
|
|
|
/*--------------------------------------------------------------------------*/
|
|
|
|
void Scene7000::Hotspot1::doAction(int action) {
|
|
if (action == CURSOR_LOOK)
|
|
SceneItem::display2(7000, 2);
|
|
else
|
|
SceneHotspot::doAction(action);
|
|
}
|
|
|
|
/*--------------------------------------------------------------------------*/
|
|
|
|
void Scene7000::Object1::doAction(int action) {
|
|
// Skeenar
|
|
Scene7000 *scene = (Scene7000 *)_globals->_sceneManager._scene;
|
|
|
|
switch (action) {
|
|
case OBJECT_TRANSLATOR:
|
|
_globals->_player.disableControl();
|
|
RING_INVENTORY._translator._sceneNumber = 7000;
|
|
|
|
if ((RING_INVENTORY._waldos._sceneNumber != 7000) && (RING_INVENTORY._jar._sceneNumber != 7000)) {
|
|
scene->_sceneMode = 7004;
|
|
scene->setAction(&scene->_sequenceManager, scene, 7004, &_globals->_player, this, NULL);
|
|
} else if (RING_INVENTORY._waldos._sceneNumber != 7000) {
|
|
scene->_sceneMode = 7011;
|
|
scene->setAction(&scene->_sequenceManager, scene, 7010, &_globals->_player, &scene->_object1, NULL);
|
|
} else if (RING_INVENTORY._jar._sceneNumber != 7000) {
|
|
scene->_sceneMode = 7012;
|
|
scene->setAction(&scene->_sequenceManager, scene, 7010, &_globals->_player, &scene->_object1, NULL);
|
|
} else {
|
|
scene->_sceneMode = 7015;
|
|
scene->setAction(&scene->_sequenceManager, scene, 7017, &_globals->_player, NULL);
|
|
}
|
|
break;
|
|
case OBJECT_WALDOS:
|
|
_globals->_player.disableControl();
|
|
RING_INVENTORY._waldos._sceneNumber = 7000;
|
|
if (RING_INVENTORY._translator._sceneNumber == 7000) {
|
|
if (RING_INVENTORY._jar._sceneNumber == 7000) {
|
|
scene->_sceneMode = 7015;
|
|
scene->setAction(&scene->_sequenceManager, scene, 7015, &_globals->_player, NULL);
|
|
} else {
|
|
scene->_sceneMode = 7006;
|
|
scene->setAction(&scene->_sequenceManager, scene, 7006, &_globals->_player, NULL);
|
|
}
|
|
} else {
|
|
scene->_sceneMode = 7009;
|
|
scene->setAction(&scene->_sequenceManager, scene, 7009, &_globals->_player, NULL);
|
|
}
|
|
break;
|
|
case OBJECT_JAR:
|
|
_globals->_player.disableControl();
|
|
RING_INVENTORY._jar._sceneNumber = 7000;
|
|
|
|
if (RING_INVENTORY._translator._sceneNumber == 7000) {
|
|
if (RING_INVENTORY._waldos._sceneNumber != 7000) {
|
|
scene->_sceneMode = 7007;
|
|
scene->setAction(&scene->_sequenceManager, scene, 7007, &_globals->_player, &scene->_object1, NULL);
|
|
} else {
|
|
scene->_sceneMode = 7015;
|
|
scene->setAction(&scene->_sequenceManager, scene, 7016, &_globals->_player, NULL);
|
|
}
|
|
} else {
|
|
scene->_sceneMode = 7008;
|
|
scene->setAction(&scene->_sequenceManager, scene, 7008, &_globals->_player, NULL);
|
|
}
|
|
break;
|
|
case CURSOR_LOOK:
|
|
if (_globals->getFlag(81))
|
|
SceneItem::display2(7000, 1);
|
|
else
|
|
SceneItem::display2(7000, 0);
|
|
break;
|
|
case CURSOR_USE:
|
|
if (_globals->getFlag(81)) {
|
|
RING_INVENTORY._stasisBox2._sceneNumber = 1;
|
|
_globals->_player.disableControl();
|
|
scene->setAction(&scene->_action5);
|
|
} else {
|
|
SceneItem::display2(7000, 5);
|
|
}
|
|
break;
|
|
case CURSOR_TALK:
|
|
if (_globals->getFlag(81)) {
|
|
RING_INVENTORY._stasisBox2._sceneNumber = 1;
|
|
_globals->_player.disableControl();
|
|
scene->setAction(&scene->_action5);
|
|
} else if (_globals->getFlag(52)) {
|
|
scene->_sceneMode = 7005;
|
|
scene->setAction(&scene->_sequenceManager, scene, 7013, NULL);
|
|
} else if (_globals->getFlag(13)) {
|
|
scene->_sceneMode = 7002;
|
|
scene->setAction(&scene->_sequenceManager, scene, 7014, NULL);
|
|
} else {
|
|
scene->_sceneMode = 7002;
|
|
scene->setAction(&scene->_sequenceManager, scene, 7002, NULL);
|
|
}
|
|
break;
|
|
default:
|
|
SceneHotspot::doAction(action);
|
|
break;
|
|
}
|
|
}
|
|
|
|
/*--------------------------------------------------------------------------*/
|
|
|
|
void Scene7000::dispatch() {
|
|
Scene7000 *scene = (Scene7000 *)_globals->_sceneManager._scene;
|
|
|
|
if (!_action) {
|
|
if (_globals->_sceneRegions.indexOf(_globals->_player._position) == 8) {
|
|
if (!_globals->getFlag(13)) {
|
|
_globals->_player.disableControl();
|
|
_globals->_player.addMover(NULL);
|
|
SceneItem::display2(7000, 3);
|
|
_sceneMode = 7001;
|
|
setAction(&scene->_sequenceManager, this, 7001, &_globals->_player, NULL);
|
|
} else if (!_globals->getFlag(52)) {
|
|
setAction(&_action2);
|
|
} else {
|
|
_globals->_player.disableControl();
|
|
_sceneMode = 7003;
|
|
setAction(&scene->_sequenceManager, this, 7003, &_globals->_player, NULL);
|
|
}
|
|
}
|
|
if (_globals->_sceneRegions.indexOf(_globals->_player._position) == 9)
|
|
scene->setAction(&scene->_action7);
|
|
}
|
|
Scene::dispatch();
|
|
}
|
|
|
|
/*--------------------------------------------------------------------------*/
|
|
|
|
void Scene7000::postInit(SceneObjectList *OwnerList) {
|
|
loadScene(7000);
|
|
Scene::postInit();
|
|
setZoomPercents(93, 25, 119, 55);
|
|
_stripManager.addSpeaker(&_speakerSKText);
|
|
_stripManager.addSpeaker(&_speakerSKL);
|
|
_stripManager.addSpeaker(&_speakerQText);
|
|
_stripManager.addSpeaker(&_speakerQL);
|
|
_stripManager.addSpeaker(&_speakerQR);
|
|
|
|
_speakerSKText._npc = &_object1;
|
|
_speakerQText._npc = &_globals->_player;
|
|
|
|
_object5.postInit();
|
|
_object5.setVisage(7001);
|
|
_object5.setStrip2(1);
|
|
_object5.animate(ANIM_MODE_2, NULL);
|
|
_object5.setPosition(Common::Point(49, 147));
|
|
_object5.fixPriority(1);
|
|
|
|
_object6.postInit();
|
|
_object6.setVisage(7001);
|
|
_object6.setStrip2(2);
|
|
_object6.animate(ANIM_MODE_2, NULL);
|
|
_object6.setPosition(Common::Point(160, 139));
|
|
_object6.fixPriority(1);
|
|
|
|
_object7.postInit();
|
|
_object7.setVisage(7001);
|
|
_object7.setStrip2(3);
|
|
_object7.animate(ANIM_MODE_2, NULL);
|
|
_object7.setPosition(Common::Point(272, 129));
|
|
_object7.fixPriority(1);
|
|
|
|
_object8.postInit();
|
|
_object8.setVisage(7001);
|
|
_object8.setStrip2(4);
|
|
_object8.animate(ANIM_MODE_2, NULL);
|
|
_object8.setPosition(Common::Point(176, 175));
|
|
_object8.fixPriority(1);
|
|
|
|
if (_globals->getFlag(72)) {
|
|
_object3.postInit();
|
|
_object3.setVisage(5001);
|
|
_object3.setStrip2(1);
|
|
_object3.setPosition(Common::Point(107, 92));
|
|
_object3.changeZoom(100);
|
|
_object3.fixPriority(10);
|
|
|
|
_object1.postInit();
|
|
_object1.setVisage(7003);
|
|
if (_globals->getFlag(81))
|
|
_object1.setStrip(4);
|
|
else
|
|
_object1.setStrip(2);
|
|
_object1.setPosition(Common::Point(87, 129));
|
|
_object1._numFrames = 4;
|
|
_object1.changeZoom(45);
|
|
_object1.animate(ANIM_MODE_8, 0, NULL);
|
|
_globals->_sceneItems.push_back(&_object1);
|
|
}
|
|
_soundHandler.play(251);
|
|
if (_globals->_sceneManager._previousScene == 2100) {
|
|
if (_globals->getFlag(72)) {
|
|
_globals->_player.postInit();
|
|
_globals->_player.setVisage(0);
|
|
_globals->_player.animate(ANIM_MODE_1, NULL);
|
|
SceneObjectWrapper *wrapper = new SceneObjectWrapper();
|
|
_globals->_player.setObjectWrapper(wrapper);
|
|
_globals->_player.setPosition(Common::Point(57, 94));
|
|
_globals->_player.changeZoom(-1);
|
|
_globals->_player.fixPriority(10);
|
|
if (_globals->getFlag(81)) {
|
|
setAction(&_action4);
|
|
} else {
|
|
_object1.setPosition(Common::Point(151, 182));
|
|
_object1.changeZoom(100);
|
|
setAction(&_action1);
|
|
}
|
|
} else {
|
|
_globals->_soundHandler.play(250);
|
|
_globals->setFlag(72);
|
|
|
|
_object3.postInit();
|
|
_object3.setVisage(5001);
|
|
_object3.setStrip2(1);
|
|
_object3.animate(ANIM_MODE_1, NULL);
|
|
_object3.setPosition(Common::Point(307, 0));
|
|
_object3.changeZoom(-1);
|
|
setAction(&_action3);
|
|
}
|
|
} else if (_globals->_sceneManager._previousScene == 2280) {
|
|
_globals->_player.postInit();
|
|
_globals->_player.setVisage(2170);
|
|
_globals->_player.animate(ANIM_MODE_1, NULL);
|
|
_globals->_player.setObjectWrapper(new SceneObjectWrapper());
|
|
_globals->_player.setPosition(Common::Point(57, 94));
|
|
_globals->_player.changeZoom(-1);
|
|
_globals->_player.fixPriority(10);
|
|
_globals->_player.disableControl();
|
|
_sceneMode = 7001;
|
|
setAction(&_action6, this);
|
|
if (!_globals->getFlag(81)) {
|
|
_object1.setPosition(Common::Point(151, 182));
|
|
_object1.changeZoom(100);
|
|
}
|
|
_object8.remove();
|
|
_object9.remove();
|
|
} else if (_globals->_sceneManager._previousScene == 2320) {
|
|
_globals->_player.postInit();
|
|
_globals->_player.setVisage(0);
|
|
_globals->_player.animate(ANIM_MODE_1, NULL);
|
|
SceneObjectWrapper *wrapper = new SceneObjectWrapper();
|
|
_globals->_player.setObjectWrapper(wrapper);
|
|
_globals->_player.setPosition(Common::Point(57, 94));
|
|
_globals->_player.changeZoom(-1);
|
|
_globals->_player.fixPriority(10);
|
|
_sceneMode = 7001;
|
|
setAction(&_action6, this);
|
|
} else {
|
|
_globals->setFlag(72);
|
|
|
|
_object3.postInit();
|
|
_object3.setVisage(5001);
|
|
_object3.setStrip2(1);
|
|
_object3.setPosition(Common::Point(307, 0));
|
|
_soundHandler.play(151);
|
|
_soundHandler.holdAt(true);
|
|
_globals->_soundHandler.play(250);
|
|
setAction(&_action3);
|
|
}
|
|
|
|
_hotspot1.setBounds(Rect(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT));
|
|
_globals->_sceneItems.push_back(&_hotspot1);
|
|
}
|
|
|
|
/*--------------------------------------------------------------------------*/
|
|
|
|
void Scene7000::signal() {
|
|
Scene7000 *scene = (Scene7000 *)_globals->_sceneManager._scene;
|
|
switch (_sceneMode) {
|
|
case 7001:
|
|
case 7002:
|
|
case 7004:
|
|
case 7005:
|
|
case 7006:
|
|
case 7007:
|
|
case 7008:
|
|
case 7009:
|
|
_globals->_player.enableControl();
|
|
break;
|
|
case 7003:
|
|
_sceneMode = 7001;
|
|
setAction(&scene->_sequenceManager, this, 7001, &_globals->_player, NULL);
|
|
break;
|
|
case 7011:
|
|
_sceneMode = 7005;
|
|
setAction(&scene->_sequenceManager, this, 7005, &_globals->_player, NULL);
|
|
break;
|
|
case 7012:
|
|
_sceneMode = 7005;
|
|
setAction(&scene->_sequenceManager, this, 7012, &_globals->_player, NULL);
|
|
break;
|
|
case 7015:
|
|
setAction(&_action4);
|
|
break;
|
|
}
|
|
}
|
|
|
|
|
|
/*--------------------------------------------------------------------------
|
|
* Scene 7100 - Underwater: swimming
|
|
*
|
|
*--------------------------------------------------------------------------*/
|
|
|
|
void Scene7100::Action3::signal() {
|
|
Scene7100 *scene = (Scene7100 *)_globals->_sceneManager._scene;
|
|
|
|
switch (_actionIndex++) {
|
|
case 0:
|
|
setDelay(1);
|
|
break;
|
|
case 1: {
|
|
Common::Point pt(433, 308);
|
|
NpcMover *mover = new NpcMover();
|
|
scene->_object4.addMover(mover, &pt, this);
|
|
break;
|
|
}
|
|
case 2:
|
|
scene->_object4.remove();
|
|
remove();
|
|
break;
|
|
}
|
|
}
|
|
|
|
void Scene7100::Action4::signal() {
|
|
Scene7100 *scene = (Scene7100 *)_globals->_sceneManager._scene;
|
|
|
|
switch (_actionIndex++) {
|
|
case 0:
|
|
setDelay(_globals->_randomSource.getRandomNumber(1) + 1);
|
|
break;
|
|
case 1: {
|
|
scene->_object5.setStrip(3);
|
|
Common::Point pt(85, 52);
|
|
NpcMover *mover = new NpcMover();
|
|
scene->_object5.addMover(mover, &pt, this);
|
|
break;
|
|
}
|
|
case 2: {
|
|
scene->_object5.setStrip(4);
|
|
Common::Point pt(20, 52);
|
|
NpcMover *mover = new NpcMover();
|
|
scene->_object5.addMover(mover, &pt, this);
|
|
break;
|
|
}
|
|
case 3:
|
|
_actionIndex = 0;
|
|
setDelay(1);
|
|
break;
|
|
}
|
|
}
|
|
|
|
void Scene7100::Action5::signal() {
|
|
Scene7100 *scene = (Scene7100 *)_globals->_sceneManager._scene;
|
|
|
|
switch (_actionIndex++) {
|
|
case 0:
|
|
setDelay(1);
|
|
break;
|
|
case 1: {
|
|
Common::Point pt(59, 151);
|
|
NpcMover *mover = new NpcMover();
|
|
scene->_object9.addMover(mover, &pt, this);
|
|
break;
|
|
}
|
|
case 2: {
|
|
scene->_object9.setStrip2(1);
|
|
Common::Point pt(127, 144);
|
|
NpcMover *mover = new NpcMover();
|
|
scene->_object9.addMover(mover, &pt, this);
|
|
break;
|
|
}
|
|
case 3: {
|
|
scene->_object9.setStrip2(2);
|
|
scene->_object9.fixPriority(180);
|
|
Common::Point pt(8, 181);
|
|
NpcMover *mover = new NpcMover();
|
|
scene->_object9.addMover(mover, &pt, this);
|
|
break;
|
|
}
|
|
case 4: {
|
|
scene->_object9.remove();
|
|
remove();
|
|
}
|
|
}
|
|
}
|
|
|
|
void Scene7100::Action6::signal() {
|
|
Scene7100 *scene = (Scene7100 *)_globals->_sceneManager._scene;
|
|
|
|
switch (_actionIndex++) {
|
|
case 0:
|
|
setDelay(1);
|
|
scene->_object10.fixPriority(8);
|
|
scene->_object10.setPosition(Common::Point(155, 187));
|
|
|
|
scene->_object11.fixPriority(8);
|
|
scene->_object11.setPosition(Common::Point(155, 190));
|
|
|
|
scene->_object12.fixPriority(8);
|
|
scene->_object12.setPosition(Common::Point(151, 193));
|
|
break;
|
|
case 1: {
|
|
Common::Point pt1(167, 187);
|
|
NpcMover *mover1 = new NpcMover();
|
|
scene->_object10.addMover(mover1, &pt1, this);
|
|
|
|
Common::Point pt2(165, 185);
|
|
NpcMover *mover2 = new NpcMover();
|
|
scene->_object11.addMover(mover2, &pt2, NULL);
|
|
|
|
Common::Point pt3(163, 183);
|
|
NpcMover *mover3 = new NpcMover();
|
|
scene->_object12.addMover(mover3, &pt3, NULL);
|
|
break;
|
|
}
|
|
case 2: {
|
|
scene->_object10.setStrip2(6);
|
|
Common::Point pt1(91, 187);
|
|
NpcMover *mover1 = new NpcMover();
|
|
scene->_object10.addMover(mover1, &pt1, this);
|
|
|
|
scene->_object11.setStrip2(6);
|
|
scene->_object11.fixPriority(50);
|
|
Common::Point pt2(89, 185);
|
|
NpcMover *mover2 = new NpcMover();
|
|
scene->_object11.addMover(mover2, &pt2, NULL);
|
|
|
|
scene->_object12.setStrip2(6);
|
|
scene->_object12.fixPriority(50);
|
|
Common::Point pt3(87, 183);
|
|
NpcMover *mover3 = new NpcMover();
|
|
scene->_object12.addMover(mover3, &pt3, NULL);
|
|
break;
|
|
}
|
|
case 3:
|
|
_actionIndex = 0;
|
|
setDelay(1);
|
|
break;
|
|
}
|
|
}
|
|
|
|
void Scene7100::Action7::signal() {
|
|
Scene7100 *scene = (Scene7100 *)_globals->_sceneManager._scene;
|
|
|
|
switch (_actionIndex++) {
|
|
case 0:
|
|
setDelay(1);
|
|
break;
|
|
case 1: {
|
|
scene->_object13.setStrip2(8);
|
|
Common::Point pt(324, 87);
|
|
NpcMover *mover = new NpcMover();
|
|
scene->_object13.addMover(mover, &pt, this);
|
|
break;
|
|
}
|
|
case 2: {
|
|
scene->_object13.setStrip2(2);
|
|
Common::Point pt(524, 104);
|
|
NpcMover *mover = new NpcMover();
|
|
scene->_object13.addMover(mover, &pt, NULL);
|
|
break;
|
|
}
|
|
case 3:
|
|
_actionIndex = 0;
|
|
setDelay(1);
|
|
break;
|
|
}
|
|
}
|
|
|
|
void Scene7100::Action8::signal() {
|
|
Scene7100 *scene = (Scene7100 *)_globals->_sceneManager._scene;
|
|
|
|
switch (_actionIndex++) {
|
|
case 0:
|
|
setDelay(1);
|
|
break;
|
|
case 1: {
|
|
scene->_object17.setStrip2(4);
|
|
scene->_object18.setStrip2(4);
|
|
scene->_object19.setStrip2(4);
|
|
|
|
Common::Point pt1(482, 153);
|
|
NpcMover *mover1 = new NpcMover();
|
|
scene->_object17.addMover(mover1, &pt1, this);
|
|
|
|
Common::Point pt2(480, 146);
|
|
NpcMover *mover2 = new NpcMover();
|
|
scene->_object18.addMover(mover2, &pt2, NULL);
|
|
|
|
Common::Point pt3(470, 153);
|
|
NpcMover *mover3 = new NpcMover();
|
|
scene->_object19.addMover(mover3, &pt3, NULL);
|
|
break;
|
|
}
|
|
case 2: {
|
|
scene->_object17.setStrip2(3);
|
|
scene->_object18.setStrip2(3);
|
|
scene->_object19.setStrip2(3);
|
|
|
|
Common::Point pt1(506, 186);
|
|
NpcMover *mover1 = new NpcMover();
|
|
scene->_object17.addMover(mover1, &pt1, this);
|
|
|
|
Common::Point pt2(502, 179);
|
|
NpcMover *mover2 = new NpcMover();
|
|
scene->_object18.addMover(mover2, &pt2, NULL);
|
|
|
|
Common::Point pt3(495, 184);
|
|
NpcMover *mover3 = new NpcMover();
|
|
scene->_object19.addMover(mover3, &pt3, NULL);
|
|
break;
|
|
}
|
|
case 3: {
|
|
scene->_object17.setStrip2(4);
|
|
scene->_object18.setStrip2(4);
|
|
scene->_object19.setStrip2(4);
|
|
|
|
Common::Point pt1(386, 167);
|
|
NpcMover *mover1 = new NpcMover();
|
|
scene->_object17.addMover(mover1, &pt1, this);
|
|
|
|
Common::Point pt2(379, 161);
|
|
NpcMover *mover2 = new NpcMover();
|
|
scene->_object18.addMover(mover2, &pt2, NULL);
|
|
|
|
Common::Point pt3(373, 167);
|
|
NpcMover *mover3 = new NpcMover();
|
|
scene->_object19.addMover(mover3, &pt3, NULL);
|
|
break;
|
|
}
|
|
case 4: {
|
|
scene->_object17.setStrip2(3);
|
|
scene->_object18.setStrip2(3);
|
|
scene->_object19.setStrip2(3);
|
|
|
|
Common::Point pt1(479, 193);
|
|
NpcMover *mover1 = new NpcMover();
|
|
scene->_object17.addMover(mover1, &pt1, this);
|
|
|
|
Common::Point pt2(473, 187);
|
|
NpcMover *mover2 = new NpcMover();
|
|
scene->_object18.addMover(mover2, &pt2, NULL);
|
|
|
|
Common::Point pt3(466, 192);
|
|
NpcMover *mover3 = new NpcMover();
|
|
scene->_object19.addMover(mover3, &pt3, NULL);
|
|
break;
|
|
}
|
|
case 5: {
|
|
Common::Point pt1(552, 183);
|
|
NpcMover *mover1 = new NpcMover();
|
|
scene->_object17.addMover(mover1, &pt1, this);
|
|
|
|
Common::Point pt2(552, 178);
|
|
NpcMover *mover2 = new NpcMover();
|
|
scene->_object18.addMover(mover2, &pt2, NULL);
|
|
|
|
Common::Point pt3(541, 183);
|
|
NpcMover *mover3 = new NpcMover();
|
|
scene->_object19.addMover(mover3, &pt3, NULL);
|
|
|
|
_actionIndex = 0;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
void Scene7100::Action9::signal() {
|
|
Scene7100 *scene = (Scene7100 *)_globals->_sceneManager._scene;
|
|
|
|
switch (_actionIndex++) {
|
|
case 0:
|
|
setDelay(1);
|
|
break;
|
|
case 1: {
|
|
scene->_object24.setStrip2(1);
|
|
Common::Point pt(64, 159);
|
|
NpcMover *mover = new NpcMover();
|
|
scene->_object24.addMover(mover, &pt, this);
|
|
break;
|
|
}
|
|
case 2: {
|
|
scene->_object24.setStrip2(2);
|
|
scene->_object24.fixPriority(160);
|
|
Common::Point pt(34, 159);
|
|
NpcMover *mover = new NpcMover();
|
|
scene->_object24.addMover(mover, &pt, this);
|
|
break;
|
|
}
|
|
case 3: {
|
|
scene->_object24.setStrip2(1);
|
|
Common::Point pt(64, 159);
|
|
NpcMover *mover = new NpcMover();
|
|
scene->_object24.addMover(mover, &pt, this);
|
|
break;
|
|
}
|
|
case 4: {
|
|
scene->_object24.setStrip2(2);
|
|
scene->_object24.fixPriority(180);
|
|
Common::Point pt(-12, 182);
|
|
NpcMover *mover = new NpcMover();
|
|
scene->_object24.addMover(mover, &pt, this);
|
|
break;
|
|
}
|
|
case 5: {
|
|
_actionIndex = 0;
|
|
setDelay(1);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
void Scene7100::Action10::signal() {
|
|
Scene7100 *scene = (Scene7100 *)_globals->_sceneManager._scene;
|
|
|
|
switch (_actionIndex++) {
|
|
case 0:
|
|
setDelay(1000);
|
|
break;
|
|
case 1: {
|
|
Common::Point pt(610, -60);
|
|
NpcMover *mover = new NpcMover();
|
|
scene->_object25.addMover(mover, &pt, this);
|
|
break;
|
|
}
|
|
case 2:
|
|
scene->_object25.remove();
|
|
remove();
|
|
break;
|
|
}
|
|
}
|
|
|
|
void Scene7100::Action11::signal() {
|
|
Scene7100 *scene = (Scene7100 *)_globals->_sceneManager._scene;
|
|
|
|
switch (_actionIndex++) {
|
|
case 0:
|
|
setDelay(30);
|
|
break;
|
|
case 1: {
|
|
Common::Point pt(154, 175);
|
|
NpcMover *mover = new NpcMover();
|
|
_globals->_player.addMover(mover, &pt, this);
|
|
ObjectMover2 *mover2 = new ObjectMover2();
|
|
scene->_object1.addMover(mover2, 25, 35, &_globals->_player);
|
|
break;
|
|
}
|
|
case 2: {
|
|
Common::Point pt(700, 155);
|
|
NpcMover *mover = new NpcMover();
|
|
_globals->_player.addMover(mover, &pt, this);
|
|
break;
|
|
}
|
|
case 3:
|
|
_globals->_sceneManager.changeScene(7200);
|
|
remove();
|
|
break;
|
|
}
|
|
}
|
|
|
|
void Scene7100::postInit(SceneObjectList *OwnerList) {
|
|
loadScene(7100);
|
|
Scene::postInit();
|
|
setZoomPercents(60, 85, 200, 100);
|
|
|
|
_object2.postInit();
|
|
_object2.setVisage(7161);
|
|
_object2.animate(ANIM_MODE_2, NULL);
|
|
_object2.setPosition(Common::Point(10, 140));
|
|
_object2._numFrames = 1;
|
|
_object2.fixPriority(180);
|
|
_object2.setAction(&_action1, NULL);
|
|
|
|
_object3.postInit();
|
|
_object3.setVisage(7161);
|
|
_object3.animate(ANIM_MODE_2, NULL);
|
|
_object3.setPosition(Common::Point(34, 115));
|
|
_object3._numFrames = 1;
|
|
_object3.fixPriority(180);
|
|
_object3.setAction(&_action2, NULL);
|
|
|
|
_object4.postInit();
|
|
_object4.setVisage(7164);
|
|
_object4.animate(ANIM_MODE_2, NULL);
|
|
_object4.setPosition(Common::Point(-10, 159));
|
|
_object4._numFrames = 2;
|
|
_object4.fixPriority(250);
|
|
_object4.setAction(&_action3, NULL);
|
|
|
|
_object5.postInit();
|
|
_object5.setVisage(7162);
|
|
_object5.setStrip(3);
|
|
_object5.animate(ANIM_MODE_2, NULL);
|
|
_object5.setPosition(Common::Point(20, 52));
|
|
_object5.setAction(&_action4, NULL);
|
|
|
|
_object9.postInit();
|
|
_object9.setVisage(7160);
|
|
_object5.setStrip(2);
|
|
_object9.animate(ANIM_MODE_2, NULL);
|
|
_object9.setPosition(Common::Point(110, 168));
|
|
_object9._numFrames = 2;
|
|
_object9.fixPriority(16);
|
|
_object9.setAction(&_action5, NULL);
|
|
|
|
_object13.postInit();
|
|
_object13.setVisage(7161);
|
|
_object13.setStrip(8);
|
|
_object13.animate(ANIM_MODE_2, NULL);
|
|
_object13.setPosition(Common::Point(524, 104));
|
|
_object13._numFrames = 5;
|
|
_object13.fixPriority(250);
|
|
_object13.setAction(&_action7, NULL);
|
|
|
|
_object17.postInit();
|
|
_object17.setVisage(7160);
|
|
_object17.setStrip(3);
|
|
_object17.animate(ANIM_MODE_2, NULL);
|
|
_object17.setPosition(Common::Point(552, 183));
|
|
_object17._numFrames = 4;
|
|
_object17._moveDiff.x = 12;
|
|
_object17._moveDiff.y = 12;
|
|
_object17.setAction(&_action8, NULL);
|
|
|
|
_object18.postInit();
|
|
_object18.setVisage(7160);
|
|
_object18.setStrip(3);
|
|
_object18.animate(ANIM_MODE_2, NULL);
|
|
_object18.setPosition(Common::Point(552, 178));
|
|
_object18._numFrames = 4;
|
|
_object18._moveDiff.x = 12;
|
|
_object18._moveDiff.y = 12;
|
|
|
|
_object19.postInit();
|
|
_object19.setVisage(7160);
|
|
_object19.setStrip(3);
|
|
_object19.animate(ANIM_MODE_2, NULL);
|
|
_object19.setPosition(Common::Point(541, 183));
|
|
_object19._numFrames = 4;
|
|
_object19._moveDiff.x = 12;
|
|
_object19._moveDiff.y = 12;
|
|
|
|
_object24.postInit();
|
|
_object24.setVisage(7162);
|
|
_object24.setStrip(1);
|
|
_object24.animate(ANIM_MODE_2, NULL);
|
|
_object24.setPosition(Common::Point(-12, 182));
|
|
_object24._numFrames = 4;
|
|
_object24.fixPriority(180);
|
|
_object24.setAction(&_action9, NULL);
|
|
|
|
_object25.postInit();
|
|
_object25.setVisage(7163);
|
|
_object25.animate(ANIM_MODE_2, NULL);
|
|
_object25.setPosition(Common::Point(551, 145));
|
|
_object25._numFrames = 5;
|
|
_object25.fixPriority(160);
|
|
_object25.setAction(&_action10, NULL);
|
|
|
|
// Swimmer 1
|
|
_globals->_player.postInit();
|
|
_globals->_player.setVisage(7101);
|
|
_globals->_player.animate(ANIM_MODE_2, NULL);
|
|
_globals->_player._moveDiff.x = 4;
|
|
_globals->_player._moveDiff.y = 2;
|
|
_globals->_player.setPosition(Common::Point(135, 135));
|
|
_globals->_player.fixPriority(200);
|
|
_globals->_player.disableControl();
|
|
|
|
// Swimmer 2
|
|
_object1.postInit();
|
|
_object1.setVisage(7110);
|
|
_object1.animate(ANIM_MODE_1, NULL);
|
|
_object1._moveDiff.x = 4;
|
|
_object1._moveDiff.y = 2;
|
|
_object1.setPosition(Common::Point(100, 100));
|
|
|
|
setAction(&_action11);
|
|
_soundHandler1.play(270);
|
|
_soundHandler2.play(275);
|
|
_globals->_soundHandler.play(270);
|
|
}
|
|
/*--------------------------------------------------------------------------
|
|
* Scene 7200 - Underwater: Entering the cave
|
|
*
|
|
*--------------------------------------------------------------------------*/
|
|
|
|
void Scene7200::Action1::signal() {
|
|
Scene7200 *scene = (Scene7200 *)_globals->_sceneManager._scene;
|
|
|
|
switch (_actionIndex++) {
|
|
case 0:
|
|
setDelay(15);
|
|
break;
|
|
case 1: {
|
|
PlayerMover *mover1 = new PlayerMover();
|
|
Common::Point pt1(165, 147);
|
|
scene->_swimmer.addMover(mover1, &pt1, this);
|
|
Common::Point pt2(207, 138);
|
|
PlayerMover *mover2 = new PlayerMover();
|
|
_globals->_player.addMover(mover2, &pt2, this);
|
|
break;
|
|
}
|
|
case 2:
|
|
break;
|
|
case 3:
|
|
_globals->_sceneManager.changeScene(7300);
|
|
remove();
|
|
break;
|
|
}
|
|
}
|
|
|
|
/*--------------------------------------------------------------------------*/
|
|
|
|
void Scene7200::Action2::signal() {
|
|
Scene7200 *scene = (Scene7200 *)_globals->_sceneManager._scene;
|
|
|
|
switch (_actionIndex++) {
|
|
case 0:
|
|
setDelay(3);
|
|
break;
|
|
case 1: {
|
|
scene->_object2.fixPriority(25);
|
|
scene->_object3.fixPriority(25);
|
|
scene->_object4.fixPriority(25);
|
|
scene->_object2.setStrip(1);
|
|
scene->_object3.setStrip(1);
|
|
scene->_object4.setStrip(1);
|
|
NpcMover *mover1 = new NpcMover();
|
|
Common::Point pt1(54, 90);
|
|
scene->_object2.addMover(mover1, &pt1, this);
|
|
NpcMover *mover2 = new NpcMover();
|
|
Common::Point pt2(56, 85);
|
|
scene->_object3.addMover(mover2, &pt2, NULL);
|
|
NpcMover *mover3 = new NpcMover();
|
|
Common::Point pt3(54, 80);
|
|
scene->_object4.addMover(mover3, &pt3, NULL);
|
|
break;
|
|
}
|
|
case 2: {
|
|
scene->_object2.fixPriority(160);
|
|
scene->_object3.fixPriority(160);
|
|
scene->_object4.fixPriority(160);
|
|
scene->_object2.setStrip(2);
|
|
scene->_object3.setStrip(2);
|
|
scene->_object4.setStrip(2);
|
|
NpcMover *mover1 = new NpcMover();
|
|
Common::Point pt1(10, 89);
|
|
scene->_object2.addMover(mover1, &pt1, this);
|
|
NpcMover *mover2 = new NpcMover();
|
|
Common::Point pt2(12, 84);
|
|
scene->_object3.addMover(mover2, &pt2, NULL);
|
|
NpcMover *mover3 = new NpcMover();
|
|
Common::Point pt3(10, 79);
|
|
scene->_object4.addMover(mover3, &pt3, NULL);
|
|
break;
|
|
}
|
|
case 3:
|
|
_actionIndex = 0;
|
|
setDelay(1);
|
|
remove();
|
|
break;
|
|
}
|
|
}
|
|
|
|
/*--------------------------------------------------------------------------*/
|
|
|
|
void Scene7200::postInit(SceneObjectList *OwnerList) {
|
|
loadScene(7200);
|
|
Scene::postInit();
|
|
_object2.postInit();
|
|
_object2.setVisage(7160);
|
|
_object2.animate(ANIM_MODE_2, NULL);
|
|
_object2.setZoom(10);
|
|
_object2.setPosition(Common::Point(53, 88));
|
|
_object2.setAction(&_action2);
|
|
|
|
_object3.postInit();
|
|
_object3.setVisage(7160);
|
|
_object3.animate(ANIM_MODE_2, NULL);
|
|
_object3.setZoom(10);
|
|
_object3.setPosition(Common::Point(55, 83));
|
|
|
|
_object4.postInit();
|
|
_object4.setVisage(7160);
|
|
_object4.animate(ANIM_MODE_2, NULL);
|
|
_object4.setZoom(10);
|
|
_object4.setPosition(Common::Point(57, 78));
|
|
|
|
_object5.postInit();
|
|
_object5.setVisage(7201);
|
|
_object5.setPosition(Common::Point(300, 172));
|
|
_object5.setPriority(172);
|
|
_object5.animate(ANIM_MODE_2, NULL);
|
|
_object5._numFrames = 3;
|
|
|
|
_object6.postInit();
|
|
_object6.setVisage(7201);
|
|
_object6.setStrip2(3);
|
|
_object6.setPosition(Common::Point(144, 97));
|
|
_object6.setPriority(199);
|
|
_object6.animate(ANIM_MODE_2, NULL);
|
|
_object6._numFrames = 3;
|
|
|
|
_object7.postInit();
|
|
_object7.setVisage(7201);
|
|
_object7.setStrip2(4);
|
|
_object7.setPosition(Common::Point(115, 123));
|
|
_object7.setPriority(199);
|
|
_object7.animate(ANIM_MODE_2, NULL);
|
|
_object7._numFrames = 3;
|
|
|
|
_object8.postInit();
|
|
_object8.setVisage(7201);
|
|
_object8.setStrip2(6);
|
|
_object8.setPosition(Common::Point(140, 173));
|
|
_object8.setPriority(199);
|
|
_object8.animate(ANIM_MODE_2, NULL);
|
|
_object8._numFrames = 3;
|
|
|
|
_object9.postInit();
|
|
_object9.setVisage(7201);
|
|
_object9.setStrip2(7);
|
|
_object9.setPosition(Common::Point(215, 196));
|
|
_object9.setPriority(199);
|
|
_object9.animate(ANIM_MODE_2, NULL);
|
|
_object9._numFrames = 3;
|
|
|
|
// Orange swimmer
|
|
_globals->_player.postInit();
|
|
_globals->_player.setVisage(7110);
|
|
_globals->_player.animate(ANIM_MODE_1, NULL);
|
|
_globals->_player.setObjectWrapper(new SceneObjectWrapper());
|
|
_globals->_player.setZoom(50);
|
|
_globals->_player.setPosition(Common::Point(-18, 16));
|
|
_globals->_player.disableControl();
|
|
|
|
_swimmer.postInit();
|
|
_swimmer.setVisage(7101);
|
|
_swimmer.animate(ANIM_MODE_1, NULL);
|
|
_swimmer.setObjectWrapper(new SceneObjectWrapper());
|
|
_swimmer.setZoom(50);
|
|
_swimmer.setPosition(Common::Point(-8, 16));
|
|
|
|
setAction(&_action1);
|
|
_soundHandler.play(271);
|
|
}
|
|
|
|
/*--------------------------------------------------------------------------
|
|
* Scene 7300 - Underwater: Lord Poria
|
|
*
|
|
*--------------------------------------------------------------------------*/
|
|
|
|
void Scene7300::Action1::signal() {
|
|
Scene7300 *scene = (Scene7300 *)_globals->_sceneManager._scene;
|
|
|
|
switch (_actionIndex++) {
|
|
case 0:
|
|
case 1:
|
|
case 3:
|
|
setDelay(30);
|
|
break;
|
|
case 2:
|
|
scene->_stripManager.start(7300, this);
|
|
break;
|
|
case 4: {
|
|
NpcMover *mover = new NpcMover();
|
|
Common::Point pt(102, 122);
|
|
_globals->_player.addMover(mover, &pt, this);
|
|
break;
|
|
}
|
|
case 5:
|
|
_globals->_player.setStrip(2);
|
|
_globals->_player.setFrame(1);
|
|
_globals->_player.animate(ANIM_MODE_5, this);
|
|
break;
|
|
case 6:
|
|
_globals->_player.setStrip(3);
|
|
_globals->_player._numFrames = 5;
|
|
_globals->_player.animate(ANIM_MODE_2, this);
|
|
if (RING_INVENTORY._translator._sceneNumber == 1)
|
|
scene->_stripManager.start(7310, this);
|
|
else
|
|
scene->_stripManager.start(7305, this);
|
|
break;
|
|
case 7:
|
|
setDelay(3);
|
|
_globals->_soundHandler.fadeOut(NULL);
|
|
break;
|
|
case 8:
|
|
_globals->_sceneManager.changeScene(2280);
|
|
break;
|
|
}
|
|
}
|
|
|
|
/*--------------------------------------------------------------------------*/
|
|
|
|
void Scene7300::Action2::signal() {
|
|
Scene7300 *scene = (Scene7300 *)_globals->_sceneManager._scene;
|
|
|
|
switch (_actionIndex++) {
|
|
case 0:
|
|
setDelay(5);
|
|
break;
|
|
case 1:
|
|
NpcMover *mover1 = new NpcMover();
|
|
Common::Point pt(_globals->_randomSource.getRandomNumber(3) + 203, _globals->_randomSource.getRandomNumber(3) + 96);
|
|
scene->_object3.addMover(mover1, &pt, this);
|
|
_actionIndex = 0;
|
|
break;
|
|
}
|
|
}
|
|
|
|
/*--------------------------------------------------------------------------*/
|
|
|
|
void Scene7300::Action3::signal() {
|
|
Scene7300 *scene = (Scene7300 *)_globals->_sceneManager._scene;
|
|
|
|
switch (_actionIndex++) {
|
|
case 0:
|
|
setDelay(5);
|
|
break;
|
|
case 1:
|
|
NpcMover *mover1 = new NpcMover();
|
|
Common::Point pt(_globals->_randomSource.getRandomNumber(5) + 76, _globals->_randomSource.getRandomNumber(5) + 78);
|
|
scene->_object1.addMover(mover1, &pt, this);
|
|
_actionIndex = 0;
|
|
break;
|
|
}
|
|
}
|
|
|
|
/*--------------------------------------------------------------------------*/
|
|
|
|
void Scene7300::Action4::signal() {
|
|
switch (_actionIndex++) {
|
|
case 0:
|
|
setDelay(5);
|
|
break;
|
|
case 1:
|
|
_actionIndex = 0;
|
|
break;
|
|
}
|
|
}
|
|
|
|
/*--------------------------------------------------------------------------*/
|
|
|
|
void Scene7300::dispatch() {
|
|
Scene7300 *scene = (Scene7300 *)_globals->_sceneManager._scene;
|
|
scene->_object4.setPosition(Common::Point(scene->_object3._position.x + 15, scene->_object3._position.y + 61));
|
|
scene->_object2.setPosition(Common::Point(scene->_object1._position.x + 1, scene->_object1._position.y - 31));
|
|
|
|
Scene::dispatch();
|
|
}
|
|
|
|
/*--------------------------------------------------------------------------*/
|
|
|
|
void Scene7300::postInit(SceneObjectList *OwnerList) {
|
|
loadScene(7300);
|
|
|
|
Scene::postInit();
|
|
setZoomPercents(60, 85, 200, 100);
|
|
|
|
_globals->setFlag(52);
|
|
_globals->setFlag(24);
|
|
_globals->setFlag(109);
|
|
|
|
_stripManager.addSpeaker(&_speakerPOR);
|
|
_stripManager.addSpeaker(&_speakerPOText);
|
|
_stripManager.addSpeaker(&_speakerSKText);
|
|
_stripManager.addSpeaker(&_speakerQU);
|
|
|
|
_speakerSKText.setTextPos(Common::Point(100, 20));
|
|
_speakerPOText.setTextPos(Common::Point(100, 160));
|
|
|
|
_object4.postInit();
|
|
_object4.setVisage(7311);
|
|
_object4.setStrip(1);
|
|
_object4.setFrame(1);
|
|
_object4.setPosition(Common::Point(218, 157));
|
|
|
|
_object3.postInit();
|
|
_object3.setVisage(7311);
|
|
_object3.setStrip(2);
|
|
_object3.setFrame(1);
|
|
_object3.setPosition(Common::Point(203, 96));
|
|
_object3._numFrames = 2;
|
|
_object3._moveDiff = Common::Point(1, 1);
|
|
_object3.animate(ANIM_MODE_8, 0, NULL);
|
|
_object3._moveRate = 2;
|
|
_object3.setAction(&_action2);
|
|
|
|
_globals->_player.postInit();
|
|
_globals->_player.setVisage(7305);
|
|
_globals->_player.animate(ANIM_MODE_1, NULL);
|
|
_globals->_player.setPosition(Common::Point(-100, 100));
|
|
_globals->_player.disableControl();
|
|
|
|
_object1.postInit();
|
|
_object1.setVisage(7312);
|
|
_object1.animate(ANIM_MODE_1, NULL);
|
|
_object1._moveDiff = Common::Point(1, 1);
|
|
_object1.setPosition(Common::Point(76, 78));
|
|
_object1._moveRate = 1;
|
|
_object1.setAction(&_action3);
|
|
|
|
_object2.postInit();
|
|
_object2.setVisage(7312);
|
|
_object2.setStrip(2);
|
|
_object2.animate(ANIM_MODE_2, NULL);
|
|
_object2.setPosition(Common::Point(77, 47));
|
|
_object2.fixPriority(190);
|
|
|
|
_object5.postInit();
|
|
_object5.setVisage(7300);
|
|
_object5.setPosition(Common::Point(106, 45));
|
|
_object5.animate(ANIM_MODE_2, NULL);
|
|
_object5._numFrames = 5;
|
|
|
|
_object6.postInit();
|
|
_object6.setVisage(7300);
|
|
_object6.setStrip2(2);
|
|
_object6.setPosition(Common::Point(283, 193));
|
|
_object6.animate(ANIM_MODE_2, NULL);
|
|
_object6._numFrames = 3;
|
|
|
|
_object7.postInit();
|
|
_object7.setVisage(7300);
|
|
_object7.setStrip(4);
|
|
_object7.setPosition(Common::Point(295, 77));
|
|
_object7.animate(ANIM_MODE_2, NULL);
|
|
_object7._numFrames = 3;
|
|
|
|
_object8.postInit();
|
|
_object8.setVisage(7300);
|
|
_object8.setStrip(5);
|
|
_object8.setPosition(Common::Point(1, 147));
|
|
_object8.animate(ANIM_MODE_2, NULL);
|
|
_object8._numFrames = 2;
|
|
|
|
setAction(&_action1);
|
|
_globals->_soundHandler.play(272);
|
|
}
|
|
|
|
/*--------------------------------------------------------------------------
|
|
* Scene 7600 - Floating Buildings: Outside
|
|
*
|
|
*--------------------------------------------------------------------------*/
|
|
|
|
void Scene7600::Action1::signal() {
|
|
switch (_actionIndex++) {
|
|
case 0:
|
|
setDelay(120);
|
|
break;
|
|
case 1: {
|
|
PlayerMover *mover = new PlayerMover();
|
|
Common::Point pt(389, 57);
|
|
_globals->_player.addMover(mover, &pt, this);
|
|
break;
|
|
}
|
|
case 2:
|
|
_globals->_sceneManager.changeScene(7700);
|
|
break;
|
|
}
|
|
}
|
|
|
|
/*--------------------------------------------------------------------------*/
|
|
|
|
void Scene7600::Action2::signal() {
|
|
switch (_actionIndex++) {
|
|
case 0:
|
|
setDelay(30);
|
|
break;
|
|
case 1: {
|
|
NpcMover *mover = new NpcMover();
|
|
Common::Point pt(-30, 195);
|
|
_globals->_player.addMover(mover, &pt, this);
|
|
break;
|
|
}
|
|
case 2:
|
|
_globals->_sceneManager.changeScene(2320);
|
|
remove();
|
|
break;
|
|
}
|
|
}
|
|
|
|
/*--------------------------------------------------------------------------*/
|
|
|
|
void Scene7600::postInit(SceneObjectList *OwnerList) {
|
|
Scene::postInit();
|
|
setZoomPercents(100, 0, 200, 100);
|
|
|
|
_object2.postInit();
|
|
_object2.setVisage(7601);
|
|
_object2.setStrip(1);
|
|
_object2.animate(ANIM_MODE_2, NULL);
|
|
_object2.setPosition(Common::Point(48, 135));
|
|
_object2.fixPriority(1);
|
|
|
|
_object3.postInit();
|
|
_object3.setVisage(7601);
|
|
_object3.setStrip(2);
|
|
_object3.animate(ANIM_MODE_2, NULL);
|
|
_object3.setPosition(Common::Point(158, 136));
|
|
_object3.fixPriority(1);
|
|
|
|
_object4.postInit();
|
|
_object4.setVisage(7601);
|
|
_object4.setStrip(3);
|
|
_object4.animate(ANIM_MODE_2, NULL);
|
|
_object4.setPosition(Common::Point(293, 141));
|
|
_object4.fixPriority(1);
|
|
|
|
_object5.postInit();
|
|
_object5.setVisage(7601);
|
|
_object5.setStrip(4);
|
|
_object5.animate(ANIM_MODE_2, NULL);
|
|
_object5.setPosition(Common::Point(405, 143));
|
|
_object5.fixPriority(1);
|
|
|
|
_object6.postInit();
|
|
_object6.setVisage(7601);
|
|
_object6.setStrip(5);
|
|
_object6.animate(ANIM_MODE_2, NULL);
|
|
_object6.setPosition(Common::Point(379, 191));
|
|
_object6.fixPriority(1);
|
|
|
|
_globals->_player.postInit();
|
|
_globals->_player.setVisage(2333);
|
|
_globals->_player.animate(ANIM_MODE_1, NULL);
|
|
_globals->_player.setObjectWrapper(new SceneObjectWrapper());
|
|
_globals->_player.setStrip(1);
|
|
_globals->_player._moveDiff = Common::Point(16, 16);
|
|
_globals->_player.changeZoom(-1);
|
|
_globals->_player.disableControl();
|
|
|
|
if (_globals->_sceneManager._previousScene == 7700) {
|
|
_globals->_player.setPosition(Common::Point(389, 57));
|
|
setAction(&_action2);
|
|
} else {
|
|
_globals->_player.setPosition(Common::Point(-50, 195));
|
|
setAction(&_action1);
|
|
}
|
|
_sceneBounds.center(_globals->_player._position.x, _globals->_player._position.y);
|
|
loadScene(7600);
|
|
_soundHandler2.play(255);
|
|
_soundHandler1.play(251);
|
|
}
|
|
|
|
/*--------------------------------------------------------------------------
|
|
* Scene 7700 - Floating Buildings: In the lab
|
|
*
|
|
*--------------------------------------------------------------------------*/
|
|
|
|
void Scene7700::Action1::signal() {
|
|
SceneObjectExt *fmtObj = (SceneObjectExt *) _endHandler;
|
|
switch (_actionIndex++) {
|
|
case 0: {
|
|
PlayerMover *mover1 = new PlayerMover();
|
|
Common::Point pt = Common::Point(fmtObj->_position.x, fmtObj->_position.y + 30);
|
|
_globals->_player.addMover(mover1, &pt, this);
|
|
break;
|
|
}
|
|
case 1:
|
|
_globals->_player.checkAngle(fmtObj);
|
|
if (fmtObj->_state == 0)
|
|
fmtObj->animate(ANIM_MODE_5, this);
|
|
else
|
|
fmtObj->animate(ANIM_MODE_6, this);
|
|
break;
|
|
case 2:
|
|
remove();
|
|
break;
|
|
}
|
|
}
|
|
|
|
void Scene7700::Action2::signal() {
|
|
Scene7700 *scene = (Scene7700 *)_globals->_sceneManager._scene;
|
|
switch (_actionIndex++) {
|
|
case 0:
|
|
case 2:
|
|
setDelay(_globals->_randomSource.getRandomNumber(60) + 60);
|
|
break;
|
|
case 1:
|
|
scene->_prof.animate(ANIM_MODE_7, 0, NULL);
|
|
setDelay(20);
|
|
break;
|
|
case 3:
|
|
scene->_prof.animate(ANIM_MODE_6, this);
|
|
_actionIndex = 0;
|
|
break;
|
|
}
|
|
}
|
|
|
|
void Scene7700::Action3::signal() {
|
|
Scene7700 *scene = (Scene7700 *)_globals->_sceneManager._scene;
|
|
switch (_actionIndex++) {
|
|
case 0:
|
|
scene->_object15.animate(ANIM_MODE_5, this);
|
|
break;
|
|
case 1:
|
|
scene->_sceneItem10.remove();
|
|
scene->_object15.remove();
|
|
scene->_sceneHotspot8.remove();
|
|
scene->_sceneHotspot9.remove();
|
|
scene->_object19.remove();
|
|
setDelay(60);
|
|
// No break on purpose!
|
|
case 2:
|
|
scene->_soundHandler.play(260);
|
|
scene->_object8.setVisage(7703);
|
|
scene->_object8.setPosition(Common::Point(177, 97));
|
|
scene->_object8.setStrip2(3);
|
|
scene->_object8.animate(ANIM_MODE_5, this);
|
|
scene->_object8._numFrames = 3;
|
|
break;
|
|
case 3:
|
|
_globals->_player.enableControl();
|
|
remove();
|
|
break;
|
|
}
|
|
}
|
|
|
|
void Scene7700::Action4::signal() {
|
|
Scene7700 *scene = (Scene7700 *)_globals->_sceneManager._scene;
|
|
switch (_actionIndex++) {
|
|
case 2:
|
|
scene->_object13.remove();
|
|
// No break on purpose!
|
|
case 0:
|
|
setDelay(3);
|
|
break;
|
|
case 1:
|
|
CursorMan.showMouse(false);
|
|
scene->_object13.postInit();
|
|
scene->_object13.setVisage(7700);
|
|
scene->_object13.setStrip2(7);
|
|
scene->_object13.setPosition(Common::Point(151, 33));
|
|
scene->_object13.animate(ANIM_MODE_5, this);
|
|
break;
|
|
case 3:
|
|
CursorMan.showMouse(true);
|
|
SceneItem::display2(7700, 11);
|
|
_globals->_player.enableControl();
|
|
remove();
|
|
break;
|
|
}
|
|
}
|
|
|
|
void Scene7700::Action5::signal() {
|
|
Scene7700 *scene = (Scene7700 *)_globals->_sceneManager._scene;
|
|
switch (_actionIndex++) {
|
|
case 0:
|
|
setDelay(_globals->_randomSource.getRandomNumber(240));
|
|
break;
|
|
case 1: {
|
|
scene->_cloud.setFrame(_globals->_randomSource.getRandomNumber(1) + 1);
|
|
scene->_cloud.setPosition(Common::Point(133, 145 + _globals->_randomSource.getRandomNumber(54)));
|
|
|
|
Common::Point pt(360, scene->_cloud._position.y);
|
|
NpcMover *mover = new NpcMover();
|
|
scene->_cloud.addMover(mover, &pt, this);
|
|
_actionIndex = 0;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
void Scene7700::Action6::signal() {
|
|
Scene7700 *scene = (Scene7700 *)_globals->_sceneManager._scene;
|
|
switch (_actionIndex++) {
|
|
case 0:
|
|
setDelay(5);
|
|
break;
|
|
case 1: {
|
|
Common::Point pt(2, 66);
|
|
NpcMover *mover = new NpcMover();
|
|
scene->_easterEgg1.addMover(mover, &pt, this);
|
|
break;
|
|
}
|
|
case 2:
|
|
scene->_easterEgg1.setStrip(2);
|
|
scene->_easterEgg1.setPosition(Common::Point(43, 65));
|
|
|
|
scene->_easterEgg2.postInit();
|
|
scene->_easterEgg2.setVisage(7708);
|
|
scene->_easterEgg2.setStrip(3);
|
|
scene->_easterEgg2.setPosition(Common::Point(116, 54));
|
|
scene->_easterEgg2.animate(ANIM_MODE_2, NULL);
|
|
|
|
setDelay(120);
|
|
break;
|
|
case 3:
|
|
scene->_easterEgg1.remove();
|
|
scene->_easterEgg2.remove();
|
|
remove();
|
|
break;
|
|
}
|
|
}
|
|
|
|
void Scene7700::SceneHotspot1::doAction(int action) {
|
|
if (action == CURSOR_LOOK)
|
|
SceneItem::display2(7700, 4);
|
|
else
|
|
SceneHotspot::doAction(action);
|
|
}
|
|
|
|
void Scene7700::SceneHotspot2::doAction(int action) {
|
|
if (action == CURSOR_LOOK)
|
|
SceneItem::display2(7700, 6);
|
|
else
|
|
SceneHotspot::doAction(action);
|
|
}
|
|
|
|
void Scene7700::SceneHotspot3::doAction(int action) {
|
|
Scene7700 *scene = (Scene7700 *)_globals->_sceneManager._scene;
|
|
|
|
switch (action) {
|
|
case OBJECT_KEY:
|
|
SceneItem::display2(7702, 3);
|
|
RING_INVENTORY._key._sceneNumber = 7700;
|
|
break;
|
|
case CURSOR_LOOK:
|
|
if (RING_INVENTORY._key._sceneNumber == 7700)
|
|
scene->setAction(&scene->_action4, NULL);
|
|
else
|
|
SceneItem::display2(7700, 53);
|
|
break;
|
|
case CURSOR_USE:
|
|
if (!_globals->getFlag(78)) {
|
|
scene->_sceneMode = 7712;
|
|
scene->setAction(&scene->_sequenceManager, scene, 7715, NULL);
|
|
} else if (RING_INVENTORY._key._sceneNumber == 7700) {
|
|
_globals->_player.disableControl();
|
|
scene->_sceneMode = 7705;
|
|
scene->setAction(&scene->_sequenceManager, scene, 7705, &_globals->_player, NULL);
|
|
}
|
|
break;
|
|
default:
|
|
SceneHotspot::doAction(action);
|
|
break;
|
|
}
|
|
}
|
|
|
|
void Scene7700::SceneHotspot4::doAction(int action) {
|
|
Scene7700 *scene = (Scene7700 *)_globals->_sceneManager._scene;
|
|
|
|
switch (action) {
|
|
case CURSOR_LOOK:
|
|
SceneItem::display2(7700, 12);
|
|
break;
|
|
case CURSOR_USE:
|
|
if (!_globals->getFlag(78)) {
|
|
scene->_sceneMode = 7712;
|
|
scene->setAction(&scene->_sequenceManager, scene, 7715, NULL);
|
|
} else {
|
|
SceneItem::display2(7700, 12);
|
|
}
|
|
break;
|
|
default:
|
|
SceneHotspot::doAction(action);
|
|
break;
|
|
}
|
|
}
|
|
|
|
void Scene7700::SceneHotspot5::doAction(int action) {
|
|
Scene7700 *scene = (Scene7700 *)_globals->_sceneManager._scene;
|
|
|
|
switch (action) {
|
|
case CURSOR_LOOK:
|
|
SceneItem::display2(7700, 28);
|
|
break;
|
|
case CURSOR_USE:
|
|
if (_globals->getFlag(78)) {
|
|
if (RING_INVENTORY._paper._sceneNumber == 7700) {
|
|
_globals->_player.disableControl();
|
|
scene->_sceneMode = 7708;
|
|
scene->setAction(&scene->_sequenceManager, scene, 7708, &_globals->_player, NULL);
|
|
}
|
|
} else {
|
|
scene->_sceneMode = 7712;
|
|
scene->setAction(&scene->_sequenceManager, scene, 7715, NULL);
|
|
}
|
|
break;
|
|
default:
|
|
SceneHotspot::doAction(action);
|
|
break;
|
|
}
|
|
}
|
|
|
|
void Scene7700::SceneHotspot6::doAction(int action) {
|
|
switch (action) {
|
|
case CURSOR_LOOK:
|
|
SceneItem::display2(7700, 43);
|
|
break;
|
|
case CURSOR_USE:
|
|
SceneItem::display2(7700, 56);
|
|
break;
|
|
default:
|
|
SceneHotspot::doAction(action);
|
|
break;
|
|
}
|
|
}
|
|
|
|
void Scene7700::SceneItem7::doAction(int action) {
|
|
if (action == CURSOR_LOOK)
|
|
SceneItem::display2(7700, 51);
|
|
}
|
|
|
|
void Scene7700::SceneHotspot8::doAction(int action) {
|
|
Scene7700 *scene = (Scene7700 *)_globals->_sceneManager._scene;
|
|
|
|
switch (action) {
|
|
case CURSOR_LOOK:
|
|
SceneItem::display2(7700, 48);
|
|
break;
|
|
case CURSOR_USE:
|
|
scene->_sceneMode = 7709;
|
|
scene->_soundHandler.play(259);
|
|
scene->_object15.setFrame(scene->_object15.getFrameCount());
|
|
scene->_object15.animate(ANIM_MODE_6, scene);
|
|
if ((scene->_field977 == 2) && (scene->_field97B == 0)) {
|
|
scene->_field979++;
|
|
} else {
|
|
scene->_field97B = 0;
|
|
scene->_field979 = 0;
|
|
scene->_field977 = 0;
|
|
}
|
|
break;
|
|
default:
|
|
SceneHotspot::doAction(action);
|
|
break;
|
|
}
|
|
}
|
|
|
|
void Scene7700::SceneHotspot9::doAction(int action) {
|
|
Scene7700 *scene = (Scene7700 *)_globals->_sceneManager._scene;
|
|
|
|
switch (action) {
|
|
case CURSOR_LOOK:
|
|
SceneItem::display2(7700, 48);
|
|
break;
|
|
case CURSOR_USE:
|
|
scene->_sceneMode = 7709;
|
|
scene->_soundHandler.play(259);
|
|
scene->_object15.setFrame(1);
|
|
scene->_object15.animate(ANIM_MODE_5, scene);
|
|
if (scene->_field977 > 2) {
|
|
scene->_field97B = 0;
|
|
scene->_field979 = 0;
|
|
scene->_field977 = 0;
|
|
}
|
|
|
|
if (scene->_field979 != 0) {
|
|
if (scene->_field979 != 4) {
|
|
scene->_field97B = 0;
|
|
scene->_field979 = 0;
|
|
scene->_field977 = 0;
|
|
} else {
|
|
scene->_field97B++;
|
|
if (scene->_field97B == 3) {
|
|
_globals->_player.disableControl();
|
|
scene->setAction(&scene->_action3);
|
|
}
|
|
}
|
|
} else {
|
|
scene->_field977++;
|
|
}
|
|
break;
|
|
default:
|
|
SceneHotspot::doAction(action);
|
|
break;
|
|
}
|
|
}
|
|
|
|
void Scene7700::SceneItem10::doAction(int action) {
|
|
}
|
|
|
|
void Scene7700::Object1::doAction(int action) {
|
|
Scene7700 *scene = (Scene7700 *)_globals->_sceneManager._scene;
|
|
|
|
if (action == CURSOR_LOOK) {
|
|
SceneItem::display2(7700, _lookLineNum);
|
|
} else if (action == CURSOR_USE) {
|
|
if (_globals->getFlag(78)) {
|
|
_globals->_player.disableControl();
|
|
scene->setAction(&scene->_action1, this);
|
|
} else {
|
|
scene->_sceneMode = 7712;
|
|
scene->setAction(&scene->_sequenceManager, scene, 7715, NULL);
|
|
}
|
|
} else {
|
|
SceneHotspot::doAction(action);
|
|
}
|
|
}
|
|
|
|
void Scene7700::SceneHotspot11::doAction(int action) {
|
|
switch (action) {
|
|
case CURSOR_LOOK:
|
|
SceneItem::display2(7700, _lookLineNum);
|
|
break;
|
|
case CURSOR_USE:
|
|
SceneItem::display2(7701, _useLineNum);
|
|
break;
|
|
default:
|
|
SceneHotspot::doAction(action);
|
|
break;
|
|
}
|
|
}
|
|
|
|
void Scene7700::Object1::signal() {
|
|
if (_state == 0) {
|
|
_state = 1;
|
|
SceneItem::display2(7701, _defltLineNum);
|
|
} else {
|
|
_state = 0;
|
|
}
|
|
_globals->_player.enableControl();
|
|
}
|
|
|
|
void Scene7700::Object3::doAction(int action) {
|
|
Scene7700 *scene = (Scene7700 *)_globals->_sceneManager._scene;
|
|
|
|
if (action == CURSOR_LOOK) {
|
|
SceneItem::display2(7700, 34);
|
|
} else if (action == CURSOR_USE) {
|
|
if (_globals->getFlag(78)) {
|
|
if (scene->_object3._frame == 1) {
|
|
_globals->_player.disableControl();
|
|
scene->_sceneMode = 7707;
|
|
scene->setAction(&scene->_sequenceManager, scene, 7707, &_globals->_player, this, NULL);
|
|
} else {
|
|
SceneItem::display2(7700, 60);
|
|
}
|
|
} else {
|
|
scene->_sceneMode = 7712;
|
|
scene->setAction(&scene->_sequenceManager, scene, 7715, NULL);
|
|
}
|
|
} else {
|
|
SceneHotspot::doAction(action);
|
|
}
|
|
}
|
|
|
|
void Scene7700::Object7::doAction(int action) {
|
|
Scene7700 *scene = (Scene7700 *)_globals->_sceneManager._scene;
|
|
|
|
switch (action) {
|
|
case CURSOR_LOOK:
|
|
if (_globals->getFlag(78))
|
|
SceneItem::display2(7700, 45);
|
|
else
|
|
SceneItem::display2(7700, 44);
|
|
break;
|
|
case CURSOR_USE:
|
|
if (_globals->getFlag(78)) {
|
|
SceneItem::display2(7701, 41);
|
|
} else {
|
|
scene->_sceneMode = 7712;
|
|
scene->setAction(&scene->_sequenceManager, scene, 7714, NULL);
|
|
}
|
|
break;
|
|
case CURSOR_TALK:
|
|
if (_globals->getFlag(78)) {
|
|
SceneItem::display2(7702, 1);
|
|
} else {
|
|
_globals->_player.disableControl();
|
|
if (_state == 0) {
|
|
_state = 1;
|
|
scene->_sceneMode = 7703;
|
|
scene->setAction(&scene->_sequenceManager, scene, 7703, NULL);
|
|
} else {
|
|
scene->_sceneMode = 7712;
|
|
scene->setAction(&scene->_sequenceManager, scene, 7712, NULL);
|
|
}
|
|
}
|
|
break;
|
|
case OBJECT_STUNNER:
|
|
if (!_globals->getFlag(78)) {
|
|
_globals->_soundHandler.stop();
|
|
_globals->setFlag(78);
|
|
setAction(NULL);
|
|
_globals->_player.disableControl();
|
|
scene->_sceneMode = 7704;
|
|
scene->setAction(&scene->_sequenceManager, scene, 7704, &_globals->_player, this, NULL);
|
|
}
|
|
break;
|
|
default:
|
|
SceneHotspot::doAction(action);
|
|
break;
|
|
}
|
|
}
|
|
|
|
void Scene7700::Object8::doAction(int action) {
|
|
Scene7700 *scene = (Scene7700 *)_globals->_sceneManager._scene;
|
|
|
|
if ((action == CURSOR_LOOK) || (action == CURSOR_USE)) {
|
|
if (_strip == 3) {
|
|
scene->_object9.postInit();
|
|
scene->_object9.setVisage(7701);
|
|
scene->_object9.setStrip2(3);
|
|
scene->_object9.setPosition(Common::Point(91, 166));
|
|
scene->_object9.fixPriority(200);
|
|
|
|
scene->_object14.postInit();
|
|
scene->_object14.setVisage(7701);
|
|
scene->_object14.setStrip(2);
|
|
scene->_object14.fixPriority(250);
|
|
scene->_object14.setPosition(Common::Point(139, 151));
|
|
|
|
scene->_gfxButton.setText(EXIT_MSG);
|
|
scene->_gfxButton._bounds.center(140, 189);
|
|
scene->_gfxButton.draw();
|
|
|
|
_globals->_sceneItems.push_front(&scene->_sceneItem10);
|
|
_globals->_sceneItems.push_front(&scene->_object9);
|
|
_globals->_player._canWalk = false;
|
|
} else if (_globals->getFlag(78)) {
|
|
scene->_object15.postInit();
|
|
scene->_object15.setVisage(7701);
|
|
scene->_object15.setPosition(Common::Point(140, 165));
|
|
scene->_object15.fixPriority(200);
|
|
|
|
scene->_gfxButton.setText(EXIT_MSG);
|
|
scene->_gfxButton._bounds.center(140, 186);
|
|
scene->_gfxButton.draw();
|
|
scene->_gfxButton._bounds.expandPanes();
|
|
|
|
scene->_object19.postInit();
|
|
scene->_object19.setVisage(7700);
|
|
scene->_object19.setStrip(6);
|
|
scene->_object19.setPosition(Common::Point(140, 192));
|
|
|
|
_globals->_sceneItems.push_front(&scene->_sceneItem10);
|
|
_globals->_sceneItems.push_front(&scene->_sceneHotspot8);
|
|
_globals->_sceneItems.push_front(&scene->_sceneHotspot9);
|
|
_globals->_events.setCursor(CURSOR_WALK);
|
|
_globals->_player._canWalk = false;
|
|
} else {
|
|
scene->setAction(&scene->_sequenceManager, scene, 7715, NULL);
|
|
}
|
|
} else {
|
|
SceneHotspot::doAction(action);
|
|
}
|
|
}
|
|
|
|
void Scene7700::Object9::doAction(int action) {
|
|
Scene7700 *scene = (Scene7700 *)_globals->_sceneManager._scene;
|
|
|
|
switch (action) {
|
|
case CURSOR_LOOK:
|
|
SceneItem::display2(7700, 49);
|
|
break;
|
|
case CURSOR_USE:
|
|
SceneItem::display2(7701, 42);
|
|
break;
|
|
case CURSOR_TALK:
|
|
SceneItem::display2(7702, 4);
|
|
break;
|
|
case OBJECT_KEY:
|
|
if (_frame == 1) {
|
|
if (!_globals->getFlag(80)) {
|
|
scene->_object10.postInit();
|
|
scene->_object10.setVisage(7701);
|
|
scene->_object10.setStrip(4);
|
|
scene->_object10.setPosition(Common::Point(159, 136));
|
|
_globals->_sceneItems.push_front(&scene->_object10);
|
|
scene->_object10.fixPriority(240);
|
|
}
|
|
|
|
scene->_soundHandler.play(262);
|
|
scene->_object14.animate(ANIM_MODE_5, NULL);
|
|
}
|
|
_globals->_events.setCursor(CURSOR_WALK);
|
|
break;
|
|
default:
|
|
SceneHotspot::doAction(action);
|
|
}
|
|
}
|
|
|
|
void Scene7700::Object10::doAction(int action) {
|
|
Scene7700 *scene = (Scene7700 *)_globals->_sceneManager._scene;
|
|
|
|
if (action == CURSOR_LOOK) {
|
|
SceneItem::display2(7700, 50);
|
|
} else if (action == CURSOR_USE) {
|
|
_globals->_player._canWalk = true;
|
|
RING_INVENTORY._translator._sceneNumber = 1;
|
|
_globals->setFlag(80);
|
|
scene->_sceneItem10.remove();
|
|
scene->_gfxButton._bounds.expandPanes();
|
|
scene->_object14.remove();
|
|
scene->_object9.remove();
|
|
remove();
|
|
} else {
|
|
SceneHotspot::doAction(action);
|
|
}
|
|
}
|
|
|
|
void Scene7700::Object11::doAction(int action) {
|
|
Scene7700 *scene = (Scene7700 *)_globals->_sceneManager._scene;
|
|
|
|
switch (action) {
|
|
case OBJECT_SCANNER:
|
|
if (_frame != 1)
|
|
SceneItem::display2(7701, 44);
|
|
else
|
|
SceneItem::doAction(action);
|
|
break;
|
|
case CURSOR_LOOK:
|
|
if (_frame != 1)
|
|
SceneItem::display2(7700, 9);
|
|
else
|
|
SceneItem::display2(7700, 52);
|
|
break;
|
|
case CURSOR_USE:
|
|
if (_frame != 1) {
|
|
SceneItem::display2(7701, 8);
|
|
} else {
|
|
_globals->setFlag(49);
|
|
_globals->_player.disableControl();
|
|
scene->_sceneMode = 7706;
|
|
scene->setAction(&scene->_sequenceManager, scene, 7706, &_globals->_player, this, NULL);
|
|
}
|
|
break;
|
|
case OBJECT_EMPTY_JAR:
|
|
RING_INVENTORY._emptyJar._sceneNumber = 0;
|
|
RING_INVENTORY._jar._sceneNumber = 1;
|
|
_globals->_player.disableControl();
|
|
scene->_sceneMode = 7710;
|
|
scene->setAction(&scene->_sequenceManager, scene, 7710, &_globals->_player, NULL);
|
|
break;
|
|
default:
|
|
SceneHotspot::doAction(action);
|
|
}
|
|
}
|
|
|
|
void Scene7700::Object12::doAction(int action) {
|
|
Scene7700 *scene = (Scene7700 *)_globals->_sceneManager._scene;
|
|
|
|
if (action == CURSOR_LOOK) {
|
|
SceneItem::display2(7700, 15);
|
|
} else if (action == CURSOR_USE) {
|
|
if (_globals->getFlag(78)) {
|
|
scene->_sceneMode = 7713;
|
|
scene->setAction(&scene->_sequenceManager, scene, 7713, &_globals->_player, NULL);
|
|
} else {
|
|
scene->_sceneMode = 7712;
|
|
scene->setAction(&scene->_sequenceManager, scene, 7715, NULL);
|
|
}
|
|
} else {
|
|
SceneHotspot::doAction(action);
|
|
}
|
|
}
|
|
|
|
void Scene7700::signal() {
|
|
switch (_sceneMode) {
|
|
case 7701:
|
|
_globals->_player.fixPriority(-1);
|
|
_globals->_player.setStrip2(-1);
|
|
if (_globals->getFlag(78)) {
|
|
_globals->_player.enableControl();
|
|
} else {
|
|
_sceneMode = 7711;
|
|
setAction(&_sequenceManager, this, 7711, NULL);
|
|
}
|
|
break;
|
|
case 7702:
|
|
_soundHandler.fadeOut(0);
|
|
_globals->_sceneManager.changeScene(7600);
|
|
break;
|
|
case 7703:
|
|
case 7706:
|
|
case 7707:
|
|
case 7711:
|
|
case 7712:
|
|
_globals->_player.enableControl();
|
|
break;
|
|
case 7704:
|
|
_globals->_soundHandler.play(256);
|
|
_prof.setStrip2(4);
|
|
_prof.setFrame2(1);
|
|
_prof.setPosition(Common::Point(159, 87));
|
|
_globals->_player.enableControl();
|
|
break;
|
|
case 7705:
|
|
RING_INVENTORY._key._sceneNumber = 1;
|
|
_globals->_player.enableControl();
|
|
break;
|
|
case 7708:
|
|
RING_INVENTORY._paper._sceneNumber = 1;
|
|
_globals->_player.enableControl();
|
|
break;
|
|
case 7709:
|
|
_globals->_events.setCursor(CURSOR_USE);
|
|
break;
|
|
case 7710:
|
|
_globals->_player.enableControl();
|
|
SceneItem::display2(7700, 62);
|
|
break;
|
|
case 7713:
|
|
_emptyJar.remove();
|
|
RING_INVENTORY._emptyJar._sceneNumber = 1;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void Scene7700::process(Event &event) {
|
|
Scene::process(event);
|
|
|
|
if (contains<SceneItem *>(_globals->_sceneItems, &_sceneItem10)) {
|
|
if (_gfxButton.process(event)) {
|
|
_sceneItem10.remove();
|
|
_object15.remove();
|
|
_object9.remove();
|
|
if (_globals->_sceneObjects->contains(&_object10))
|
|
_object10.remove();
|
|
if (_globals->_sceneObjects->contains(&_object14))
|
|
_object14.remove();
|
|
_object19.remove();
|
|
_gfxButton._bounds.expandPanes();
|
|
_globals->_player._canWalk = true;
|
|
}
|
|
}
|
|
if ((event.eventType == EVENT_KEYPRESS) && (event.kbd.keycode == Common::KEYCODE_p)) {
|
|
event.handled = true;
|
|
if (!_globals->_sceneObjects->contains(&_easterEgg1)) {
|
|
_easterEgg1.postInit();
|
|
_easterEgg1.setVisage(7708);
|
|
_easterEgg1.setPosition(Common::Point(163, 50));
|
|
_easterEgg1.fixPriority(1);
|
|
_easterEgg1.animate(ANIM_MODE_2, NULL);
|
|
_easterEgg1.setAction(&_action6);
|
|
}
|
|
}
|
|
}
|
|
|
|
void Scene7700::dispatch() {
|
|
if ((_globals->_sceneRegions.indexOf(_globals->_player._position) == 6) || (_globals->_player._position.x < 10))
|
|
_globals->_player.changeZoom(100 - ((_globals->_player._position.y - 68) / 2));
|
|
else
|
|
_globals->_player.changeZoom(-1);
|
|
|
|
if ((_action == 0) && (_globals->_sceneRegions.indexOf(_globals->_player._position) == 30)) {
|
|
_globals->_player.disableControl();
|
|
_sceneMode = 7702;
|
|
setAction(&_sequenceManager, this, 7702, &_globals->_player, NULL);
|
|
}
|
|
Scene::dispatch();
|
|
}
|
|
|
|
void Scene7700::postInit(SceneObjectList *OwnerList) {
|
|
loadScene(7700);
|
|
Scene::postInit();
|
|
setZoomPercents(100, 80, 200, 100);
|
|
_globals->setFlag(53);
|
|
_field97B = 0;
|
|
_field979 = 0;
|
|
_field977 = 0;
|
|
|
|
_stripManager.addSpeaker(&_speakerEText);
|
|
_stripManager.addSpeaker(&_speakerQText);
|
|
_speakerQText._npc = &_globals->_player;
|
|
_speakerEText._npc = &_prof;
|
|
|
|
_globals->_player.postInit();
|
|
_globals->_player.setVisage(4201);
|
|
_globals->_player.animate(ANIM_MODE_1, NULL);
|
|
SceneObjectWrapper *wrapper = new SceneObjectWrapper();
|
|
_globals->_player.setObjectWrapper(wrapper);
|
|
_globals->_player.setPosition(Common::Point(-19, 68));
|
|
_globals->_player.setStrip2(7);
|
|
_globals->_player.fixPriority(95);
|
|
_globals->_player.changeZoom(80);
|
|
_globals->_player._moveDiff.x = 6;
|
|
_globals->_player._moveDiff.y = 3;
|
|
_globals->_player.disableControl();
|
|
|
|
_prof.postInit();
|
|
_prof.setVisage(7706);
|
|
|
|
if (_globals->getFlag(78)) {
|
|
_prof.setStrip2(4);
|
|
_prof.fixPriority(80);
|
|
_prof.setPosition(Common::Point(159, 87));
|
|
} else {
|
|
_prof.setPosition(Common::Point(203, 87));
|
|
_prof.setStrip2(2);
|
|
_prof._numFrames = 6;
|
|
_prof.setAction(&_action2);
|
|
}
|
|
|
|
_cloud.postInit();
|
|
_cloud.setVisage(7700);
|
|
_cloud.setStrip2(5);
|
|
_cloud.fixPriority(1);
|
|
_cloud.setPosition(Common::Point(133, 160));
|
|
_cloud._moveDiff.x = 1;
|
|
_cloud._moveRate = 7;
|
|
_cloud.setAction(&_action5);
|
|
|
|
_object1.postInit();
|
|
_object1.setVisage(7700);
|
|
_object1.setPosition(Common::Point(184, 61));
|
|
_object1._lookLineNum = 18;
|
|
_object1._defltLineNum = 16;
|
|
|
|
_object2.postInit();
|
|
_object2.setVisage(7700);
|
|
_object2.setPosition(Common::Point(184, 70));
|
|
_object2.fixPriority(60);
|
|
_object2._lookLineNum = 19;
|
|
_object2._defltLineNum = 17;
|
|
|
|
_object3.postInit();
|
|
_object3.setVisage(7703);
|
|
_object3.setPosition(Common::Point(288, 36));
|
|
_object3.setStrip(2);
|
|
|
|
_object4.postInit();
|
|
_object4.setVisage(7700);
|
|
_object4.setPosition(Common::Point(268, 59));
|
|
_object4.setStrip(2);
|
|
_object4._lookLineNum = 37;
|
|
_object4._defltLineNum = 35;
|
|
|
|
_object5.postInit();
|
|
_object5.setVisage(7700);
|
|
_object5.setPosition(Common::Point(268, 67));
|
|
_object5.fixPriority(58);
|
|
_object5.setStrip2(3);
|
|
_object5._lookLineNum = 38;
|
|
_object5._defltLineNum = 36;
|
|
|
|
_object6.postInit();
|
|
_object6.setVisage(7700);
|
|
_object6.setPosition(Common::Point(268, 75));
|
|
_object6.fixPriority(57);
|
|
_object6.setStrip2(4);
|
|
_object6._lookLineNum = 40;
|
|
_object6._defltLineNum = 43;
|
|
|
|
_object8.postInit();
|
|
_object8.setVisage(7703);
|
|
_object8.setPosition(Common::Point(203, 91));
|
|
_object8.setStrip2(4);
|
|
_object8.fixPriority(86);
|
|
|
|
_sceneHotspot8.setBounds(82, 141, 161, 92);
|
|
_sceneHotspot9.setBounds(82, 187, 161, 141);
|
|
|
|
_cork.postInit();
|
|
_cork.setVisage(7703);
|
|
_cork.setPosition(Common::Point(32, 128));
|
|
|
|
if (_globals->getFlag(49))
|
|
_cork.setFrame(_cork.getFrameCount());
|
|
|
|
if (RING_INVENTORY._emptyJar._sceneNumber == 7700) {
|
|
_emptyJar.postInit();
|
|
_emptyJar.setVisage(7700);
|
|
_emptyJar.setStrip(8);
|
|
_emptyJar.setPosition(Common::Point(189, 48));
|
|
_globals->_sceneItems.addItems(&_emptyJar, NULL);
|
|
}
|
|
_sceneHotspot1._sceneRegionId = 28;
|
|
_sceneHotspot2._sceneRegionId = 6;
|
|
_sceneHotspot3._sceneRegionId = 10;
|
|
_sceneHotspot4._sceneRegionId = 11;
|
|
_sceneHotspot5._sceneRegionId = 9;
|
|
_sceneHotspot6._sceneRegionId = 7;
|
|
|
|
_sceneItem7.setBounds(0, 320, 200, 0);
|
|
_sceneItem10.setBounds(0, 320, 200, 0);
|
|
|
|
_sceneHotspot11._sceneRegionId = 57;
|
|
_sceneHotspot11._useLineNum = 0;
|
|
_sceneHotspot11._lookLineNum = 0;
|
|
_sceneHotspot12._sceneRegionId = 2;
|
|
_sceneHotspot12._useLineNum = 2;
|
|
_sceneHotspot12._lookLineNum = 2;
|
|
_sceneHotspot13._sceneRegionId = 12;
|
|
_sceneHotspot13._useLineNum = 3;
|
|
_sceneHotspot13._lookLineNum = 3;
|
|
_sceneHotspot14._sceneRegionId = 18;
|
|
_sceneHotspot14._useLineNum = 4;
|
|
_sceneHotspot14._lookLineNum = 5;
|
|
_sceneHotspot15.setBounds(0, 55, 50, 8);
|
|
_sceneHotspot15._useLineNum = 6;
|
|
_sceneHotspot15._lookLineNum = 7;
|
|
_sceneHotspot16.setBounds(0, 130, 34, 103);
|
|
_sceneHotspot16._useLineNum = 7;
|
|
_sceneHotspot16._lookLineNum = 8;
|
|
_sceneHotspot17.setBounds(41, 180, 46, 170);
|
|
_sceneHotspot17._useLineNum = 11;
|
|
_sceneHotspot17._lookLineNum = 13;
|
|
_sceneHotspot18.setBounds(38, 187, 46, 180);
|
|
_sceneHotspot18._useLineNum = 12;
|
|
_sceneHotspot18._lookLineNum = 14;
|
|
_sceneHotspot19._sceneRegionId = 3;
|
|
_sceneHotspot19._useLineNum = 14;
|
|
_sceneHotspot19._lookLineNum = 16;
|
|
_sceneHotspot20._sceneRegionId = 14;
|
|
_sceneHotspot20._useLineNum = 15;
|
|
_sceneHotspot20._lookLineNum = 17;
|
|
_sceneHotspot21.setBounds(9, 215, 26, 210);
|
|
_sceneHotspot21._useLineNum = 18;
|
|
_sceneHotspot21._lookLineNum = 20;
|
|
_sceneHotspot22.setBounds(10, 221, 26, 215);
|
|
_sceneHotspot22._useLineNum = 19;
|
|
_sceneHotspot22._lookLineNum = 21;
|
|
_sceneHotspot23.setBounds(6, 230, 26, 225);
|
|
_sceneHotspot23._useLineNum = 20;
|
|
_sceneHotspot23._lookLineNum = 22;
|
|
_sceneHotspot24._sceneRegionId = 13;
|
|
_sceneHotspot24._useLineNum = 21;
|
|
_sceneHotspot24._lookLineNum = 23;
|
|
_sceneHotspot25._sceneRegionId = 21;
|
|
_sceneHotspot25._useLineNum = 22;
|
|
_sceneHotspot25._lookLineNum = 24;
|
|
_sceneHotspot26._sceneRegionId = 19;
|
|
_sceneHotspot26._useLineNum = 23;
|
|
_sceneHotspot26._lookLineNum = 25;
|
|
_sceneHotspot27._sceneRegionId = 27;
|
|
_sceneHotspot27._useLineNum = 24;
|
|
_sceneHotspot27._lookLineNum = 26;
|
|
_sceneHotspot28._sceneRegionId = 15;
|
|
_sceneHotspot28._useLineNum = 25;
|
|
_sceneHotspot28._lookLineNum = 27;
|
|
_sceneHotspot29._sceneRegionId = 26;
|
|
_sceneHotspot29._useLineNum = 27;
|
|
_sceneHotspot29._lookLineNum = 29;
|
|
_sceneHotspot30.setBounds(0, 317, 34, 310);
|
|
_sceneHotspot30._useLineNum = 28;
|
|
_sceneHotspot30._lookLineNum = 30;
|
|
_sceneHotspot31._sceneRegionId = 17;
|
|
_sceneHotspot31._useLineNum = 29;
|
|
_sceneHotspot31._lookLineNum = 31;
|
|
_sceneHotspot32._sceneRegionId = 25;
|
|
_sceneHotspot32._useLineNum = 30;
|
|
_sceneHotspot32._lookLineNum = 32;
|
|
_sceneHotspot33._sceneRegionId = 5;
|
|
_sceneHotspot33._useLineNum = 31;
|
|
_sceneHotspot33._lookLineNum = 33;
|
|
_sceneHotspot34.setBounds(42, 292, 48, 281);
|
|
_sceneHotspot34._useLineNum = 32;
|
|
_sceneHotspot34._lookLineNum = 35;
|
|
_sceneHotspot35._sceneRegionId = 24;
|
|
_sceneHotspot35._useLineNum = 38;
|
|
_sceneHotspot35._lookLineNum = 41;
|
|
_sceneHotspot36._sceneRegionId = 1;
|
|
_sceneHotspot36._useLineNum = 39;
|
|
_sceneHotspot36._lookLineNum = 42;
|
|
|
|
_globals->_sceneItems.addItems(&_prof, &_sceneHotspot35, &_object8, &_sceneHotspot34, &_sceneHotspot33, &_sceneHotspot32, NULL);
|
|
_globals->_sceneItems.addItems(&_sceneHotspot31, &_sceneHotspot30, &_sceneHotspot29, &_sceneHotspot5, &_sceneHotspot28, &_sceneHotspot27, NULL);
|
|
_globals->_sceneItems.addItems(&_sceneHotspot26, &_sceneHotspot25, &_sceneHotspot24, &_sceneHotspot23, &_sceneHotspot22, &_sceneHotspot21, NULL);
|
|
_globals->_sceneItems.addItems(&_sceneHotspot20, &_sceneHotspot19, &_sceneHotspot18, &_sceneHotspot17, &_sceneHotspot4, &_sceneHotspot3, NULL);
|
|
_globals->_sceneItems.addItems(&_sceneHotspot16, &_sceneHotspot15, &_sceneHotspot2, &_sceneHotspot14, &_cork, &_sceneHotspot1, NULL);
|
|
_globals->_sceneItems.addItems(&_sceneHotspot13, &_sceneHotspot12, &_sceneHotspot11, &_object2, &_object1, &_object3, NULL);
|
|
_globals->_sceneItems.addItems(&_object6, &_object5, &_object4, &_sceneHotspot6, &_sceneHotspot36, &_sceneItem7, NULL);
|
|
|
|
_sceneMode = 7701;
|
|
setAction(&_sequenceManager, this, 7701, &_globals->_player, NULL);
|
|
_soundHandler.play(256);
|
|
}
|
|
|
|
Scene7700::Scene7700() {
|
|
_object1._state = 0;
|
|
_object2._state = 0;
|
|
_object4._state = 0;
|
|
_object5._state = 0;
|
|
_object6._state = 0;
|
|
_prof._state = 0;
|
|
}
|
|
|
|
void Scene7700::synchronize(Serializer &s) {
|
|
Scene::synchronize(s);
|
|
if (s.getVersion() >= 3) {
|
|
s.syncAsSint16LE(_field977);
|
|
s.syncAsSint16LE(_field979);
|
|
s.syncAsSint16LE(_field97B);
|
|
}
|
|
}
|
|
|
|
} // End of namespace tSage
|