diff options
Diffstat (limited to 'engines/tsage/converse.cpp')
-rw-r--r-- | engines/tsage/converse.cpp | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/engines/tsage/converse.cpp b/engines/tsage/converse.cpp index 31a689b80c..b98f6f609d 100644 --- a/engines/tsage/converse.cpp +++ b/engines/tsage/converse.cpp @@ -551,6 +551,9 @@ void Obj44::synchronize(Serializer &s) { for (int idx = 0; idx < OBJ44_LIST_SIZE; ++idx) _list[idx].synchronize(s); s.syncAsUint32LE(_speakerOffset); + + if (g_vm->getGameID() == GType_Ringworld2) + s.syncAsSint16LE(_mode); } /*--------------------------------------------------------------------------*/ @@ -581,6 +584,11 @@ void StripManager::start(int stripNum, EventHandler *owner, StripCallback *callb owner->setAction(this, owner); } +void StripManager::start3(int stripNum, EventHandler *owner, byte *lookupList) { + _lookupList = lookupList; + start(stripNum, owner, NULL); +} + void StripManager::reset() { _actionIndex = 0; _delayFrames = 0; @@ -703,7 +711,12 @@ void StripManager::signal() { return; } else if (_obj44Index == 10000) { // Reached end of strip + EventHandler *endHandler = _endHandler; remove(); + + if ((g_vm->getGameID() == GType_Ringworld2) && endHandler) + endHandler->signal(); + return; } @@ -714,7 +727,19 @@ void StripManager::signal() { load(); Obj44 &obj44 = _obj44List[_obj44Index]; - _field2E8 = obj44._id; + + if (g_vm->getGameID() != GType_Ringworld2) { + _field2E8 = obj44._id; + } else { + if (obj44._id) + _field2E8 = obj44._id; + + switch (obj44._mode) { + case 1: + break; + } + } + Common::StringArray choiceList; // Build up a list of script entries |