aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Gilbert2011-03-19 22:16:29 +1100
committerstrangerke2011-03-21 08:07:17 +0100
commitb1af59029864710ae66b0890d9208c6b674e0c26 (patch)
tree43264b8753f0369ab40203c2307d8d0acc4312a6
parentdd29c4695f2127b37340197ba500736c1f53649c (diff)
downloadscummvm-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.h11
-rw-r--r--engines/tsage/ringworld_logic.cpp2
-rw-r--r--engines/tsage/ringworld_scenes2.cpp4
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: