From 52886eed68fb88288026064a8970e21ec568fc90 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Tue, 30 Jul 2013 22:40:47 -0400 Subject: TSAGE: Bugfixes for giving reader to Miranda --- engines/tsage/converse.cpp | 13 ++++++++----- engines/tsage/converse.h | 3 ++- engines/tsage/ringworld2/ringworld2_scenes0.cpp | 17 +++++++++-------- 3 files changed, 19 insertions(+), 14 deletions(-) diff --git a/engines/tsage/converse.cpp b/engines/tsage/converse.cpp index ec14ff330d..753a835389 100644 --- a/engines/tsage/converse.cpp +++ b/engines/tsage/converse.cpp @@ -556,7 +556,7 @@ void Obj44::load(const byte *dataP) { _mode = s.readSint16LE(); _lookupValue = s.readSint16LE(); _lookupIndex = s.readSint16LE(); - _field6 = s.readSint16LE(); + _exitMode = s.readSint16LE(); _speakerMode = s.readSint16LE(); } @@ -592,7 +592,7 @@ void Obj44::synchronize(Serializer &s) { s.syncAsSint16LE(_mode); s.syncAsSint16LE(_lookupValue); s.syncAsSint16LE(_lookupIndex); - s.syncAsSint16LE(_field6); + s.syncAsSint16LE(_exitMode); s.syncAsSint16LE(_speakerMode); for (int i = 0; i < 11; ++i) @@ -648,6 +648,7 @@ void StripManager::reset() { _activeSpeaker = NULL; _textShown = false; _callbackObject = NULL; + _exitMode = 0; _obj44List.clear(); if (!_script.empty()) { @@ -695,6 +696,8 @@ void StripManager::synchronize(Serializer &s) { s.syncAsByte(_textShown); s.syncAsByte(_field2E6); s.syncAsSint32LE(_field2E8); + if (g_vm->getGameID() == GType_Ringworld2) + s.syncAsSint16LE(_exitMode); // Synchronize the item list int arrSize = _obj44List.size(); @@ -725,7 +728,7 @@ void StripManager::synchronize(Serializer &s) { void StripManager::remove() { if (g_vm->getGameID() == GType_Ringworld2) { - for (int i = 0; i < _speakerList.size(); ++i) { + for (uint i = 0; i < _speakerList.size(); ++i) { if (_activeSpeaker != _speakerList[i]) _speakerList[i]->proc16(); } @@ -790,8 +793,8 @@ void StripManager::signal() { if (g_vm->getGameID() == GType_Ringworld2) { // Return to Ringworld specific handling - if (obj44._field6) - _field2E8 = obj44._field6; + if (obj44._exitMode) + _exitMode = obj44._exitMode; switch (obj44._mode) { case 1: diff --git a/engines/tsage/converse.h b/engines/tsage/converse.h index 00c1f44051..5aef0d8a7f 100644 --- a/engines/tsage/converse.h +++ b/engines/tsage/converse.h @@ -194,7 +194,7 @@ public: // Return to Ringworld specific field int _mode; - int _lookupValue, _lookupIndex, _field6; + int _lookupValue, _lookupIndex, _exitMode; int _speakerMode; int _field16[11]; public: @@ -223,6 +223,7 @@ public: bool _textShown; bool _field2E6; int _field2E8; + int _exitMode; Common::Array _obj44List; Common::Array _script; StripProc _onBegin; diff --git a/engines/tsage/ringworld2/ringworld2_scenes0.cpp b/engines/tsage/ringworld2/ringworld2_scenes0.cpp index 9cfa53ed22..3cb3574364 100644 --- a/engines/tsage/ringworld2/ringworld2_scenes0.cpp +++ b/engines/tsage/ringworld2/ringworld2_scenes0.cpp @@ -3488,27 +3488,27 @@ void Scene300::remove() { void Scene300::signal() { switch (_sceneMode) { case 10: - switch (_stripManager._field2E8) { - case 0: + switch (_stripManager._exitMode) { + case 1: R2_GLOBALS._sound1.changeSound(10); R2_GLOBALS.setFlag(38); break; - case 1: + case 2: R2_GLOBALS.setFlag(3); break; - case 2: + case 3: R2_GLOBALS.setFlag(4); break; - case 3: + case 4: R2_GLOBALS.setFlag(13); if (R2_GLOBALS._stripManager_lookupList[1] == 6) R2_GLOBALS.setFlag(40); break; - case 4: + case 5: if (R2_GLOBALS._stripManager_lookupList[1] == 6) R2_GLOBALS.setFlag(40); break; - case 5: + case 6: R2_GLOBALS._sceneManager.changeScene(1000); break; default: @@ -6874,8 +6874,9 @@ void Scene825::doButtonPress(int buttonId) { _sceneText.setup(NO_TREATMENT_REQUIRED); } else { _button6._buttonId = 5; - + _sceneMode = 827; _object5.postInit(); + setAction(&_sequenceManager1, this, 827, &_object5, NULL); } } else { -- cgit v1.2.3