Skip to content

Commit

Permalink
TSAGE: R2R - Implement scene 3255
Browse files Browse the repository at this point in the history
  • Loading branch information
Strangerke committed Dec 24, 2011
1 parent 99a5db2 commit 544e241
Show file tree
Hide file tree
Showing 5 changed files with 208 additions and 0 deletions.
1 change: 1 addition & 0 deletions engines/tsage/ringworld2/ringworld2_logic.cpp
Expand Up @@ -206,6 +206,7 @@ Scene *Ringworld2Game::createScene(int sceneNumber) {
// Room with large stasis field negator
return new Scene3250();
case 3255:
return new Scene3255();
case 3260:
// Computer room
return new Scene3260();
Expand Down
105 changes: 105 additions & 0 deletions engines/tsage/ringworld2/ringworld2_scenes3.cpp
Expand Up @@ -1256,6 +1256,111 @@ void Scene3250::dispatch() {
Scene::dispatch();
}

/*--------------------------------------------------------------------------
* Scene 3255 -
*
*--------------------------------------------------------------------------*/
void Scene3255::postInit(SceneObjectList *OwnerList) {
loadScene(3255);
SceneExt::postInit();

_stripManager.addSpeaker(&_quinnSpeaker);
_stripManager.addSpeaker(&_mirandaSpeaker);

if (R2_GLOBALS._sceneManager._previousScene == -1)
R2_GLOBALS.setFlag(79);

R2_GLOBALS._player.postInit();
R2_GLOBALS._player.disableControl();

if (R2_GLOBALS.getFlag(79)) {
R2_GLOBALS._sound1.play(267);
R2_GLOBALS._sound2.play(268);
_sceneMode = 3257;
_actor3.postInit();
_actor4.postInit();
_actor4._effect = 1;
setAction(&_sequenceManager, this, 3257, &R2_GLOBALS._player, &_actor4, &_actor3, NULL);
} else {
_actor1.postInit();
_actor1.setup(303, 1, 1);
_actor1.setPosition(Common::Point(208, 128));
_actor2.postInit();
_actor2.setup(3107, 3, 1);
_actor2.setPosition(Common::Point(230, 127));
_sceneMode = 3255;
setAction(&_sequenceManager, this, 3255, &R2_GLOBALS._player, NULL);
}
R2_GLOBALS._player._oldCharacterScene[3] = 3255;
}

void Scene3255::signal() {
switch (_sceneMode) {
case 10:
_sceneMode = 3258;
_actor5.postInit();
_actor6.postInit();
_actor7.postInit();
setAction(&_sequenceManager, this, 3258, &R2_GLOBALS._player, &_actor4, &_actor3, &_actor5, &_actor6, &_actor7, NULL);
break;
case 3256:
R2_GLOBALS._sceneManager.changeScene(3250);
break;
case 3257:
_sceneMode = 10;
R2_GLOBALS._events.setCursor(CURSOR_CROSSHAIRS);
_stripManager.start(607, this);
break;
case 3258:
R2_GLOBALS._sceneManager.changeScene(3100);
break;
default:
SceneItem::display(3255, 0, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, -999);
_sceneMode = 3256;
setAction(&_sequenceManager, this, 3256, &R2_GLOBALS._player, NULL);
}
}

void Scene3255::dispatch() {
if (R2_GLOBALS.getFlag(79)) {
if (_actor5._position.y >= 95) {
if (_actor5._position.y <= 110)
_actor5._shade = 6 - (_actor5._position.y - 95) / 3;
else
_actor5._effect = 1;
} else {
_actor5._effect = 6;
_actor5._shade = 6;
}

if (_actor6._position.y >= 95) {
if (_actor6._position.y <= 110)
_actor6._shade = 6 - (_actor6._position.y - 95) / 3;
else
_actor6._effect = 1;
} else {
_actor6._effect = 6;
_actor6._shade = 6;
}

if (_actor7._position.y >= 95) {
if (_actor7._position.y <= 110)
_actor7._shade = 6 - (_actor7._position.y - 95) / 3;
else
_actor7._effect = 1;
} else {
_actor7._effect = 6;
_actor7._shade = 6;
}
}

if ((R2_GLOBALS._player._position.x > 250) && (R2_GLOBALS._player._shade == 1)) {
R2_GLOBALS._player._effect = 6;
_actor4._effect = 6;
}
Scene::dispatch();
}

/*--------------------------------------------------------------------------
* Scene 3260 - Computer room
*
Expand Down
18 changes: 18 additions & 0 deletions engines/tsage/ringworld2/ringworld2_scenes3.h
Expand Up @@ -291,6 +291,24 @@ class Scene3250 : public SceneExt {
virtual void dispatch();
};

class Scene3255 : public SceneExt {
public:
SceneActor _actor1;
SceneActor _actor2;
SceneActor _actor3;
SceneActor _actor4;
SceneActor _actor5;
SceneActor _actor6;
SceneActor _actor7;
SpeakerQuinn3255 _quinnSpeaker;
SpeakerMiranda3255 _mirandaSpeaker;
SequenceManager _sequenceManager;

virtual void postInit(SceneObjectList *OwnerList = NULL);
virtual void signal();
virtual void dispatch();
};

class Scene3260 : public SceneExt {
class Actor13 : public SceneActor {
virtual bool startAction(CursorType action, Event &event);
Expand Down
68 changes: 68 additions & 0 deletions engines/tsage/ringworld2/ringworld2_speakers.cpp
Expand Up @@ -1534,5 +1534,73 @@ void SpeakerTomko3245::proc15() {
}
}

SpeakerQuinn3255::SpeakerQuinn3255() {
_speakerName = "QUINN";
_color1 = 60;
_color2 = 0;
_fieldF6 = 0;
_textWidth = 300;
_hideObjects = false;
_object2 = NULL;
_displayMode = 1;
_numFrames = 0;
}

void SpeakerQuinn3255::proc15() {
Scene3255 *scene = (Scene3255 *)R2_GLOBALS._sceneManager._scene;

int v = _fieldF6;

if (!_object2) {
_object2 = &scene->_actor4;
_object2->hide();
_object1.postInit();
_object1._effect = _object2->_effect;
_object1._shade = _object2->_shade;
_object1.setPosition(_object2->_position);
}

if (v == 0) {
_object1.animate(ANIM_MODE_2, NULL);
} else {
((SceneItem *)_action)->_sceneRegionId = 0;
_object1.setup(3257, 3, 1);
_object1.animate(ANIM_MODE_5, this);
}
}

SpeakerMiranda3255::SpeakerMiranda3255() {
_speakerName = "MIRANDA";
_color1 = 154;
_color2 = 0;
_fieldF6 = 0;
_textWidth = 300;
_hideObjects = false;
_object2 = NULL;
_displayMode = 1;
_numFrames = 0;
}

void SpeakerMiranda3255::proc15() {
int v = _fieldF6;

if (!_object2) {
_object2 = &R2_GLOBALS._player;
_object2->hide();
_object1.postInit();
_object1._effect = _object2->_effect;
_object1._shade = _object2->_shade;
_object1.setPosition(_object2->_position);
}

if (v == 0) {
_object1.animate(ANIM_MODE_2, NULL);
} else {
((SceneItem *)_action)->_sceneRegionId = 0;
_object1.setup(3257, 5, 1);
_object1.animate(ANIM_MODE_5, this);
}
}

} // End of namespace Ringworld2
} // End of namespace TsAGE
16 changes: 16 additions & 0 deletions engines/tsage/ringworld2/ringworld2_speakers.h
Expand Up @@ -372,6 +372,22 @@ class SpeakerTomko3245 : public VisualSpeaker {
virtual Common::String getClassName() { return "SpeakerTomko3245"; }
virtual void proc15();
};

class SpeakerQuinn3255 : public VisualSpeaker {
public:
SpeakerQuinn3255();

virtual Common::String getClassName() { return "SpeakerQuinn3255"; }
virtual void proc15();
};

class SpeakerMiranda3255 : public VisualSpeaker {
public:
SpeakerMiranda3255();

virtual Common::String getClassName() { return "SpeakerMiranda3255"; }
virtual void proc15();
};
} // End of namespace Ringworld2
} // End of namespace TsAGE

Expand Down

0 comments on commit 544e241

Please sign in to comment.