aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/tsage/ringworld2/ringworld2_scenes3.cpp81
-rw-r--r--engines/tsage/ringworld2/ringworld2_scenes3.h2
2 files changed, 81 insertions, 2 deletions
diff --git a/engines/tsage/ringworld2/ringworld2_scenes3.cpp b/engines/tsage/ringworld2/ringworld2_scenes3.cpp
index 7261d6438f..7aa27e9330 100644
--- a/engines/tsage/ringworld2/ringworld2_scenes3.cpp
+++ b/engines/tsage/ringworld2/ringworld2_scenes3.cpp
@@ -1717,6 +1717,83 @@ void Scene3375::synchronize(Serializer &s) {
s.syncAsSint16LE(_field148A[i]);
}
+void Scene3375::subFC696(int sceneMode) {
+ switch (sceneMode) {
+ case 3379:
+ R2_GLOBALS._player.setPosition(Common::Point(0, 155));
+ _actor1.setPosition(Common::Point(-20, 163));
+ _actor2.setPosition(Common::Point(-5, 150));
+ _actor3.setPosition(Common::Point(-20, 152));
+ break;
+ case 3380:
+ ++R2_GLOBALS._v56A9E;
+ if (R2_GLOBALS._v56A9E >= 4)
+ R2_GLOBALS._v56A9E = 0;
+
+ loadScene(_field148A[R2_GLOBALS._v56A9E]);
+
+ R2_GLOBALS._uiElements.show();
+ R2_GLOBALS._player.setStrip(4);
+ R2_GLOBALS._player.setPosition(Common::Point(148, 230));
+
+ _actor1.setPosition(Common::Point(191, 274));
+ _actor1._effect = 1;
+ _actor2.setPosition(Common::Point(124, 255));
+ _actor2._effect = 1;
+ _actor3.setPosition(Common::Point(155, 245));
+ _actor3._effect = 1;
+ break;
+ case 3381:
+ --R2_GLOBALS._v56A9E;
+ if (R2_GLOBALS._v56A9E < 0)
+ R2_GLOBALS._v56A9E = 3;
+
+ loadScene(_field148A[R2_GLOBALS._v56A9E]);
+
+ R2_GLOBALS._uiElements.show();
+ R2_GLOBALS._player.setStrip(6);
+ R2_GLOBALS._player.setPosition(Common::Point(201, 131));
+
+ _actor1.setPosition(Common::Point(231, 127));
+ _actor1._effect = 1;
+ _actor2.setPosition(Common::Point(231, 127));
+ _actor2._effect = 1;
+ _actor3.setPosition(Common::Point(231, 127));
+ _actor3._effect = 1;
+ break;
+ default:
+ R2_GLOBALS._player.setPosition(Common::Point(192, 155));
+
+ _actor1.setPosition(Common::Point(138, 134));
+ _actor2.setPosition(Common::Point(110, 139));
+ _actor3.setPosition(Common::Point(125, 142));
+ break;
+ }
+
+ if (R2_GLOBALS._v56A9E == 2) {
+ R2_GLOBALS._sceneItems.remove(&_actor4);
+ for (int i = 0; i <= 12; i++)
+ R2_GLOBALS._sceneItems.remove(&_itemArray[i]);
+ R2_GLOBALS._sceneItems.remove(&_item1);
+
+ _actor4.show();
+ _actor4.setDetails(3375, 9, 10, -1, 1, NULL);
+
+ for (int i = 0; i <= 12; i++)
+ _itemArray[i].setDetails(3375, 3, -1, -1);
+
+ _item1.setDetails(Rect(0, 0, 320, 200), 3375, 0, -1, -1, 1, NULL);
+ } else {
+ _actor4.hide();
+ R2_GLOBALS._sceneItems.remove(&_actor4);
+ }
+
+ if (_sceneMode == 0)
+ signal();
+ else
+ setAction(&_sequenceManager, this, _sceneMode, &R2_GLOBALS._player, &_actor1, &_actor2, &_actor3, NULL);
+}
+
bool Scene3375::Actor1::startAction(CursorType action, Event &event) {
Scene3375 *scene = (Scene3375 *)R2_GLOBALS._sceneManager._scene;
@@ -2000,7 +2077,7 @@ void Scene3375::postInit(SceneObjectList *OwnerList) {
else
_sceneMode = 0;
- warning("sub_FC696(_sceneMode)");
+ subFC696(_sceneMode);
}
void Scene3375::remove() {
@@ -2064,7 +2141,7 @@ void Scene3375::signal() {
_actor2._shade = 4;
_actor3._effect = 6;
_actor3._shade = 4;
- warning("sub_FC696(_sceneMode)");
+ subFC696(_sceneMode);
break;
case 3379:
signalCase3379();
diff --git a/engines/tsage/ringworld2/ringworld2_scenes3.h b/engines/tsage/ringworld2/ringworld2_scenes3.h
index 36e4ae83fc..d5e2e451f4 100644
--- a/engines/tsage/ringworld2/ringworld2_scenes3.h
+++ b/engines/tsage/ringworld2/ringworld2_scenes3.h
@@ -428,6 +428,8 @@ class Scene3375 : public SceneExt {
};
void signalCase3379();
+ void subFC696(int sceneMode);
+
public:
SpeakerQuinn3375 _quinnSpeaker;
SpeakerSeeker3375 _seekerSpeaker;