From 0e35331302c2a132e092fb699b9ae1bcee8f1d17 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Tue, 22 Mar 2011 20:45:27 +1100 Subject: TSAGE: Implemented Scene #4010 - Village - By Lander --- engines/tsage/core.cpp | 4 +++- engines/tsage/ringworld_logic.cpp | 2 ++ engines/tsage/ringworld_scenes5.cpp | 47 +++++++++++++++++++++++++++++++++++++ engines/tsage/ringworld_scenes5.h | 12 ++++++++++ 4 files changed, 64 insertions(+), 1 deletion(-) (limited to 'engines/tsage') 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 -- cgit v1.2.3