aboutsummaryrefslogtreecommitdiff
path: root/engines/tsage
diff options
context:
space:
mode:
authorPaul Gilbert2012-01-04 21:52:21 +1100
committerPaul Gilbert2012-01-04 21:52:21 +1100
commit0d3287671e3132d3d24ff2f87295a100b731c849 (patch)
tree0504bd80ba66a72af8d27ab0102b0229f47d9410 /engines/tsage
parent3344cf424a90d22ab44c8b64b7ad598a53147e26 (diff)
downloadscummvm-rg350-0d3287671e3132d3d24ff2f87295a100b731c849.tar.gz
scummvm-rg350-0d3287671e3132d3d24ff2f87295a100b731c849.tar.bz2
scummvm-rg350-0d3287671e3132d3d24ff2f87295a100b731c849.zip
TSAGE: Implemented the changes needed for R2R SceneActor::dispatch
Diffstat (limited to 'engines/tsage')
-rw-r--r--engines/tsage/core.cpp22
-rw-r--r--engines/tsage/core.h3
-rw-r--r--engines/tsage/ringworld2/ringworld2_logic.cpp10
-rw-r--r--engines/tsage/ringworld2/ringworld2_logic.h4
4 files changed, 25 insertions, 14 deletions
diff --git a/engines/tsage/core.cpp b/engines/tsage/core.cpp
index 331cac6c4b..8f4efafa01 100644
--- a/engines/tsage/core.cpp
+++ b/engines/tsage/core.cpp
@@ -2021,7 +2021,8 @@ SceneObject::SceneObject() : SceneHotspot() {
_strip = 0;
_frame = 0;
_effect = 0;
- _shade = 0;
+ _shade = _shade2 = 0;
+ _linkedActor = NULL;
_field8A = Common::Point(0, 0);
}
@@ -2408,6 +2409,8 @@ void SceneObject::synchronize(Serializer &s) {
if (g_vm->getGameID() == GType_Ringworld2) {
s.syncAsSint16LE(_effect);
s.syncAsSint16LE(_shade);
+ s.syncAsSint16LE(_shade2);
+ SYNC_POINTER(_linkedActor);
}
}
@@ -2451,6 +2454,12 @@ void SceneObject::remove() {
}
void SceneObject::dispatch() {
+ if (g_vm->getGameID() == GType_Ringworld2) {
+ if (_shade != _shade2)
+ _flags |= OBJFLAG_PANES;
+ _shade2 = _shade;
+ }
+
uint32 currTime = g_globals->_events.getFrameNumber();
if (_action)
_action->dispatch();
@@ -2558,6 +2567,17 @@ void SceneObject::dispatch() {
if (!(_flags & OBJFLAG_FIXED_PRIORITY)) {
setPriority(_position.y);
}
+
+ if (g_vm->getGameID() == GType_Ringworld2) {
+ if (_linkedActor) {
+ _linkedActor->setPosition(_position);
+ _linkedActor->setStrip(_strip);
+ _linkedActor->setFrame(_frame);
+ }
+
+ if ((_effect == 1) && (getRegionIndex() < 11))
+ _shade = 0;
+ }
}
void SceneObject::calcAngle(const Common::Point &pt) {
diff --git a/engines/tsage/core.h b/engines/tsage/core.h
index 755964c84a..36071732cf 100644
--- a/engines/tsage/core.h
+++ b/engines/tsage/core.h
@@ -545,8 +545,9 @@ public:
uint32 _regionBitList;
// Ringworld 2 specific fields
- int _shade;
+ int _shade, _shade2;
int _effect;
+ SceneObject *_linkedActor;
public:
SceneObject();
SceneObject(const SceneObject &so);
diff --git a/engines/tsage/ringworld2/ringworld2_logic.cpp b/engines/tsage/ringworld2/ringworld2_logic.cpp
index 0d8e5fda88..6c15e987e6 100644
--- a/engines/tsage/ringworld2/ringworld2_logic.cpp
+++ b/engines/tsage/ringworld2/ringworld2_logic.cpp
@@ -897,19 +897,13 @@ bool NamedHotspot::startAction(CursorType action, Event &event) {
}
}
+/*--------------------------------------------------------------------------*/
+
void SceneActor::postInit(SceneObjectList *OwnerList) {
_lookLineNum = _talkLineNum = _useLineNum = -1;
SceneObject::postInit();
}
-void SceneActor::synchronize(Serializer &s) {
- SceneObject::synchronize(s);
- s.syncAsSint16LE(_resNum);
- s.syncAsSint16LE(_lookLineNum);
- s.syncAsSint16LE(_talkLineNum);
- s.syncAsSint16LE(_useLineNum);
-}
-
bool SceneActor::startAction(CursorType action, Event &event) {
bool handled = true;
diff --git a/engines/tsage/ringworld2/ringworld2_logic.h b/engines/tsage/ringworld2/ringworld2_logic.h
index 2d7a81cd2f..535072f0b5 100644
--- a/engines/tsage/ringworld2/ringworld2_logic.h
+++ b/engines/tsage/ringworld2/ringworld2_logic.h
@@ -253,11 +253,7 @@ public:
class SceneActor: public SceneObject {
public:
- int _resNum;
- int _lookLineNum, _talkLineNum, _useLineNum;
-
virtual Common::String getClassName() { return "SceneActor"; }
- virtual void synchronize(Serializer &s);
virtual void postInit(SceneObjectList *OwnerList = NULL);
virtual bool startAction(CursorType action, Event &event);
};