mirror of
https://github.com/libretro/scummvm.git
synced 2025-04-03 15:21:40 +00:00
TSAGE: R2R - Implement Scene 2700
This commit is contained in:
parent
d97d8b1d06
commit
ee43bfed74
@ -108,51 +108,53 @@ Scene *Ringworld2Game::createScene(int sceneNumber) {
|
||||
/* Scene group #2 */
|
||||
//
|
||||
case 2000:
|
||||
// Maze
|
||||
// Ice Maze
|
||||
return new Scene2000();
|
||||
case 2350:
|
||||
// Maze: Balloon Launch Platform
|
||||
// Ice Maze: Balloon Launch Platform
|
||||
return new Scene2350();
|
||||
case 2400:
|
||||
// Maze: Large empty room
|
||||
// Ice Maze: Large empty room
|
||||
return new Scene2400();
|
||||
case 2425:
|
||||
// Maze:
|
||||
// Ice Maze:
|
||||
return new Scene2425();
|
||||
case 2430:
|
||||
// Maze: Bedroom
|
||||
// Ice Maze: Bedroom
|
||||
return new Scene2430();
|
||||
case 2435:
|
||||
// Maze: Throne room
|
||||
// Ice Maze: Throne room
|
||||
return new Scene2435();
|
||||
case 2440:
|
||||
// Maze: Another bedroom
|
||||
// Ice Maze: Another bedroom
|
||||
return new Scene2440();
|
||||
case 2445:
|
||||
// Maze:
|
||||
// Ice Maze:
|
||||
return new Scene2445();
|
||||
case 2450:
|
||||
// Maze: Another bedroom
|
||||
// Ice Maze: Another bedroom
|
||||
return new Scene2450();
|
||||
case 2455:
|
||||
// Maze: Inside crevasse
|
||||
// Ice Maze: Inside crevasse
|
||||
return new Scene2455();
|
||||
case 2500:
|
||||
// Maze: Large Cave
|
||||
// Ice Maze: Large Cave
|
||||
return new Scene2500();
|
||||
case 2525:
|
||||
// Maze: Furnace room
|
||||
// Ice Maze: Furnace room
|
||||
return new Scene2525();
|
||||
case 2530:
|
||||
// Maze: Well
|
||||
// Ice Maze: Well
|
||||
return new Scene2530();
|
||||
case 2535:
|
||||
// Maze: Tannery
|
||||
// Ice Maze: Tannery
|
||||
return new Scene2535();
|
||||
case 2600:
|
||||
// Maze: Exit
|
||||
// Ice Maze: Exit
|
||||
return new Scene2600();
|
||||
case 2700:
|
||||
// Forest Maze
|
||||
return new Scene2700();
|
||||
case 2750:
|
||||
case 2800:
|
||||
case 2900:
|
||||
|
@ -30,7 +30,7 @@ namespace TsAGE {
|
||||
namespace Ringworld2 {
|
||||
|
||||
/*--------------------------------------------------------------------------
|
||||
* Scene 2000 - Maze
|
||||
* Scene 2000 - Ice Maze
|
||||
*
|
||||
*--------------------------------------------------------------------------*/
|
||||
void Scene2000::initPlayer() {
|
||||
@ -1222,7 +1222,7 @@ void Scene2350::process(Event &event) {
|
||||
}
|
||||
|
||||
/*--------------------------------------------------------------------------
|
||||
* Scene 2400 - Maze: Large empty room
|
||||
* Scene 2400 - Ice Maze: Large empty room
|
||||
*
|
||||
*--------------------------------------------------------------------------*/
|
||||
void Scene2400::Exit1::changeScene() {
|
||||
@ -1284,7 +1284,7 @@ void Scene2400::signal() {
|
||||
}
|
||||
|
||||
/*--------------------------------------------------------------------------
|
||||
* Scene 2425 - Maze:
|
||||
* Scene 2425 - Ice Maze:
|
||||
*
|
||||
*--------------------------------------------------------------------------*/
|
||||
|
||||
@ -1499,7 +1499,7 @@ void Scene2425::signal() {
|
||||
}
|
||||
|
||||
/*--------------------------------------------------------------------------
|
||||
* Scene 2430 - Maze: Bedroom
|
||||
* Scene 2430 - Ice Maze: Bedroom
|
||||
*
|
||||
*--------------------------------------------------------------------------*/
|
||||
|
||||
@ -1638,7 +1638,7 @@ void Scene2430::signal() {
|
||||
}
|
||||
|
||||
/*--------------------------------------------------------------------------
|
||||
* Scene 2435 - Maze: Throne room
|
||||
* Scene 2435 - Ice Maze: Throne room
|
||||
*
|
||||
*--------------------------------------------------------------------------*/
|
||||
bool Scene2435::Actor1::startAction(CursorType action, Event &event) {
|
||||
@ -1796,7 +1796,7 @@ void Scene2435::signal() {
|
||||
}
|
||||
|
||||
/*--------------------------------------------------------------------------
|
||||
* Scene 2440 - Maze: Another bedroom
|
||||
* Scene 2440 - Ice Maze: Another bedroom
|
||||
*
|
||||
*--------------------------------------------------------------------------*/
|
||||
|
||||
@ -1909,7 +1909,7 @@ void Scene2440::signal() {
|
||||
}
|
||||
|
||||
/*--------------------------------------------------------------------------
|
||||
* Scene 2445 - Maze:
|
||||
* Scene 2445 - Ice Maze:
|
||||
*
|
||||
*--------------------------------------------------------------------------*/
|
||||
void Scene2445::postInit(SceneObjectList *OwnerList) {
|
||||
@ -1927,7 +1927,7 @@ void Scene2445::signal() {
|
||||
}
|
||||
|
||||
/*--------------------------------------------------------------------------
|
||||
* Scene 2450 - Maze: Another bedroom
|
||||
* Scene 2450 - Ice Maze: Another bedroom
|
||||
*
|
||||
*--------------------------------------------------------------------------*/
|
||||
|
||||
@ -2219,7 +2219,7 @@ void Scene2450::signal() {
|
||||
}
|
||||
|
||||
/*--------------------------------------------------------------------------
|
||||
* Scene 2455 - Maze: Inside crevasse
|
||||
* Scene 2455 - Ice Maze: Inside crevasse
|
||||
*
|
||||
*--------------------------------------------------------------------------*/
|
||||
|
||||
@ -2399,7 +2399,7 @@ void Scene2455::signal() {
|
||||
}
|
||||
|
||||
/*--------------------------------------------------------------------------
|
||||
* Scene 2500 - Maze: Large Cave
|
||||
* Scene 2500 - Ice Maze: Large Cave
|
||||
*
|
||||
*--------------------------------------------------------------------------*/
|
||||
|
||||
@ -2644,7 +2644,7 @@ void Scene2525::signal() {
|
||||
}
|
||||
|
||||
/*--------------------------------------------------------------------------
|
||||
* Scene 2530 - Maze: Well
|
||||
* Scene 2530 - Ice Maze: Well
|
||||
*
|
||||
*--------------------------------------------------------------------------*/
|
||||
bool Scene2530::Actor2::startAction(CursorType action, Event &event) {
|
||||
@ -2801,7 +2801,7 @@ void Scene2530::signal() {
|
||||
}
|
||||
|
||||
/*--------------------------------------------------------------------------
|
||||
* Scene 2535 - Maze: Tannery
|
||||
* Scene 2535 - Ice Maze: Tannery
|
||||
*
|
||||
*--------------------------------------------------------------------------*/
|
||||
|
||||
@ -2846,6 +2846,7 @@ bool Scene2535::Actor4::startAction(CursorType action, Event &event) {
|
||||
|
||||
void Scene2535::Exit1::changeScene() {
|
||||
Scene2535 *scene = (Scene2535 *)R2_GLOBALS._sceneManager._scene;
|
||||
|
||||
_enabled = false;
|
||||
R2_GLOBALS._events.setCursor(CURSOR_ARROW);
|
||||
R2_GLOBALS._player.disableControl();
|
||||
@ -2984,7 +2985,7 @@ void Scene2535::signal() {
|
||||
}
|
||||
|
||||
/*--------------------------------------------------------------------------
|
||||
* Scene 2600 - Maze: Exit
|
||||
* Scene 2600 - Ice Maze: Exit
|
||||
*
|
||||
*--------------------------------------------------------------------------*/
|
||||
Scene2600::Scene2600(): SceneExt() {
|
||||
@ -3024,5 +3025,686 @@ void Scene2600::signal() {
|
||||
g_globals->_sceneManager.changeScene(3800);
|
||||
}
|
||||
|
||||
/*--------------------------------------------------------------------------
|
||||
* Scene 2700 - Forest Maze
|
||||
*
|
||||
*--------------------------------------------------------------------------*/
|
||||
Scene2700::Scene2700(): SceneExt() {
|
||||
_field412 = _field414 = _field416 = 0;
|
||||
}
|
||||
|
||||
void Scene2700::synchronize(Serializer &s) {
|
||||
SceneExt::synchronize(s);
|
||||
|
||||
s.syncAsSint16LE(_field412);
|
||||
s.syncAsSint16LE(_field414);
|
||||
s.syncAsSint16LE(_field416);
|
||||
}
|
||||
|
||||
void Scene2700::Action1::signal() {
|
||||
Scene2700 *scene = (Scene2700 *)R2_GLOBALS._sceneManager._scene;
|
||||
|
||||
setDelay(600 + R2_GLOBALS._randomSource.getRandomNumber(300));
|
||||
scene->_actor2.animate(ANIM_MODE_5, NULL);
|
||||
}
|
||||
|
||||
void Scene2700::Action2::signal() {
|
||||
Scene2700 *scene = (Scene2700 *)R2_GLOBALS._sceneManager._scene;
|
||||
|
||||
setDelay(300 + R2_GLOBALS._randomSource.getRandomNumber(300));
|
||||
scene->_actor3.animate(ANIM_MODE_5, NULL);
|
||||
}
|
||||
|
||||
void Scene2700::Action3::signal() {
|
||||
Scene2700 *scene = (Scene2700 *)R2_GLOBALS._sceneManager._scene;
|
||||
|
||||
setDelay(450 + R2_GLOBALS._randomSource.getRandomNumber(450));
|
||||
scene->_actor4.animate(ANIM_MODE_8, 1, NULL);
|
||||
}
|
||||
|
||||
void Scene2700::Action4::signal() {
|
||||
Scene2700 *scene = (Scene2700 *)R2_GLOBALS._sceneManager._scene;
|
||||
|
||||
setDelay(300 + R2_GLOBALS._randomSource.getRandomNumber(300));
|
||||
scene->_actor5.animate(ANIM_MODE_8, 1, NULL);
|
||||
}
|
||||
|
||||
void Scene2700::Area1::process(Event &event) {
|
||||
SceneArea::process(event);
|
||||
if ((event.eventType == 1) && (R2_GLOBALS._player._canWalk) && (_bounds.contains(event.mousePos.x, event.mousePos.y))) {
|
||||
Scene2700 *scene = (Scene2700 *)R2_GLOBALS._sceneManager._scene;
|
||||
R2_GLOBALS._player.disableControl();
|
||||
scene->_sceneMode = 10;
|
||||
scene->_field414 = 2703;
|
||||
switch (scene->_field412) {
|
||||
case 0:
|
||||
// No break on purpose
|
||||
case 6:
|
||||
scene->_sceneMode = 2703;
|
||||
scene->setAction(&scene->_sequenceManager, scene, 2703, &R2_GLOBALS._player, NULL);
|
||||
break;
|
||||
case 1: {
|
||||
Common::Point pt(80, 137);
|
||||
NpcMover *mover = new NpcMover();
|
||||
R2_GLOBALS._player.addMover(mover, &pt, scene);
|
||||
break;
|
||||
}
|
||||
case 2: {
|
||||
Common::Point pt(155, 137);
|
||||
NpcMover *mover = new NpcMover();
|
||||
R2_GLOBALS._player.addMover(mover, &pt, scene);
|
||||
break;
|
||||
}
|
||||
case 3: {
|
||||
Common::Point pt(140, 162);
|
||||
NpcMover *mover = new NpcMover();
|
||||
R2_GLOBALS._player.addMover(mover, &pt, scene);
|
||||
break;
|
||||
}
|
||||
case 4: {
|
||||
Common::Point pt(155, 137);
|
||||
NpcMover *mover = new NpcMover();
|
||||
R2_GLOBALS._player.addMover(mover, &pt, scene);
|
||||
break;
|
||||
}
|
||||
case 5: {
|
||||
Common::Point pt(235, 132);
|
||||
NpcMover *mover = new NpcMover();
|
||||
R2_GLOBALS._player.addMover(mover, &pt, scene);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Scene2700::Area2::process(Event &event) {
|
||||
SceneArea::process(event);
|
||||
if ((event.eventType == 1) && (R2_GLOBALS._player._canWalk) && (_bounds.contains(event.mousePos.x, event.mousePos.y))) {
|
||||
Scene2700 *scene = (Scene2700 *)R2_GLOBALS._sceneManager._scene;
|
||||
R2_GLOBALS._player.disableControl();
|
||||
scene->_sceneMode = 10;
|
||||
scene->_field414 = 2704;
|
||||
switch (scene->_field412) {
|
||||
case 0: {
|
||||
Common::Point pt(140, 162);
|
||||
NpcMover *mover = new NpcMover();
|
||||
R2_GLOBALS._player.addMover(mover, &pt, scene);
|
||||
break;
|
||||
}
|
||||
case 1: {
|
||||
Common::Point pt(80, 137);
|
||||
NpcMover *mover = new NpcMover();
|
||||
R2_GLOBALS._player.addMover(mover, &pt, scene);
|
||||
break;
|
||||
}
|
||||
case 2: {
|
||||
Common::Point pt(155, 137);
|
||||
NpcMover *mover = new NpcMover();
|
||||
R2_GLOBALS._player.addMover(mover, &pt, scene);
|
||||
break;
|
||||
}
|
||||
case 3: {
|
||||
Common::Point pt(155, 137);
|
||||
NpcMover *mover = new NpcMover();
|
||||
R2_GLOBALS._player.addMover(mover, &pt, scene);
|
||||
break;
|
||||
}
|
||||
case 4: {
|
||||
Common::Point pt(235, 132);
|
||||
NpcMover *mover = new NpcMover();
|
||||
R2_GLOBALS._player.addMover(mover, &pt, scene);
|
||||
break;
|
||||
}
|
||||
case 5:
|
||||
scene->_sceneMode = 2704;
|
||||
scene->setAction(&scene->_sequenceManager, scene, 2704, &R2_GLOBALS._player, NULL);
|
||||
break;
|
||||
case 6: {
|
||||
Common::Point pt(140, 162);
|
||||
NpcMover *mover = new NpcMover();
|
||||
R2_GLOBALS._player.addMover(mover, &pt, scene);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Scene2700::postInit(SceneObjectList *OwnerList) {
|
||||
loadScene(2700);
|
||||
SceneExt::postInit();
|
||||
R2_GLOBALS._sound1.stop();
|
||||
R2_GLOBALS._sound2.stop();
|
||||
|
||||
_area1.setDetails(Rect(135, 160, 185, 168), SHADECURSOR_DOWN);
|
||||
_area2.setDetails(Rect(300, 90, 320, 135), EXITCURSOR_E);
|
||||
_rect1.set(70, 122, 90, 132);
|
||||
_rect2.set(150, 122, 160, 132);
|
||||
_rect3.set(90, 142, 130, 157);
|
||||
_rect4.set(175, 137, 200, 147);
|
||||
_rect5.set(280, 127, 300, 137);
|
||||
_rect6.set(240, 157, 265, 167);
|
||||
|
||||
_actor2.postInit();
|
||||
_actor2.setup(2700, 1, 1);
|
||||
_actor2.setPosition(Common::Point(140, 29));
|
||||
_actor2.setAction(&_action1);
|
||||
|
||||
_actor3.postInit();
|
||||
_actor3.setup(2700, 2, 1);
|
||||
_actor3.setPosition(Common::Point(213, 32));
|
||||
_actor3.setAction(&_action2);
|
||||
|
||||
_actor4.postInit();
|
||||
_actor4.setup(2700, 3, 1);
|
||||
_actor4.setPosition(Common::Point(17, 39));
|
||||
_actor4.setAction(&_action3);
|
||||
|
||||
_actor5.postInit();
|
||||
_actor5.setup(2700, 5, 1);
|
||||
_actor5.setPosition(Common::Point(17, 71));
|
||||
_actor5.setAction(&_action4);
|
||||
|
||||
_item2.setDetails(Rect(52, 38, 68, 60), 2700, 4, -1, 6, 1, NULL);
|
||||
_item3.setDetails(Rect(113, 22, 127, 33), 2700, 4, -1, 6, 1, NULL);
|
||||
_item4.setDetails(Rect(161, 44, 170, 52), 2700, 4, -1, 6, 1, NULL);
|
||||
_item5.setDetails(Rect(221, 19, 233, 31), 2700, 4, -1, 6, 1, NULL);
|
||||
_item6.setDetails(Rect(235, 59, 250, 75), 2700, 4, -1, 6, 1, NULL);
|
||||
_item1.setDetails(Rect(0, 0, 320, 200), 2700, 4, -1, 6, 1, NULL);
|
||||
|
||||
_stripManager.setColors(60, 255);
|
||||
_stripManager.setFontNumber(3);
|
||||
_stripManager.addSpeaker(&_quinnSpeaker);
|
||||
_stripManager.addSpeaker(&_nejSpeaker);
|
||||
|
||||
R2_GLOBALS._player.postInit();
|
||||
R2_GLOBALS._player.setVisage(19);
|
||||
R2_GLOBALS._player.animate(ANIM_MODE_1, NULL);
|
||||
R2_GLOBALS._player._moveDiff = Common::Point(2, 2);
|
||||
R2_GLOBALS._player.disableControl();
|
||||
|
||||
if (R2_INVENTORY.getObjectScene(36) == 0)
|
||||
R2_GLOBALS._sound1.changeSound(234);
|
||||
|
||||
if (R2_GLOBALS._sceneManager._previousScene == 2750) {
|
||||
_sceneMode = 2702;
|
||||
_field412 = 5;
|
||||
setAction(&_sequenceManager, this, 2702, &R2_GLOBALS._player, NULL);
|
||||
} else {
|
||||
_field412 = 0;
|
||||
if (R2_GLOBALS._sceneManager._previousScene == 3900) {
|
||||
_sceneMode = 2701;
|
||||
setAction(&_sequenceManager, this, 2701, &R2_GLOBALS._player, NULL);
|
||||
} else {
|
||||
R2_GLOBALS._player.setStrip(3);
|
||||
R2_GLOBALS._player.setPosition(Common::Point(164, 160));
|
||||
R2_GLOBALS._player.enableControl();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Scene2700::signal() {
|
||||
switch (_sceneMode) {
|
||||
case 10:
|
||||
switch (_field414) {
|
||||
case 1:
|
||||
switch (_field412) {
|
||||
case 0:
|
||||
case 2:
|
||||
case 4:
|
||||
case 6:
|
||||
_field412 = 3;
|
||||
R2_GLOBALS._player.setAction(&_sequenceManager, this, 2705, &R2_GLOBALS._player, NULL);
|
||||
break;
|
||||
case 3: {
|
||||
_sceneMode = _field414;
|
||||
_field412 = 1;
|
||||
Common::Point pt(80, 127);
|
||||
NpcMover *mover = new NpcMover();
|
||||
R2_GLOBALS._player.addMover(mover, &pt, this);
|
||||
break;
|
||||
}
|
||||
case 5:
|
||||
_field412 = 4;
|
||||
R2_GLOBALS._player.setAction(&_sequenceManager, this, 2708, &R2_GLOBALS._player, NULL);
|
||||
break;
|
||||
default: // includes case 1
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
switch (_field412) {
|
||||
case 0:
|
||||
case 1:
|
||||
case 6:
|
||||
_field412 = 3;
|
||||
R2_GLOBALS._player.setAction(&_sequenceManager, this, 2706, &R2_GLOBALS._player, NULL);
|
||||
break;
|
||||
case 3:
|
||||
case 4: {
|
||||
_sceneMode = _field414;
|
||||
_field412 = 2;
|
||||
Common::Point pt(155, 127);
|
||||
NpcMover *mover = new NpcMover();
|
||||
R2_GLOBALS._player.addMover(mover, &pt, this);
|
||||
break;
|
||||
}
|
||||
case 5:
|
||||
_field412 = 4;
|
||||
R2_GLOBALS._player.setAction(&_sequenceManager, this, 2708, &R2_GLOBALS._player, NULL);
|
||||
break;
|
||||
default: // includes case 2
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
switch (_field412) {
|
||||
case 0:
|
||||
case 1:
|
||||
case 2:
|
||||
case 4:
|
||||
case 6: {
|
||||
_sceneMode = _field414;
|
||||
_field412 = 3;
|
||||
Common::Point pt(115, 152);
|
||||
NpcMover *mover = new NpcMover();
|
||||
R2_GLOBALS._player.addMover(mover, &pt, this);
|
||||
break;
|
||||
}
|
||||
case 5:
|
||||
_field412 = 4;
|
||||
R2_GLOBALS._player.setAction(&_sequenceManager, this, 2708, &R2_GLOBALS._player, NULL);
|
||||
break;
|
||||
default: // includes case 3
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
switch (_field412) {
|
||||
case 0:
|
||||
case 1:
|
||||
case 6:
|
||||
_field412 = 3;
|
||||
R2_GLOBALS._player.setAction(&_sequenceManager, this, 2706, &R2_GLOBALS._player, NULL);
|
||||
break;
|
||||
case 2:
|
||||
case 3:
|
||||
_field412 = 4;
|
||||
R2_GLOBALS._player.setAction(&_sequenceManager, this, 2709, &R2_GLOBALS._player, NULL);
|
||||
break;
|
||||
case 4:
|
||||
case 5:
|
||||
_sceneMode = _field414;
|
||||
R2_GLOBALS._player.setAction(&_sequenceManager, this, 2704, &R2_GLOBALS._player, NULL);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
switch (_field412) {
|
||||
case 0:
|
||||
case 1:
|
||||
case 6:
|
||||
_field412 = 3;
|
||||
R2_GLOBALS._player.setAction(&_sequenceManager, this, 2706, &R2_GLOBALS._player, NULL);
|
||||
break;
|
||||
case 2:
|
||||
case 3:
|
||||
_field412 = 4;
|
||||
R2_GLOBALS._player.setAction(&_sequenceManager, this, 2709, &R2_GLOBALS._player, NULL);
|
||||
break;
|
||||
case 4: {
|
||||
_sceneMode = _field414;
|
||||
_field412 = 5;
|
||||
Common::Point pt(285, 132);
|
||||
NpcMover *mover = new NpcMover();
|
||||
R2_GLOBALS._player.addMover(mover, &pt, this);
|
||||
break;
|
||||
}
|
||||
default: // includes case 5
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 6:
|
||||
switch (_field412) {
|
||||
case 0:
|
||||
case 3: {
|
||||
_sceneMode = _field414;
|
||||
_field412 = 6;
|
||||
Common::Point pt(250, 162);
|
||||
NpcMover *mover = new NpcMover();
|
||||
R2_GLOBALS._player.addMover(mover, &pt, this);
|
||||
break;
|
||||
}
|
||||
case 1:
|
||||
case 2:
|
||||
case 4:
|
||||
_field412 = 3;
|
||||
R2_GLOBALS._player.setAction(&_sequenceManager, this, 2707, &R2_GLOBALS._player, NULL);
|
||||
break;
|
||||
case 5:
|
||||
_field412 = 4;
|
||||
R2_GLOBALS._player.setAction(&_sequenceManager, this, 2708, &R2_GLOBALS._player, NULL);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 2703:
|
||||
switch (_field412) {
|
||||
case 0:
|
||||
case 3:
|
||||
case 6:
|
||||
_sceneMode = _field414;
|
||||
setAction(&_sequenceManager, this, 2703, &R2_GLOBALS._player, NULL);
|
||||
break;
|
||||
case 1:
|
||||
case 2:
|
||||
case 4:
|
||||
_field412 = 3;
|
||||
R2_GLOBALS._player.setAction(&_sequenceManager, this, 2707, &R2_GLOBALS._player, NULL);
|
||||
break;
|
||||
case 5:
|
||||
_field412 = 4;
|
||||
R2_GLOBALS._player.setAction(&_sequenceManager, this, 2708, &R2_GLOBALS._player, NULL);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 2704:
|
||||
switch (_field412) {
|
||||
case 0:
|
||||
case 1:
|
||||
case 6:
|
||||
_field412 = 3;
|
||||
R2_GLOBALS._player.setAction(&_sequenceManager, this, 2706, &R2_GLOBALS._player, NULL);
|
||||
break;
|
||||
case 2:
|
||||
case 3:
|
||||
_field412 = 4;
|
||||
R2_GLOBALS._player.setAction(&_sequenceManager, this, 2709, &R2_GLOBALS._player, NULL);
|
||||
break;
|
||||
case 4:
|
||||
case 5:
|
||||
_sceneMode = _field414;
|
||||
R2_GLOBALS._player.setAction(&_sequenceManager, this, 2704, &R2_GLOBALS._player, NULL);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 2710:
|
||||
switch (_field412) {
|
||||
case 0:
|
||||
case 1:
|
||||
case 3:
|
||||
_field412 = 3;
|
||||
R2_GLOBALS._player.setAction(&_sequenceManager, this, 2707, &R2_GLOBALS._player, NULL);
|
||||
break;
|
||||
case 2:
|
||||
case 5: {
|
||||
_sceneMode = _field414;
|
||||
Common::Point pt(164, 160);
|
||||
NpcMover *mover = new NpcMover();
|
||||
R2_GLOBALS._player.addMover(mover, &pt, this);
|
||||
break;
|
||||
}
|
||||
case 4:
|
||||
_field412 = 4;
|
||||
R2_GLOBALS._player.setAction(&_sequenceManager, this, 2708, &R2_GLOBALS._player, NULL);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 11:
|
||||
R2_INVENTORY.setObjectScene(36, 0);
|
||||
R2_GLOBALS._player.disableControl();
|
||||
_field412 = 0;
|
||||
_sceneMode = 2700;
|
||||
setAction(&_sequenceManager, this, 2700, &_actor1, NULL);
|
||||
break;
|
||||
case 12:
|
||||
R2_GLOBALS._sound1.play(234);
|
||||
R2_GLOBALS._events.setCursor(CURSOR_CROSSHAIRS);
|
||||
_sceneMode = 2711;
|
||||
_stripManager.start(_field416, this);
|
||||
break;
|
||||
case 13:
|
||||
R2_GLOBALS._events.setCursor(CURSOR_CROSSHAIRS);
|
||||
_sceneMode = 2712;
|
||||
_stripManager.start(_field416, this);
|
||||
break;
|
||||
case 14:
|
||||
R2_GLOBALS._events.setCursor(CURSOR_CROSSHAIRS);
|
||||
_sceneMode = 2713;
|
||||
_stripManager.start(_field416, this);
|
||||
break;
|
||||
case 15:
|
||||
R2_GLOBALS._events.setCursor(CURSOR_CROSSHAIRS);
|
||||
_sceneMode = 11;
|
||||
_stripManager.start(_field416, this);
|
||||
break;
|
||||
case 2700:
|
||||
_actor1.remove();
|
||||
R2_GLOBALS._player.enableControl(CURSOR_ARROW);
|
||||
break;
|
||||
case 2703:
|
||||
g_globals->_sceneManager.changeScene(3900);
|
||||
break;
|
||||
case 2704:
|
||||
g_globals->_sceneManager.changeScene(2750);
|
||||
break;
|
||||
case 2710:
|
||||
_field416 = 1200;
|
||||
_sceneMode = 12;
|
||||
_actor1.postInit();
|
||||
setAction(&_sequenceManager, this, 2710, &R2_GLOBALS._player, &_actor1, NULL);
|
||||
break;
|
||||
case 2711:
|
||||
R2_GLOBALS._player.disableControl();
|
||||
_field416 = 1201;
|
||||
_sceneMode = 13;
|
||||
setAction(&_sequenceManager, this, 2711, &R2_GLOBALS._player, &_actor1, NULL);
|
||||
break;
|
||||
case 2712:
|
||||
R2_GLOBALS._player.disableControl();
|
||||
_field416 = 1202;
|
||||
_sceneMode = 14;
|
||||
setAction(&_sequenceManager, this, 2712, &R2_GLOBALS._player, &_actor1, NULL);
|
||||
break;
|
||||
case 2713:
|
||||
R2_GLOBALS._player.disableControl();
|
||||
_field416 = 1203;
|
||||
_sceneMode = 14;
|
||||
setAction(&_sequenceManager, this, 2713, &R2_GLOBALS._player, &_actor1, NULL);
|
||||
break;
|
||||
default:
|
||||
R2_GLOBALS._player.enableControl(CURSOR_ARROW);
|
||||
break;
|
||||
}
|
||||
}
|
||||
void Scene2700::process(Event &event) {
|
||||
if ((R2_GLOBALS._player._canWalk) && (event.eventType == EVENT_BUTTON_DOWN)) {
|
||||
if (R2_GLOBALS._events.getCursor() == R2_36) {
|
||||
if (R2_GLOBALS._player._bounds.contains(event.mousePos.x, event.mousePos.y)) {
|
||||
_sceneMode = 10;
|
||||
_field414 = 2710;
|
||||
R2_GLOBALS._player.disableControl();
|
||||
R2_GLOBALS._events.setCursor(CURSOR_CROSSHAIRS);
|
||||
switch (_field412) {
|
||||
case 0: {
|
||||
_sceneMode = 2710;
|
||||
Common::Point pt(164, 160);
|
||||
NpcMover *mover = new NpcMover();
|
||||
R2_GLOBALS._player.addMover(mover, &pt, this);
|
||||
break;
|
||||
}
|
||||
case 1: {
|
||||
Common::Point pt(80, 137);
|
||||
NpcMover *mover = new NpcMover();
|
||||
R2_GLOBALS._player.addMover(mover, &pt, this);
|
||||
break;
|
||||
}
|
||||
case 2: {
|
||||
Common::Point pt(155, 137);
|
||||
NpcMover *mover = new NpcMover();
|
||||
R2_GLOBALS._player.addMover(mover, &pt, this);
|
||||
break;
|
||||
}
|
||||
case 3: {
|
||||
Common::Point pt(140, 162);
|
||||
NpcMover *mover = new NpcMover();
|
||||
R2_GLOBALS._player.addMover(mover, &pt, this);
|
||||
break;
|
||||
}
|
||||
case 4: {
|
||||
Common::Point pt(155, 137);
|
||||
NpcMover *mover = new NpcMover();
|
||||
R2_GLOBALS._player.addMover(mover, &pt, this);
|
||||
break;
|
||||
}
|
||||
case 5: {
|
||||
Common::Point pt(235, 132);
|
||||
NpcMover *mover = new NpcMover();
|
||||
R2_GLOBALS._player.addMover(mover, &pt, this);
|
||||
break;
|
||||
}
|
||||
case 6: {
|
||||
Common::Point pt(205, 162);
|
||||
NpcMover *mover = new NpcMover();
|
||||
R2_GLOBALS._player.addMover(mover, &pt, this);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
event.handled = true;
|
||||
} else {
|
||||
SceneItem::display(2700, 3, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, -999);
|
||||
}
|
||||
} else if (R2_GLOBALS._events.getCursor() == R2_NEGATOR_GUN) {
|
||||
if (_rect1.contains(event.mousePos.x, event.mousePos.y)) {
|
||||
if (!_rect1.contains(R2_GLOBALS._player._position.x, R2_GLOBALS._player._position.y)) {
|
||||
event.handled = true;
|
||||
_sceneMode = 10;
|
||||
_field414 = 1;
|
||||
}
|
||||
} else if (_rect2.contains(event.mousePos.x, event.mousePos.y)) {
|
||||
if (!_rect2.contains(R2_GLOBALS._player._position.x, R2_GLOBALS._player._position.y)) {
|
||||
event.handled = true;
|
||||
_sceneMode = 10;
|
||||
_field414 = 2;
|
||||
}
|
||||
} else if (_rect3.contains(event.mousePos.x, event.mousePos.y)) {
|
||||
if (!_rect3.contains(R2_GLOBALS._player._position.x, R2_GLOBALS._player._position.y)) {
|
||||
event.handled = true;
|
||||
_sceneMode = 10;
|
||||
_field414 = 3;
|
||||
}
|
||||
} else if (_rect4.contains(event.mousePos.x, event.mousePos.y)) {
|
||||
if (!_rect4.contains(R2_GLOBALS._player._position.x, R2_GLOBALS._player._position.y)) {
|
||||
event.handled = true;
|
||||
_sceneMode = 10;
|
||||
_field414 = 4;
|
||||
}
|
||||
} else if (_rect5.contains(event.mousePos.x, event.mousePos.y)) {
|
||||
if (!_rect5.contains(R2_GLOBALS._player._position.x, R2_GLOBALS._player._position.y)) {
|
||||
event.handled = true;
|
||||
_sceneMode = 10;
|
||||
_field414 = 5;
|
||||
}
|
||||
} else if (_rect6.contains(event.mousePos.x, event.mousePos.y)) {
|
||||
if (!_rect6.contains(R2_GLOBALS._player._position.x, R2_GLOBALS._player._position.y)) {
|
||||
event.handled = true;
|
||||
_sceneMode = 10;
|
||||
_field414 = 6;
|
||||
}
|
||||
} else {
|
||||
event.handled = true;
|
||||
R2_GLOBALS._player.updateAngle(Common::Point(event.mousePos.x, event.mousePos.y));
|
||||
}
|
||||
if (_sceneMode = 10) {
|
||||
R2_GLOBALS._player.disableControl();
|
||||
switch (_field412) {
|
||||
case 0:
|
||||
if (_field414 >= 6) {
|
||||
Common::Point pt(205, 162);
|
||||
NpcMover *mover = new NpcMover();
|
||||
R2_GLOBALS._player.addMover(mover, &pt, this);
|
||||
} else {
|
||||
Common::Point pt(140, 162);
|
||||
NpcMover *mover = new NpcMover();
|
||||
R2_GLOBALS._player.addMover(mover, &pt, this);
|
||||
}
|
||||
break;
|
||||
case 1: {
|
||||
Common::Point pt(80, 137);
|
||||
NpcMover *mover = new NpcMover();
|
||||
R2_GLOBALS._player.addMover(mover, &pt, this);
|
||||
break;
|
||||
}
|
||||
case 2: {
|
||||
Common::Point pt(155, 137);
|
||||
NpcMover *mover = new NpcMover();
|
||||
R2_GLOBALS._player.addMover(mover, &pt, this);
|
||||
break;
|
||||
}
|
||||
case 3:
|
||||
if (_field414 == 1) {
|
||||
Common::Point pt(80, 137);
|
||||
NpcMover *mover = new NpcMover();
|
||||
R2_GLOBALS._player.addMover(mover, &pt, this);
|
||||
} else if (_field414 == 6) {
|
||||
Common::Point pt(140, 162);
|
||||
NpcMover *mover = new NpcMover();
|
||||
R2_GLOBALS._player.addMover(mover, &pt, this);
|
||||
} else {
|
||||
Common::Point pt(155, 137);
|
||||
NpcMover *mover = new NpcMover();
|
||||
R2_GLOBALS._player.addMover(mover, &pt, this);
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
if (_field414 == 5) {
|
||||
Common::Point pt(235, 132);
|
||||
NpcMover *mover = new NpcMover();
|
||||
R2_GLOBALS._player.addMover(mover, &pt, this);
|
||||
} else {
|
||||
Common::Point pt(155, 137);
|
||||
NpcMover *mover = new NpcMover();
|
||||
R2_GLOBALS._player.addMover(mover, &pt, this);
|
||||
}
|
||||
break;
|
||||
case 5: {
|
||||
Common::Point pt(235, 132);
|
||||
NpcMover *mover = new NpcMover();
|
||||
R2_GLOBALS._player.addMover(mover, &pt, this);
|
||||
break;
|
||||
}
|
||||
case 6: {
|
||||
Common::Point pt(140, 162);
|
||||
NpcMover *mover = new NpcMover();
|
||||
R2_GLOBALS._player.addMover(mover, &pt, this);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Scene::process(event);
|
||||
}
|
||||
|
||||
} // End of namespace Ringworld2
|
||||
} // End of namespace TsAGE
|
||||
|
@ -490,6 +490,63 @@ public:
|
||||
virtual void signal();
|
||||
};
|
||||
|
||||
class Scene2700 : public SceneExt {
|
||||
class Action1: public Action {
|
||||
public:
|
||||
void signal();
|
||||
};
|
||||
class Action2: public Action {
|
||||
public:
|
||||
void signal();
|
||||
};
|
||||
class Action3: public Action {
|
||||
public:
|
||||
void signal();
|
||||
};
|
||||
class Action4: public Action {
|
||||
public:
|
||||
void signal();
|
||||
};
|
||||
|
||||
class Area1: public SceneArea {
|
||||
public:
|
||||
void process(Event &event);
|
||||
};
|
||||
class Area2: public SceneArea {
|
||||
public:
|
||||
void process(Event &event);
|
||||
};
|
||||
public:
|
||||
VisualSpeaker _quinnSpeaker;
|
||||
VisualSpeaker _nejSpeaker;
|
||||
NamedHotspot _item1;
|
||||
NamedHotspot _item2;
|
||||
NamedHotspot _item3;
|
||||
NamedHotspot _item4;
|
||||
NamedHotspot _item5;
|
||||
NamedHotspot _item6;
|
||||
SceneActor _actor1;
|
||||
SceneActor _actor2;
|
||||
SceneActor _actor3;
|
||||
SceneActor _actor4;
|
||||
SceneActor _actor5;
|
||||
Action1 _action1;
|
||||
Action2 _action2;
|
||||
Action3 _action3;
|
||||
Action4 _action4;
|
||||
Area1 _area1;
|
||||
Area2 _area2;
|
||||
Rect _rect1, _rect2, _rect3, _rect4, _rect5, _rect6;
|
||||
SequenceManager _sequenceManager;
|
||||
int _field412, _field414, _field416;
|
||||
|
||||
Scene2700();
|
||||
virtual void synchronize(Serializer &s);
|
||||
virtual void postInit(SceneObjectList *OwnerList = NULL);
|
||||
virtual void signal();
|
||||
virtual void process(Event &event);
|
||||
};
|
||||
|
||||
} // End of namespace Ringworld2
|
||||
} // End of namespace TsAGE
|
||||
|
||||
|
@ -739,5 +739,95 @@ SpeakerWebbster2500::SpeakerWebbster2500() {
|
||||
_numFrames = 0;
|
||||
}
|
||||
|
||||
SpeakerQuinn2700::SpeakerQuinn2700() {
|
||||
_speakerName = "QUINN";
|
||||
_color1 = 60;
|
||||
_color2 = 0;
|
||||
_fieldF6 = 0;
|
||||
_textWidth = 300;
|
||||
_hideObjects = false;
|
||||
_object2 = NULL;
|
||||
_displayMode = 1;
|
||||
_numFrames = 0;
|
||||
}
|
||||
|
||||
void SpeakerQuinn2700::proc15() {
|
||||
int v = _fieldF6;
|
||||
|
||||
if (!_object2) {
|
||||
_object2 = &R2_GLOBALS._player;
|
||||
_object2->hide();
|
||||
_object1.postInit();
|
||||
_object1.setPosition(_object2->_position);
|
||||
|
||||
if (_object2->_mover)
|
||||
_object2->addMover(NULL);
|
||||
}
|
||||
|
||||
if (v == 0) {
|
||||
_object1.animate(ANIM_MODE_2, NULL);
|
||||
} else {
|
||||
((SceneItem *)_action)->_sceneRegionId = 0;
|
||||
switch (_object2->_visage) {
|
||||
case 19:
|
||||
_object1.setup(4022, 5, 1);
|
||||
break;
|
||||
case 2701:
|
||||
_object1.setup(4022, 1, 1);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
_object1.animate(ANIM_MODE_5, this);
|
||||
}
|
||||
}
|
||||
|
||||
SpeakerNej2700::SpeakerNej2700() {
|
||||
_speakerName = "NEJ";
|
||||
_color1 = 171;
|
||||
_color2 = 0;
|
||||
_fieldF6 = 0;
|
||||
_textWidth = 300;
|
||||
_hideObjects = false;
|
||||
_object2 = NULL;
|
||||
_displayMode = 1;
|
||||
_numFrames = 0;
|
||||
}
|
||||
|
||||
void SpeakerNej2700::proc15() {
|
||||
int v = _fieldF6;
|
||||
Scene2700 *scene = (Scene2700 *)R2_GLOBALS._sceneManager._scene;
|
||||
|
||||
if (!_object2) {
|
||||
_object2 = &scene->_actor1;
|
||||
_object2->hide();
|
||||
_object1.postInit();
|
||||
_object1.setPosition(_object2->_position);
|
||||
|
||||
if (_object2->_mover)
|
||||
_object2->addMover(NULL);
|
||||
}
|
||||
|
||||
if (v == 0) {
|
||||
_object1.animate(ANIM_MODE_2, NULL);
|
||||
} else {
|
||||
((SceneItem *)_action)->_sceneRegionId = 0;
|
||||
switch (_object2->_visage) {
|
||||
case 2701:
|
||||
_object1.setup(4022, 3, 1);
|
||||
_object1.setPosition(Common::Point(164, 163));
|
||||
_object2->setPosition(Common::Point(-10, -10));
|
||||
break;
|
||||
case 2705:
|
||||
_object1.setup(4022, 7, 1);
|
||||
_object1.fixPriority(162);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
_object1.animate(ANIM_MODE_5, this);
|
||||
}
|
||||
}
|
||||
|
||||
} // End of namespace Ringworld2
|
||||
} // End of namespace TsAGE
|
||||
|
@ -205,6 +205,22 @@ public:
|
||||
|
||||
virtual Common::String getClassName() { return "SpeakerWebbster2500"; }
|
||||
};
|
||||
|
||||
class SpeakerQuinn2700 : public VisualSpeaker {
|
||||
public:
|
||||
SpeakerQuinn2700();
|
||||
|
||||
virtual Common::String getClassName() { return "SpeakerQuinn2700"; }
|
||||
virtual void proc15();
|
||||
};
|
||||
|
||||
class SpeakerNej2700 : public VisualSpeaker {
|
||||
public:
|
||||
SpeakerNej2700();
|
||||
|
||||
virtual Common::String getClassName() { return "SpeakerNej2700"; }
|
||||
virtual void proc15();
|
||||
};
|
||||
} // End of namespace Ringworld2
|
||||
} // End of namespace TsAGE
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user