diff options
author | Paul Gilbert | 2012-01-04 21:52:21 +1100 |
---|---|---|
committer | Paul Gilbert | 2012-01-04 21:52:21 +1100 |
commit | 0d3287671e3132d3d24ff2f87295a100b731c849 (patch) | |
tree | 0504bd80ba66a72af8d27ab0102b0229f47d9410 /engines/tsage/core.cpp | |
parent | 3344cf424a90d22ab44c8b64b7ad598a53147e26 (diff) | |
download | scummvm-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/core.cpp')
-rw-r--r-- | engines/tsage/core.cpp | 22 |
1 files changed, 21 insertions, 1 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) { |