diff options
author | Paul Gilbert | 2011-03-19 22:16:29 +1100 |
---|---|---|
committer | Paul Gilbert | 2011-03-19 22:16:29 +1100 |
commit | 88b909b26df5a5d40e8d5792e3d6b502740c332f (patch) | |
tree | 45193bf9d81085a27fa07dbf4108c49b81adb63d | |
parent | ec7e7519112247470e3e539a43040022a6e12c6e (diff) | |
download | scummvm-rg350-88b909b26df5a5d40e8d5792e3d6b502740c332f.tar.gz scummvm-rg350-88b909b26df5a5d40e8d5792e3d6b502740c332f.tar.bz2 scummvm-rg350-88b909b26df5a5d40e8d5792e3d6b502740c332f.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 2e451493ec..8c0002166d 100644 --- a/engines/tsage/ringworld_logic.cpp +++ b/engines/tsage/ringworld_logic.cpp @@ -64,7 +64,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: |