aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Gilbert2011-03-22 20:45:27 +1100
committerPaul Gilbert2011-03-22 20:45:27 +1100
commit0e35331302c2a132e092fb699b9ae1bcee8f1d17 (patch)
tree11cef3a2066e4d092dd922fd99b52d074f1e59f3
parentdf80ff2f51f7dd3d0fd92e76037dc041323ca287 (diff)
downloadscummvm-rg350-0e35331302c2a132e092fb699b9ae1bcee8f1d17.tar.gz
scummvm-rg350-0e35331302c2a132e092fb699b9ae1bcee8f1d17.tar.bz2
scummvm-rg350-0e35331302c2a132e092fb699b9ae1bcee8f1d17.zip
TSAGE: Implemented Scene #4010 - Village - By Lander
-rw-r--r--engines/tsage/core.cpp4
-rw-r--r--engines/tsage/ringworld_logic.cpp2
-rw-r--r--engines/tsage/ringworld_scenes5.cpp47
-rw-r--r--engines/tsage/ringworld_scenes5.h12
4 files changed, 64 insertions, 1 deletions
diff --git a/engines/tsage/core.cpp b/engines/tsage/core.cpp
index 6677026f32..4a3ade08ce 100644
--- a/engines/tsage/core.cpp
+++ b/engines/tsage/core.cpp
@@ -3076,9 +3076,11 @@ void WalkRegions::load(int sceneNum) {
_resNum = sceneNum;
byte *regionData = _vm->_dataManager->getResource(RES_WALKRGNS, sceneNum, 1, true);
- if (!regionData)
+ if (!regionData) {
// No data, so return
+ _resNum = -1;
return;
+ }
byte *dataP;
int dataSize;
diff --git a/engines/tsage/ringworld_logic.cpp b/engines/tsage/ringworld_logic.cpp
index e42b11208a..bac1085161 100644
--- a/engines/tsage/ringworld_logic.cpp
+++ b/engines/tsage/ringworld_logic.cpp
@@ -108,6 +108,8 @@ Scene *SceneFactory::createScene(int sceneNumber) {
/* Scene group 5 */
// Village
case 4000: return new Scene4000();
+ // Village - Outside Lander
+ case 4010: return new Scene4010();
/* Scene group 6 */
diff --git a/engines/tsage/ringworld_scenes5.cpp b/engines/tsage/ringworld_scenes5.cpp
index 6222c47a6e..85d0689c26 100644
--- a/engines/tsage/ringworld_scenes5.cpp
+++ b/engines/tsage/ringworld_scenes5.cpp
@@ -1237,4 +1237,51 @@ void Scene4000::dispatch() {
}
}
+/*--------------------------------------------------------------------------
+ * Scene 4010 - Village - Outside Lander
+ *
+ *--------------------------------------------------------------------------*/
+
+void Scene4010::postInit(SceneObjectList *OwnerList) {
+ loadScene(4010);
+ Scene::postInit();
+ setZoomPercents(0, 20, 70, 50);
+
+ _stripManager.addSpeaker(&_speakerQText);
+ _stripManager.addSpeaker(&_speakerSText);
+ _stripManager.addSpeaker(&_speakerMText);
+ _speakerSText._npc = &_hotspot1;
+ _speakerMText._npc = &_hotspot2;
+ _speakerQText._npc = &_globals->_player;
+
+ _globals->_player.postInit();
+ _globals->_player.setVisage(0);
+ _globals->_player.animate(ANIM_MODE_1, NULL);
+ _globals->_player.setObjectWrapper(new SceneObjectWrapper());
+ _globals->_player.setPosition(Common::Point(-38, 175));
+ _globals->_player.changeZoom(75);
+
+ _hotspot2.postInit();
+ _hotspot2.setVisage(2705);
+ _hotspot2.animate(ANIM_MODE_1, NULL);
+ _hotspot2.setObjectWrapper(new SceneObjectWrapper());
+ _hotspot2._moveDiff = Common::Point(4, 2);
+ _hotspot2.setPosition(Common::Point(-50, 185));
+ _hotspot2.changeZoom(75);
+
+ _hotspot1.postInit();
+ _hotspot1.setVisage(2806);
+ _hotspot1.setPosition(Common::Point(-20, 175));
+ _hotspot1.changeZoom(75);
+ _hotspot1.animate(ANIM_MODE_1, NULL);
+ _hotspot1.setObjectWrapper(new SceneObjectWrapper());
+
+ _globals->_player.disableControl();
+ setAction(&_sequenceManager, this, 4017, &_globals->_player, &_hotspot1, &_hotspot2, NULL);
+}
+
+void Scene4010::signal() {
+ _globals->_sceneManager.changeScene(4000);
+}
+
} // End of namespace tSage
diff --git a/engines/tsage/ringworld_scenes5.h b/engines/tsage/ringworld_scenes5.h
index 21285c79fb..7dc7a9b88b 100644
--- a/engines/tsage/ringworld_scenes5.h
+++ b/engines/tsage/ringworld_scenes5.h
@@ -186,6 +186,18 @@ public:
virtual void dispatch();
};
+class Scene4010: public Scene {
+public:
+ SequenceManager _sequenceManager;
+ SpeakerQText _speakerQText;
+ SpeakerSText _speakerSText;
+ SpeakerMText _speakerMText;
+ SceneObject _hotspot1, _hotspot2;
+
+ virtual void postInit(SceneObjectList *OwnerList = NULL);
+ virtual void signal();
+};
+
} // End of namespace tSage
#endif