diff options
author | Paul Gilbert | 2011-03-19 22:16:29 +1100 |
---|---|---|
committer | strangerke | 2011-03-21 08:07:17 +0100 |
commit | b1af59029864710ae66b0890d9208c6b674e0c26 (patch) | |
tree | 43264b8753f0369ab40203c2307d8d0acc4312a6 | |
parent | dd29c4695f2127b37340197ba500736c1f53649c (diff) | |
download | scummvm-rg350-b1af59029864710ae66b0890d9208c6b674e0c26.tar.gz scummvm-rg350-b1af59029864710ae66b0890d9208c6b674e0c26.tar.bz2 scummvm-rg350-b1af59029864710ae66b0890d9208c6b674e0c26.zip |
TSAGE: Corrected bugs in Scene #1400 - Ringworld Wall
-rw-r--r-- | engines/tsage/core.h | 11 | ||||
-rw-r--r-- | engines/tsage/ringworld_logic.cpp | 2 | ||||
-rw-r--r-- | engines/tsage/ringworld_scenes2.cpp | 4 |
3 files changed, 12 insertions, 5 deletions
diff --git a/engines/tsage/core.h b/engines/tsage/core.h index d961f8bdd1..d4c25b1668 100644 --- a/engines/tsage/core.h +++ b/engines/tsage/core.h @@ -652,8 +652,9 @@ private: void sortList(Common::Array<SceneObject *> &ObjList); List<SceneObject *> _objList; + bool _listAltered; public: - SceneObjectList() {} + SceneObjectList() { _listAltered = false; } virtual Common::String getClassName() { return "SceneObjectList"; } virtual void synchronise(Serialiser &s); @@ -665,7 +666,8 @@ public: typedef void (*EventHandlerFn)(EventHandler *fn); void recurse(EventHandlerFn Fn) { // Loop through each object - for (List<SceneObject *>::iterator i = _objList.begin(); i != _objList.end(); ) { + _listAltered = false; + for (List<SceneObject *>::iterator i = _objList.begin(); i != _objList.end() && !_listAltered; ) { SceneObject *o = *i; ++i; Fn(o); @@ -676,7 +678,10 @@ public: bool contains(SceneObject *sceneObj) { return _objList.contains(sceneObj); } void push_back(SceneObject *sceneObj) { _objList.push_back(sceneObj); } void push_front(SceneObject *sceneObj) { _objList.push_front(sceneObj); } - void remove(SceneObject *sceneObj) { _objList.remove(sceneObj); } + void remove(SceneObject *sceneObj) { + _objList.remove(sceneObj); + _listAltered = true; + } }; class ScenePriorities: public List<Region> { diff --git a/engines/tsage/ringworld_logic.cpp b/engines/tsage/ringworld_logic.cpp index fa7a6f1f31..9937fa504b 100644 --- a/engines/tsage/ringworld_logic.cpp +++ b/engines/tsage/ringworld_logic.cpp @@ -65,7 +65,7 @@ Scene *SceneFactory::createScene(int sceneNumber) { case 1001: return new Scene1001(); // Unused case 1250: return new Scene1250(); - // + // Ringworld Wall case 1400: return new Scene1400(); // Ringworld Space-port case 1500: return new Scene1500(); diff --git a/engines/tsage/ringworld_scenes2.cpp b/engines/tsage/ringworld_scenes2.cpp index b10da21fc3..1d3d0508fc 100644 --- a/engines/tsage/ringworld_scenes2.cpp +++ b/engines/tsage/ringworld_scenes2.cpp @@ -655,7 +655,7 @@ void Scene1250::postInit(SceneObjectList *OwnerList) { } /*-------------------------------------------------------------------------- - * Scene 1400 - Arriving at Ringworld + * Scene 1400 - Ringworld Wall * *--------------------------------------------------------------------------*/ @@ -681,7 +681,9 @@ void Scene1400::Action1::signal() { Common::Point pt(160, 100); NpcMover *mover = new NpcMover(); _globals->_player.addMover(mover, &pt, this); + SceneItem::display(0, 0); + setDelay(360); break; } case 3: |