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 | |
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')
-rw-r--r-- | engines/tsage/core.cpp | 22 | ||||
-rw-r--r-- | engines/tsage/core.h | 3 | ||||
-rw-r--r-- | engines/tsage/ringworld2/ringworld2_logic.cpp | 10 | ||||
-rw-r--r-- | engines/tsage/ringworld2/ringworld2_logic.h | 4 |
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); }; |