diff options
Diffstat (limited to 'engines/tsage')
38 files changed, 2205 insertions, 2074 deletions
diff --git a/engines/tsage/blue_force/blueforce_logic.cpp b/engines/tsage/blue_force/blueforce_logic.cpp index 5674773177..be5fb4c7b7 100644 --- a/engines/tsage/blue_force/blueforce_logic.cpp +++ b/engines/tsage/blue_force/blueforce_logic.cpp @@ -648,8 +648,6 @@ void FocusObject::postInit(SceneObjectList *OwnerList) { _lookLineNum = 43; _talkLineNum = 44; _useLineNum = -1; - _v90 = 0; - _v92 = 1; SceneExt *scene = (SceneExt *)BF_GLOBALS._sceneManager._scene; scene->_focusObject = this; @@ -658,8 +656,11 @@ void FocusObject::postInit(SceneObjectList *OwnerList) { void FocusObject::synchronize(Serializer &s) { NamedObject::synchronize(s); - s.syncAsSint16LE(_v90); - s.syncAsSint16LE(_v92); + if (s.getVersion() < 12) { + int useless = 0; + s.syncAsSint16LE(useless); + s.syncAsSint16LE(useless); + } } void FocusObject::remove() { @@ -705,7 +706,6 @@ SceneExt::SceneExt(): Scene() { _stripManager._onBegin = SceneExt::startStrip; _stripManager._onEnd = SceneExt::endStrip; - _field372 = _field37A = 0; _savedPlayerEnabled = false; _savedUiEnabled = false; _savedCanWalk = false; @@ -748,6 +748,7 @@ void SceneExt::process(Event &event) { void SceneExt::dispatch() { _timerList.dispatch(); + /* if (_field37A) { if ((--_field37A == 0) && BF_GLOBALS._dayNumber) { if (T2_GLOBALS._uiElements._active && BF_GLOBALS._player._enabled) { @@ -757,6 +758,7 @@ void SceneExt::dispatch() { _field37A = 0; } } + */ Scene::dispatch(); } @@ -764,8 +766,6 @@ void SceneExt::dispatch() { void SceneExt::loadScene(int sceneNum) { Scene::loadScene(sceneNum); - _v51C34.top = 0; - _v51C34.bottom = 300; BF_GLOBALS._sceneHandler->_delayTicks = 1; } @@ -833,7 +833,6 @@ void SceneExt::gunDisplay() { void SceneExt::startStrip() { SceneExt *scene = (SceneExt *)BF_GLOBALS._sceneManager._scene; - scene->_field372 = 1; scene->_savedPlayerEnabled = BF_GLOBALS._player._enabled; if (scene->_savedPlayerEnabled) { @@ -848,7 +847,6 @@ void SceneExt::startStrip() { void SceneExt::endStrip() { SceneExt *scene = (SceneExt *)BF_GLOBALS._sceneManager._scene; - scene->_field372 = 0; if (scene->_savedPlayerEnabled) { BF_GLOBALS._player.enableControl(); @@ -867,23 +865,23 @@ void SceneExt::clearScreen() { /*--------------------------------------------------------------------------*/ PalettedScene::PalettedScene(): SceneExt() { - _field794 = 0; + _hasFader = false; } void PalettedScene::synchronize(Serializer &s) { SceneExt::synchronize(s); - s.syncAsSint16LE(_field794); + s.syncAsSint16LE(_hasFader); } void PalettedScene::postInit(SceneObjectList *OwnerList) { - _field794 = 0; + _hasFader = false; _palette._field412 = 1; SceneExt::postInit(OwnerList); } void PalettedScene::remove() { SceneExt::remove(); - if (_field794 == 1) { + if (_hasFader) { for (SynchronizedList<SceneObject *>::iterator i = BF_GLOBALS._sceneObjects->begin(); i != BF_GLOBALS._sceneObjects->end(); ++i) (*i)->remove(); @@ -897,7 +895,7 @@ void PalettedScene::remove() { } PaletteFader *PalettedScene::addFader(const byte *arrBufferRGB, int step, Action *action) { - _field794 = 1; + _hasFader = true; return BF_GLOBALS._scenePalette.addFader(arrBufferRGB, 1, step, action); } diff --git a/engines/tsage/blue_force/blueforce_logic.h b/engines/tsage/blue_force/blueforce_logic.h index 59bc2b7a51..0045980820 100644 --- a/engines/tsage/blue_force/blueforce_logic.h +++ b/engines/tsage/blue_force/blueforce_logic.h @@ -139,14 +139,17 @@ public: class NamedObject2: public NamedObject { public: - int _v1, _v2; + int _talkCount; - NamedObject2() { _v1 = _v2 = 0; } + NamedObject2() { _talkCount = 0; } virtual Common::String getClassName() { return "NamedObject2"; } virtual void synchronize(Serializer &s) { NamedObject::synchronize(s); - s.syncAsSint16LE(_v1); - s.syncAsSint16LE(_v2); + if (s.getVersion() < 12) { + int useless = 0; + s.syncAsSint16LE(useless); + } + s.syncAsSint16LE(_talkCount); } }; @@ -177,7 +180,6 @@ public: class FocusObject: public NamedObject { public: - int _v90, _v92; GfxSurface _img; FocusObject(); @@ -196,16 +198,12 @@ private: static void endStrip(); public: AObjectArray _timerList, _objArray2; - int _field372; bool _savedPlayerEnabled; bool _savedUiEnabled; bool _savedCanWalk; - int _field37A; EventHandler *_focusObject; Visage _cursorVisage; - - Rect _v51C34; public: SceneExt(); @@ -228,7 +226,7 @@ public: class PalettedScene: public SceneExt { public: ScenePalette _palette; - int _field794; + bool _hasFader; public: PalettedScene(); diff --git a/engines/tsage/blue_force/blueforce_scenes3.cpp b/engines/tsage/blue_force/blueforce_scenes3.cpp index 5dd795cb39..feaf789392 100644 --- a/engines/tsage/blue_force/blueforce_scenes3.cpp +++ b/engines/tsage/blue_force/blueforce_scenes3.cpp @@ -1978,12 +1978,7 @@ void Scene340::Action8::signal() { setDelay(6); break; - case 4: - remove(); - break; default: - // This is present in the original game - warning("Bugs"); remove(); break; } @@ -2873,9 +2868,9 @@ void Scene350::checkGun() { void Scene355::Doorway::synchronize(Serializer &s) { NamedObject::synchronize(s); - s.syncAsSint16LE(_v1); - s.syncAsSint16LE(_v2); - s.syncAsSint16LE(_v3); + s.syncAsSint16LE(_mode1356Count); + s.syncAsSint16LE(_talkCount); + s.syncAsSint16LE(_onDuty); } bool Scene355::Doorway::startAction(CursorType action, Event &event) { @@ -2895,9 +2890,9 @@ bool Scene355::Doorway::startAction(CursorType action, Event &event) { return true; case CURSOR_TALK: if (BF_GLOBALS._dayNumber >= 5) { - switch (_v2) { + switch (_talkCount) { case 0: - ++_v2; + ++_talkCount; BF_GLOBALS._sound1.play(109); BF_GLOBALS._player.disableControl(); scene->_sceneMode = 0; @@ -2925,7 +2920,7 @@ bool Scene355::Doorway::startAction(CursorType action, Event &event) { BF_GLOBALS._player.disableControl(); scene->_sceneMode = 3562; scene->setAction(&scene->_sequenceManager, scene, 3562, &BF_GLOBALS._player, NULL); - _v3 = !_v3 ? 1 : 0; + _onDuty = !_onDuty; return true; default: break; @@ -3360,14 +3355,14 @@ bool Scene355::Item11::startAction(CursorType action, Event &event) { return true; case CURSOR_TALK: if (BF_GLOBALS._dayNumber == 5) { - switch (scene->_doorway._v2) { + switch (scene->_doorway._talkCount) { case 0: BF_GLOBALS._player.disableControl(); scene->_sceneMode = 0; BF_GLOBALS.setFlag(fTookTrailerAmmo); scene->_stripManager.start(3575, scene); scene->_lyle._flag = 1; - scene->_doorway._v2 = 1; + scene->_doorway._talkCount = 1; break; case 1: BF_GLOBALS._player.disableControl(); @@ -3539,28 +3534,28 @@ void Scene355::postInit(SceneObjectList *OwnerList) { _doorway.setVisage(355); _doorway.setPosition(Common::Point(193, 105)); _doorway.fixPriority(18); - _doorway._v1 = 0; - _doorway._v3 = 0; + _doorway._mode1356Count = 0; + _doorway._onDuty = false; BF_GLOBALS._sceneItems.push_back(&_doorway); switch (BF_GLOBALS._dayNumber) { case 1: if (!BF_GLOBALS.getFlag(onDuty)) - _doorway._v3 = 1; + _doorway._onDuty = true; else if (BF_INVENTORY.getObjectScene(INV_GREENS_GUN) == 320) - _doorway._v3 = 1; + _doorway._onDuty = true; break; case 2: case 3: case 4: - _doorway._v3 = 1; + _doorway._onDuty = true; break; default: break; } if (BF_GLOBALS._dayNumber == 5) - _doorway._v2 = BF_GLOBALS.getFlag(fTookTrailerAmmo) ? 1 : 0; + _doorway._talkCount = BF_GLOBALS.getFlag(fTookTrailerAmmo) ? 1 : 0; _object8.postInit(); _object8.setVisage(355); @@ -3619,8 +3614,8 @@ void Scene355::postInit(SceneObjectList *OwnerList) { _object11.animate(ANIM_MODE_2); _doorway.setPosition(Common::Point(146, 107)); - _doorway._v3 = 0; - _doorway._v2 = 2; + _doorway._onDuty = false; + _doorway._talkCount = 2; _lyle._flag = 2; _green.postInit(); @@ -3718,16 +3713,16 @@ void Scene355::signal() { _stripManager.start(BF_GLOBALS.getFlag(fBackupIn350) ? 3559 : 3554, this); break; case 1356: - switch (_doorway._v1) { + switch (_doorway._mode1356Count) { case 0: - ++_doorway._v1; + ++_doorway._mode1356Count; _sceneMode = 9999; _stripManager.start(3550, this); break; case 1: _sceneMode = 9999; _stripManager.start(3551, this); - ++_doorway._v1; + ++_doorway._mode1356Count; break; default: break; @@ -3792,7 +3787,7 @@ void Scene355::signal() { T2_GLOBALS._uiElements.addScore(10); } - SceneItem::display2(355, !_doorway._v3 ? 24 : 25); + SceneItem::display2(355, !_doorway._onDuty ? 24 : 25); BF_GLOBALS._player.enableControl(); break; case 4550: @@ -3801,8 +3796,8 @@ void Scene355::signal() { BF_GLOBALS._sound1.play(90); BF_GLOBALS._player._regionBitList |= 0x10; - _doorway._v3 = 0; - _doorway._v2 = 2; + _doorway._onDuty = false; + _doorway._talkCount = 2; _lyle._flag = 2; BF_GLOBALS._player.enableControl(); break; @@ -3872,13 +3867,13 @@ void Scene355::signal() { case 9984: if (BF_GLOBALS._dayNumber == 5) { _sceneMode = 0; - switch (_doorway._v2) { + switch (_doorway._talkCount) { case 0: BF_GLOBALS._sound1.play(109); BF_GLOBALS.setFlag(fTookTrailerAmmo); _stripManager.start(3575, this); _lyle._flag = 1; - ++_doorway._v2; + ++_doorway._talkCount; break; case 1: _stripManager.start(3573, this); @@ -3889,7 +3884,7 @@ void Scene355::signal() { break; } } else if (BF_GLOBALS.getFlag(greenTaken) || (BF_GLOBALS._dayNumber > 1)) { - if (_doorway._v3) { + if (_doorway._onDuty) { SceneItem::display2(355, 23); _sceneMode = 0; signal(); @@ -4014,14 +4009,14 @@ void Scene355::signal() { } case 9997: _sceneMode = 9999; - _doorway._v1 = 2; + _doorway._mode1356Count = 2; _stripManager.start(3562, this); break; case 9998: error("Talkdoor state"); break; case 9999: - if (_doorway._v1 != 2) { + if (_doorway._mode1356Count != 2) { BF_GLOBALS._player.enableControl(); BF_GLOBALS._player._canWalk = false; } else if (BF_GLOBALS.getFlag(gunDrawn)) { @@ -4531,7 +4526,7 @@ void Scene360::signal() { BF_GLOBALS._player.enableControl(); break; case 3608: - BF_GLOBALS._sceneManager.changeScene(355); + BF_GLOBALS._sceneManager.changeScene(355); break; case 3610: BF_GLOBALS._sceneManager.changeScene(666); @@ -4656,10 +4651,10 @@ bool Scene370::Green::startAction(CursorType action, Event &event) { switch (action) { case CURSOR_LOOK: - SceneItem::display2(370, (_v2 < 3) ? 10 : 0); + SceneItem::display2(370, (_talkCount < 3) ? 10 : 0); return true; case CURSOR_USE: - if (_v2 != 3) + if (_talkCount != 3) SceneItem::display2(370, 1); else if (BF_INVENTORY.getObjectScene(INV_HANDCUFFS) == 1) SceneItem::display2(370, 26); @@ -4675,14 +4670,14 @@ bool Scene370::Green::startAction(CursorType action, Event &event) { return true; case CURSOR_TALK: BF_GLOBALS._player.disableControl(); - switch (_v2) { + switch (_talkCount) { case 0: - ++_v2; + ++_talkCount; scene->_sceneMode = 3706; scene->setAction(&scene->_sequenceManager, scene, 3706, NULL); break; case 1: - ++_v2; + ++_talkCount; scene->_sceneMode = 3707; scene->_object5.postInit(); @@ -4694,7 +4689,7 @@ bool Scene370::Green::startAction(CursorType action, Event &event) { scene->setAction(&scene->_sequenceManager, scene, 3707, &scene->_harrison, &scene->_object5, NULL); break; case 2: - ++_v2; + ++_talkCount; scene->_sceneMode = 3708; scene->setAction(&scene->_sequenceManager, scene, 3708, this, &scene->_laura, &scene->_harrison, &scene->_object5, &scene->_greensGun, NULL); @@ -4720,7 +4715,7 @@ bool Scene370::Green::startAction(CursorType action, Event &event) { } return true; case INV_HANDCUFFS: - if (_v2 != 3) + if (_talkCount != 3) SceneItem::display2(370, 2); else { T2_GLOBALS._uiElements.addScore(50); @@ -4757,7 +4752,7 @@ bool Scene370::Harrison::startAction(CursorType action, Event &event) { SceneItem::display2(370, 8); return true; case CURSOR_TALK: - if (scene->_green._v2 != 3) { + if (scene->_green._talkCount != 3) { scene->_sceneMode = 3; scene->_stripManager.start(3714, scene); } else if ((BF_INVENTORY.getObjectScene(INV_GREENS_KNIFE) == 1) || diff --git a/engines/tsage/blue_force/blueforce_scenes3.h b/engines/tsage/blue_force/blueforce_scenes3.h index d9f0d32edc..894c3e5ffd 100644 --- a/engines/tsage/blue_force/blueforce_scenes3.h +++ b/engines/tsage/blue_force/blueforce_scenes3.h @@ -493,9 +493,10 @@ class Scene355: public PalettedScene { /* Objects */ class Doorway: public NamedObject { public: - int _v1, _v2, _v3; + int _mode1356Count, _talkCount; + bool _onDuty; - Doorway() { _v1 = _v2 = _v3 = 0; } + Doorway() { _mode1356Count = _talkCount = 0; _onDuty = false; } virtual Common::String getClassName() { return "Scene355_Doorway"; } virtual void synchronize(Serializer &s); virtual bool startAction(CursorType action, Event &event); diff --git a/engines/tsage/blue_force/blueforce_scenes4.cpp b/engines/tsage/blue_force/blueforce_scenes4.cpp index 072761b5ac..e4a349bc93 100644 --- a/engines/tsage/blue_force/blueforce_scenes4.cpp +++ b/engines/tsage/blue_force/blueforce_scenes4.cpp @@ -136,11 +136,11 @@ void Scene410::Action5::signal() { switch (_actionIndex++) { case 0: - if (scene->_harrisonMovedFl == 0) { + if (!scene->_harrisonMovedFl) { ADD_PLAYER_MOVER(114, 133); } else { ADD_PLAYER_MOVER(195, 139); - } + } break; case 1: BF_GLOBALS._player.updateAngle(scene->_passenger._position); @@ -167,7 +167,7 @@ void Scene410::Action6::signal() { switch (_actionIndex++) { case 0: - if (scene->_harrisonMovedFl == 0) { + if (!scene->_harrisonMovedFl) { ADD_PLAYER_MOVER(114, 133); } else { ADD_PLAYER_MOVER(126, 99); @@ -243,7 +243,7 @@ bool Scene410::Motorcycle::startAction(CursorType action, Event &event) { } else if (BF_GLOBALS.getFlag(fSearchedTruck) && !BF_GLOBALS._sceneObjects->contains(&scene->_harrison)) { scene->_sceneMode = 4103; scene->signal(); - } else if (scene->_cuffedDriverFl != 0) { + } else if (scene->_cuffedDriverFl) { SceneItem::display2(410, 12); } else { scene->_sceneMode = 4103; @@ -260,7 +260,7 @@ bool Scene410::TruckFront::startAction(CursorType action, Event &event) { switch (action) { case CURSOR_USE: - if ((BF_GLOBALS._bookmark < bStoppedFrankie) && (!scene->_cuffedDriverFl || !scene->_field1FBA)) + if ((BF_GLOBALS._bookmark < bStoppedFrankie) && (!scene->_cuffedDriverFl || !scene->_harrissonTalkFl)) break; else if (BF_GLOBALS.getFlag(fSearchedTruck)) SceneItem::display2(410, 13); @@ -297,7 +297,7 @@ bool Scene410::Driver::startAction(CursorType action, Event &event) { SceneItem::display2(410, 7); } else if (!scene->_field1FC0) { scene->_sceneMode = 4124; - scene->_field1FC0 = 1; + scene->_field1FC0 = true; T2_GLOBALS._uiElements.addScore(30); scene->signal(); } else { @@ -309,13 +309,13 @@ bool Scene410::Driver::startAction(CursorType action, Event &event) { return true; case INV_HANDCUFFS: if (BF_GLOBALS.getFlag(fCalledBackup)) { - if ((scene->_talkCount < 5) || (scene->_action1Count < 1) || (scene->_cuffedDriverFl != 0)) + if ((scene->_talkCount < 5) || (scene->_action1Count < 1) || scene->_cuffedDriverFl) break; BF_GLOBALS._player.disableControl(); scene->_sceneMode = 4123; scene->_stripManager.start(4125, scene); - scene->_cuffedDriverFl = 1; + scene->_cuffedDriverFl = true; T2_GLOBALS._uiElements.addScore(30); } else { if (BF_GLOBALS.getFlag(fTalkedDriverNoBkup)) { @@ -332,10 +332,10 @@ bool Scene410::Driver::startAction(CursorType action, Event &event) { BF_GLOBALS._player.disableControl(); scene->_sceneMode = 2; scene->setAction(&scene->_sequenceManager1, scene, 4120, &scene->_passenger, &BF_GLOBALS._player, NULL); - } else if ((scene->_cuffedDriverFl != 0) || (scene->_field1FC2 != 0)) { + } else if (scene->_cuffedDriverFl || scene->_driverOutOfTruckFl) { break; } else { - scene->_field1FC2 = 1; + scene->_driverOutOfTruckFl = true; T2_GLOBALS._uiElements.addScore(30); BF_GLOBALS._player.disableControl(); scene->_sceneMode = 4127; @@ -343,7 +343,7 @@ bool Scene410::Driver::startAction(CursorType action, Event &event) { } return true; case INV_MIRANDA_CARD: - if (scene->_cuffedDriverFl == 0) + if (!scene->_cuffedDriverFl) return false; if (BF_GLOBALS.getFlag(readFrankRights)) { @@ -379,15 +379,15 @@ bool Scene410::Passenger::startAction(CursorType action, Event &event) { SET_Y, GLOBALS._sceneManager._scene->_sceneBounds.top + UI_INTERFACE_Y + 2, SET_FONT, 4, SET_BG_COLOR, 1, SET_FG_COLOR, 96, SET_EXT_BGCOLOR, 99, SET_EXT_FGCOLOR, 13, LIST_END); - } else if (!scene->_field1FBA) { + } else if (!scene->_harrissonTalkFl) { SceneItem::display(410, 5, SET_WIDTH, 300, SET_X, 10 + GLOBALS._sceneManager._scene->_sceneBounds.left, SET_Y, GLOBALS._sceneManager._scene->_sceneBounds.top + UI_INTERFACE_Y + 2, SET_FONT, 4, SET_BG_COLOR, 1, SET_FG_COLOR, 96, SET_EXT_BGCOLOR, 99, SET_EXT_FGCOLOR, 13, LIST_END); - } else if (!scene->_field1FBE) { + } else if (!scene->_cuffedPassengerFl) { scene->_sceneMode = 4121; - scene->_field1FBE = 1; + scene->_cuffedPassengerFl = true; T2_GLOBALS._uiElements.addScore(50); scene->signal(); } else @@ -398,7 +398,7 @@ bool Scene410::Passenger::startAction(CursorType action, Event &event) { return true; case INV_HANDCUFFS: if (BF_GLOBALS.getFlag(fCalledBackup)) { - if ((scene->_talkCount < 5) || (scene->_field1FBA != 0)) + if ((scene->_talkCount < 5) || (scene->_harrissonTalkFl)) break; BF_GLOBALS._player.disableControl(); @@ -413,7 +413,7 @@ bool Scene410::Passenger::startAction(CursorType action, Event &event) { } return true; case INV_MIRANDA_CARD: - if (!scene->_field1FBA) + if (!scene->_harrissonTalkFl) break; if (BF_GLOBALS.getFlag(readFrankRights)) { @@ -455,7 +455,7 @@ bool Scene410::Harrison::startAction(CursorType action, Event &event) { SET_FONT, 4, SET_BG_COLOR, 1, SET_FG_COLOR, 32, SET_EXT_BGCOLOR, 49, SET_EXT_FGCOLOR, 13, LIST_END); } - } else if ((scene->_field1FBA != 0) && (scene->_cuffedDriverFl != 0)) { + } else if (scene->_harrissonTalkFl && scene->_cuffedDriverFl) { BF_GLOBALS._player.disableControl(); scene->_sceneMode = 4112; scene->_stripManager.start(4113, scene); @@ -463,27 +463,27 @@ bool Scene410::Harrison::startAction(CursorType action, Event &event) { BF_GLOBALS.set2Flags(f1098Frankie); BF_GLOBALS.clearFlag(f1098Marina); } else if ((BF_INVENTORY.getObjectScene(INV_HANDCUFFS) == 1) || - (!scene->_field1FBA && (scene->_talkCount < 5))) { + (!scene->_harrissonTalkFl && (scene->_talkCount < 5))) { SceneItem::display(350, 13, SET_WIDTH, 300, SET_X, 10 + GLOBALS._sceneManager._scene->_sceneBounds.left, SET_Y, GLOBALS._sceneManager._scene->_sceneBounds.top + UI_INTERFACE_Y + 2, SET_FONT, 4, SET_BG_COLOR, 1, SET_FG_COLOR, 32, SET_EXT_BGCOLOR, 49, SET_EXT_FGCOLOR, 13, LIST_END); - } else if (!scene->_field1FBA) { + } else if (!scene->_harrissonTalkFl) { BF_GLOBALS._player.disableControl(); - scene->_field1FBA = 1; - scene->_field1FBE = 1; + scene->_harrissonTalkFl = true; + scene->_cuffedPassengerFl = true; BF_GLOBALS._walkRegions.enableRegion(22); scene->_sceneMode = 4122; scene->_stripManager.start(4112, scene); } else if (scene->_action1Count < 1) { break; - } else if (scene->_cuffedDriverFl != 0) { + } else if (scene->_cuffedDriverFl) { error("Error - want to cuff driver, but he's cuffed already"); } else { BF_GLOBALS._player.disableControl(); - scene->_cuffedDriverFl = 1; - scene->_field1FC0 = 1; + scene->_cuffedDriverFl = true; + scene->_field1FC0 = true; BF_GLOBALS._walkRegions.enableRegion(22); scene->_sceneMode = 4109; scene->_stripManager.start(4112, scene); @@ -500,19 +500,23 @@ bool Scene410::Harrison::startAction(CursorType action, Event &event) { /*--------------------------------------------------------------------------*/ Scene410::Scene410(): SceneExt() { - _action1Count = _talkCount = _field1FBA = _cuffedDriverFl = 0; - _field1FBE = _field1FC0 = _field1FC2 = _harrisonMovedFl = 0; + _cuffedDriverFl = _harrissonTalkFl = _driverOutOfTruckFl = false; + _harrisonMovedFl = false; + + _action1Count = _talkCount = 0; + _cuffedPassengerFl = false; + _field1FC0 = false; } void Scene410::synchronize(Serializer &s) { SceneExt::synchronize(s); s.syncAsSint16LE(_action1Count); s.syncAsSint16LE(_talkCount); - s.syncAsSint16LE(_field1FBA); + s.syncAsSint16LE(_harrissonTalkFl); s.syncAsSint16LE(_cuffedDriverFl); - s.syncAsSint16LE(_field1FBE); + s.syncAsSint16LE(_cuffedPassengerFl); s.syncAsSint16LE(_field1FC0); - s.syncAsSint16LE(_field1FC2); + s.syncAsSint16LE(_driverOutOfTruckFl); s.syncAsSint16LE(_harrisonMovedFl); } @@ -593,7 +597,7 @@ void Scene410::postInit(SceneObjectList *OwnerList) { _patrolCar.fixPriority(148); _patrolCar.setPosition(Common::Point(39, 168)); - _harrisonMovedFl = 1; + _harrisonMovedFl = true; _sceneMode = 0; signal(); break; @@ -604,7 +608,7 @@ void Scene410::postInit(SceneObjectList *OwnerList) { _sceneMode = 0; } else { _harrisonMovedFl = BF_GLOBALS._scene410HarrisonMovedFl; - _field1FBA = BF_GLOBALS._v50CC2; + _harrissonTalkFl = BF_GLOBALS._scene410HarrisonTalkFl; _talkCount = BF_GLOBALS._scene410TalkCount; _action1Count = BF_GLOBALS._scene410Action1Count; @@ -617,7 +621,7 @@ void Scene410::postInit(SceneObjectList *OwnerList) { _passenger.setStrip(2); _passenger.setFrame(5); } - if (_field1FBA) { + if (_harrissonTalkFl) { _passenger.setVisage(415); _passenger.setStrip(6); _passenger.setFrame(8); @@ -664,7 +668,7 @@ void Scene410::postInit(SceneObjectList *OwnerList) { _sceneMode = 0; } - _harrisonMovedFl = 1; + _harrisonMovedFl = true; } break; case 50: @@ -687,7 +691,7 @@ void Scene410::signal() { BF_GLOBALS.clearFlag(f1097Marina); BF_GLOBALS._scene410HarrisonMovedFl = _harrisonMovedFl; - BF_GLOBALS._v50CC2 = _field1FBA; + BF_GLOBALS._scene410HarrisonTalkFl = _harrissonTalkFl; BF_GLOBALS._scene410TalkCount = _talkCount; BF_GLOBALS._scene410Action1Count = _action1Count; BF_GLOBALS._sceneManager.changeScene(60); @@ -730,7 +734,7 @@ void Scene410::signal() { case 9: _sceneMode = 4106; _stripManager.start(4111, this); - _field1FBA = 1; + _harrissonTalkFl = true; BF_GLOBALS.setFlag(fCuffedFrankie); T2_GLOBALS._uiElements.addScore(30); break; @@ -760,7 +764,7 @@ void Scene410::signal() { break; case 4104: // After call for backup, patrol car is coming - _harrisonMovedFl = 1; + _harrisonMovedFl = true; BF_GLOBALS._player.disableControl(); _sceneMode = 0; setAction(&_sequenceManager1, this, 4104, &_patrolCar, &_harrison, NULL); @@ -1432,21 +1436,21 @@ bool Scene450::Manager::startAction(CursorType action, Event &event) { } else { animate(ANIM_MODE_8, 1, NULL); - if (scene->_field19AC) { + if (scene->_managerCallsWeaselFl) { scene->_sceneMode = 2; - if (scene->_field19AE) { + if (scene->_talkManagerFl) { scene->_stripManager.start(4521, scene); } else { - scene->_field19AE = 1; + scene->_talkManagerFl = true; scene->_stripManager.start(4512, scene); } } else { scene->_sceneMode = 4506; - if (scene->_field19AE) { + if (scene->_talkManagerFl) { scene->setAction(&scene->_sequenceManager, scene, 4518, &BF_GLOBALS._player, this, NULL); } else { scene->_sceneMode = 4506; - scene->_field19AE = 1; + scene->_talkManagerFl = true; scene->setAction(&scene->_sequenceManager, scene, 4506, &BF_GLOBALS._player, this, NULL); } } @@ -1524,13 +1528,13 @@ bool Scene450::Exit::startAction(CursorType action, Event &event) { /*--------------------------------------------------------------------------*/ Scene450::Scene450(): SceneExt() { - _field19AC = _field19AE = 0; + _managerCallsWeaselFl = _talkManagerFl = false; } void Scene450::synchronize(Serializer &s) { SceneExt::synchronize(s); - s.syncAsSint16LE(_field19AC); - s.syncAsSint16LE(_field19AE); + s.syncAsSint16LE(_managerCallsWeaselFl); + s.syncAsSint16LE(_talkManagerFl); } void Scene450::postInit(SceneObjectList *OwnerList) { @@ -1654,7 +1658,7 @@ void Scene450::signal() { case 4510: case 4511: BF_GLOBALS.setFlag(fMgrCallsWeasel); - _field19AC = 1; + _managerCallsWeaselFl = true; _sceneMode = 4503; setAction(&_sequenceManager, this, 4503, &_weasel, &_door, &_manager, NULL); break; diff --git a/engines/tsage/blue_force/blueforce_scenes4.h b/engines/tsage/blue_force/blueforce_scenes4.h index 895970e4ee..92e91c93b2 100644 --- a/engines/tsage/blue_force/blueforce_scenes4.h +++ b/engines/tsage/blue_force/blueforce_scenes4.h @@ -116,10 +116,12 @@ public: SpeakerDriver _driverSpeaker; SpeakerShooter _shooterSpeaker; ASoundExt _sound1; - int _action1Count, _talkCount, _field1FBA; - int _cuffedDriverFl, _field1FBE; - int _field1FC0; - int _field1FC2, _harrisonMovedFl; + int _action1Count, _talkCount; + bool _harrissonTalkFl; + bool _cuffedDriverFl; + bool _cuffedPassengerFl; + bool _field1FC0; + bool _driverOutOfTruckFl, _harrisonMovedFl; Scene410(); virtual void postInit(SceneObjectList *OwnerList = NULL); @@ -255,7 +257,8 @@ public: NamedObject _door, _counterDoor; Exit _exit; NamedHotspot _interior, _shelf, _counter; - int _field19AC, _field19AE; + bool _managerCallsWeaselFl; + bool _talkManagerFl; Scene450(); virtual void synchronize(Serializer &s); diff --git a/engines/tsage/blue_force/blueforce_scenes5.cpp b/engines/tsage/blue_force/blueforce_scenes5.cpp index ebaa3e372e..101a39c4b7 100644 --- a/engines/tsage/blue_force/blueforce_scenes5.cpp +++ b/engines/tsage/blue_force/blueforce_scenes5.cpp @@ -1909,7 +1909,7 @@ bool Scene570::Icon::startAction(CursorType action, Event &event) { } } -void Scene570::Icon::setDetails(int iconId, int folderId, int parentFolderId, int unused, const Common::String &msg) { +void Scene570::Icon::setDetails(int iconId, int folderId, int parentFolderId, const Common::String &msg) { Scene570 *scene = (Scene570 *)BF_GLOBALS._sceneManager._scene; NamedObject::postInit(); @@ -2076,23 +2076,23 @@ void Scene570::signal() { _printerIcon.setDetails(570, 14, 15, -1, 2, (SceneItem *)NULL); _iconManager.setup(2); - _folder1.setDetails(1, 1, 0, 2, SCENE570_C_DRIVE); - _folder2.setDetails(1, 2, 1, 2, SCENE570_RING); - _folder3.setDetails(1, 3, 1, 2, SCENE570_PROTO); - _folder4.setDetails(1, 4, 1, 2, SCENE570_WACKY); + _folder1.setDetails(1, 1, 0, SCENE570_C_DRIVE); + _folder2.setDetails(1, 2, 1, SCENE570_RING); + _folder3.setDetails(1, 3, 1, SCENE570_PROTO); + _folder4.setDetails(1, 4, 1, SCENE570_WACKY); if (!BF_GLOBALS.getFlag(fDecryptedBluePrints)) - _icon1.setDetails(3, 5, 0, 2, SCENE570_COBB); - _icon2.setDetails(2, 7, 0, 2, SCENE570_LETTER); + _icon1.setDetails(3, 5, 0, SCENE570_COBB); + _icon2.setDetails(2, 7, 0, SCENE570_LETTER); if (BF_GLOBALS.getFlag(fDecryptedBluePrints)) - _icon3.setDetails(7, 6, 0, 2, SCENE570_COBB); + _icon3.setDetails(7, 6, 0, SCENE570_COBB); - _icon4.setDetails(6, 8, 1, 2, SCENE570_RINGEXE); - _icon5.setDetails(5, 9, 1, 2, SCENE570_RINGDATA); - _icon6.setDetails(6, 10, 2, 2, SCENE570_PROTOEXE); - _icon7.setDetails(5, 11, 2, 2, SCENE570_PROTODATA); - _icon8.setDetails(6, 12, 3, 2, SCENE570_WACKYEXE); - _icon9.setDetails(5, 13, 3, 2, SCENE570_WACKYDATA); + _icon4.setDetails(6, 8, 1, SCENE570_RINGEXE); + _icon5.setDetails(5, 9, 1, SCENE570_RINGDATA); + _icon6.setDetails(6, 10, 2, SCENE570_PROTOEXE); + _icon7.setDetails(5, 11, 2, SCENE570_PROTODATA); + _icon8.setDetails(6, 12, 3, SCENE570_WACKYEXE); + _icon9.setDetails(5, 13, 3, SCENE570_WACKYDATA); _iconManager.refreshList(); BF_GLOBALS._player.enableControl(); @@ -2107,7 +2107,7 @@ void Scene570::signal() { _object3.setFrame(1); _object3.fixPriority(1); - _icon3.setDetails(7, 6, 0, 2, SCENE570_COBB); + _icon3.setDetails(7, 6, 0, SCENE570_COBB); _iconManager.refreshList(); T2_GLOBALS._uiElements._active = true; T2_GLOBALS._uiElements.show(); diff --git a/engines/tsage/blue_force/blueforce_scenes5.h b/engines/tsage/blue_force/blueforce_scenes5.h index 5337b6426b..71c7f3d8f1 100644 --- a/engines/tsage/blue_force/blueforce_scenes5.h +++ b/engines/tsage/blue_force/blueforce_scenes5.h @@ -266,7 +266,7 @@ class Scene570: public SceneExt { virtual void remove(); virtual bool startAction(CursorType action, Event &event); - void setDetails(int iconId, int folderId, int parentFolderId, int unused, const Common::String &msg); + void setDetails(int iconId, int folderId, int parentFolderId, const Common::String &msg); }; class IconManager: public EventHandler { public: diff --git a/engines/tsage/blue_force/blueforce_scenes7.cpp b/engines/tsage/blue_force/blueforce_scenes7.cpp index 4cdd2f3f15..2f52c4df95 100644 --- a/engines/tsage/blue_force/blueforce_scenes7.cpp +++ b/engines/tsage/blue_force/blueforce_scenes7.cpp @@ -148,7 +148,7 @@ void Scene710::postInit(SceneObjectList *OwnerList) { BF_GLOBALS._sound1.fadeSound(14); _soundExt1.fadeSound(48); - _v51C34.set(40, 0, 280, 240); + BF_GLOBALS._player.postInit(); BF_GLOBALS._player.hide(); BF_GLOBALS._player._moveDiff = Common::Point(4, 2); diff --git a/engines/tsage/blue_force/blueforce_scenes8.cpp b/engines/tsage/blue_force/blueforce_scenes8.cpp index 867b6a9f6e..f78a332be9 100644 --- a/engines/tsage/blue_force/blueforce_scenes8.cpp +++ b/engines/tsage/blue_force/blueforce_scenes8.cpp @@ -1958,7 +1958,7 @@ void Scene840::BoatKeysInset::postInit(SceneObjectList *OwnerList) { _waveKeys.setDetails(840, 53, 8, -1, 2, (SceneItem *)NULL); } - _v1B4 = _v1B6 = 0; + _usedRentalKeys = _usedWaveKeys = false; } void Scene840::BoatKeysInset::remove() { @@ -2067,7 +2067,7 @@ bool Scene840::BoatKeysInset::RentalKeys::startAction(CursorType action, Event & BF_INVENTORY.setObjectScene(INV_RENTAL_KEYS, 1); T2_GLOBALS._uiElements.addScore(30); - scene->_boatKeysInset._v1B4 = 1; + scene->_boatKeysInset._usedRentalKeys = true; remove(); } return true; @@ -2085,7 +2085,7 @@ bool Scene840::BoatKeysInset::WaveKeys::startAction(CursorType action, Event &ev SceneItem::display2(840, 56); BF_INVENTORY.setObjectScene(INV_WAVE_KEYS, 1); T2_GLOBALS._uiElements.addScore(50); - scene->_boatKeysInset._v1B6 = 1; + scene->_boatKeysInset._usedWaveKeys = true; remove(); } else { SceneItem::display2(840, 9); @@ -2096,6 +2096,15 @@ bool Scene840::BoatKeysInset::WaveKeys::startAction(CursorType action, Event &ev } } +void Scene840::BoatKeysInset::synchronize(Serializer &s) { + FocusObject::synchronize(s); + + if (s.getVersion() >= 12) { + s.syncAsSint16LE(_usedWaveKeys); + s.syncAsSint16LE(_usedRentalKeys); + } +} + bool Scene840::BoatKeys::startAction(CursorType action, Event &event) { Scene840 *scene = (Scene840 *)BF_GLOBALS._sceneManager._scene; @@ -2467,10 +2476,10 @@ void Scene840::signal() { _boatKeysInset.setDetails(840, 50, 8, 51); break; case 8412: - if (_boatKeysInset._v1B6) { + if (_boatKeysInset._usedWaveKeys) { _sceneMode = 8409; setAction(&_sequenceManager1, this, 8409, &BF_GLOBALS._player, &_carter, &_doors, NULL); - } else if (!_boatKeysInset._v1B4) { + } else if (!_boatKeysInset._usedRentalKeys) { BF_GLOBALS._player.enableControl(); } else { _sceneMode = 3; diff --git a/engines/tsage/blue_force/blueforce_scenes8.h b/engines/tsage/blue_force/blueforce_scenes8.h index ef5ef81563..b9e6ebd640 100644 --- a/engines/tsage/blue_force/blueforce_scenes8.h +++ b/engines/tsage/blue_force/blueforce_scenes8.h @@ -348,8 +348,9 @@ class Scene840: public PalettedScene { public: RentalKeys _rentalKeys; WaveKeys _waveKeys; - int _v1B4, _v1B6; + bool _usedRentalKeys,_usedWaveKeys; + virtual void synchronize(Serializer &s); virtual void postInit(SceneObjectList *OwnerList = NULL); virtual void remove(); virtual void process(Event &event); diff --git a/engines/tsage/blue_force/blueforce_scenes9.cpp b/engines/tsage/blue_force/blueforce_scenes9.cpp index cef9e8135c..2b42dc8625 100644 --- a/engines/tsage/blue_force/blueforce_scenes9.cpp +++ b/engines/tsage/blue_force/blueforce_scenes9.cpp @@ -840,14 +840,14 @@ bool Scene910::Nico::startAction(CursorType action, Event &event) { if (BF_GLOBALS._nico910State >= 4) return NamedObject::startAction(action, event); - if (BF_GLOBALS._v4CEE6 < 4) - BF_GLOBALS._v4CEE6++; + if (BF_GLOBALS._nico910Talk < 4) + BF_GLOBALS._nico910Talk++; - if (BF_GLOBALS._v4CEE6 == 2) { + if (BF_GLOBALS._nico910Talk == 2) { scene->_sceneMode = 13; scene->_stripManager.start(9105, scene); } else - scene->_stripManager.start(9103 + BF_GLOBALS._v4CEE6, &BF_GLOBALS._stripProxy); + scene->_stripManager.start(9103 + BF_GLOBALS._nico910Talk, &BF_GLOBALS._stripProxy); return true; break; case INV_COLT45: @@ -887,14 +887,14 @@ bool Scene910::Nico::startAction(CursorType action, Event &event) { if (BF_GLOBALS._nico910State >= 4) return NamedObject::startAction(action, event); - if (BF_GLOBALS._v4CEE6 < 4) - BF_GLOBALS._v4CEE6++; + if (BF_GLOBALS._nico910Talk < 4) + BF_GLOBALS._nico910Talk++; - if (BF_GLOBALS._v4CEE6 == 2) { + if (BF_GLOBALS._nico910Talk == 2) { scene->_sceneMode = 13; scene->_stripManager.start(9105, scene); } else - scene->_stripManager.start(9103 + BF_GLOBALS._v4CEE6, &BF_GLOBALS._stripProxy); + scene->_stripManager.start(9103 + BF_GLOBALS._nico910Talk, &BF_GLOBALS._stripProxy); return true; break; @@ -966,16 +966,16 @@ bool Scene910::Stuart::startAction(CursorType action, Event &event) { return true; break; case CURSOR_TALK: - if (BF_GLOBALS._v4CEE8 < 3) - BF_GLOBALS._v4CEE8++; + if (BF_GLOBALS._stuart910Talk < 3) + BF_GLOBALS._stuart910Talk++; - scene->_stripManager.start(9107 + BF_GLOBALS._v4CEE8, &BF_GLOBALS._stripProxy); + scene->_stripManager.start(9107 + BF_GLOBALS._stuart910Talk, &BF_GLOBALS._stripProxy); return true; break; case INV_COLT45: if ((BF_GLOBALS.getFlag(gunDrawn)) && (BF_GLOBALS.getFlag(fGunLoaded)) && (BF_GLOBALS.getHasBullets())){ BF_GLOBALS._player.disableControl(); - if (BF_GLOBALS._v4CEE4 == 2) { + if (BF_GLOBALS._stuart910State == 2) { scene->_sceneMode = 9132; scene->setAction(&scene->_sequenceManager1, scene, 9132, &scene->_stuart, NULL); return NamedObject::startAction(action, event); @@ -1878,7 +1878,7 @@ bool Scene910::Item2::startAction(CursorType action, Event &event) { bool Scene910::Item3::startAction(CursorType action, Event &event) { Scene910 *scene = (Scene910 *)BF_GLOBALS._sceneManager._scene; - if ((action == CURSOR_TALK) && (BF_GLOBALS._nico910State == 4) && (BF_GLOBALS._v4CEE4 == 0)) { + if ((action == CURSOR_TALK) && (BF_GLOBALS._nico910State == 4) && (BF_GLOBALS._stuart910State == 0)) { BF_GLOBALS._player.disableControl(); scene->_sceneMode = 15; scene->_stripManager.start(9102, scene); @@ -2057,7 +2057,7 @@ void Scene910::postInit(SceneObjectList *OwnerList) { || (BF_GLOBALS._sceneManager._previousScene == 300)) { BF_GLOBALS._sceneManager._previousScene = 900; BF_GLOBALS._nico910State = 0; - BF_GLOBALS._v4CEE4 = 0; + BF_GLOBALS._stuart910State = 0; } _field2DE0 = 0; @@ -2149,7 +2149,7 @@ void Scene910::postInit(SceneObjectList *OwnerList) { _nico.setVisage(913); _nico.setPosition(Common::Point(262, 124)); _nico.setStrip(6); - BF_GLOBALS._v4CEE6 = 0; + BF_GLOBALS._nico910Talk = 0; BF_GLOBALS._nico910State = 1; _nico.setDetails(910, 63, 64, 67, 5, &_item4); BF_GLOBALS._v4CECA = 2; @@ -2309,7 +2309,7 @@ void Scene910::signal() { case 15: _stuart.postInit(); _stuart.setDetails(910, 66, 67, 68, 5, &_nico); - BF_GLOBALS._v4CEE8 = 0; + BF_GLOBALS._stuart910Talk = 0; _sceneMode = 9121; setAction(&_sequenceManager1, this, 9121, &_stuart, NULL); break; @@ -2349,7 +2349,7 @@ void Scene910::signal() { case 18: BF_GLOBALS._player._strip = 7; BF_GLOBALS._player._frame = 1; - if (BF_GLOBALS._v4CEE4 == 3) { + if (BF_GLOBALS._stuart910State == 3) { if (_field2DE4 == 0) { _field2DE4 = 1; _sceneMode = 9142; @@ -2460,7 +2460,7 @@ void Scene910::signal() { BF_GLOBALS._player.disableControl(); _nico.postInit(); _nico.setDetails(910, 63, 64, 65, 5, &_item4); - BF_GLOBALS._v4CEE6 = 0; + BF_GLOBALS._nico910Talk = 0; _shadow.postInit(); _action2.remove(); _sceneMode = 9116; @@ -2498,7 +2498,7 @@ void Scene910::signal() { break; case 9121: _item3.setDetails(7, 910, 96, 60, 61, 3); - BF_GLOBALS._v4CEE4 = 2; + BF_GLOBALS._stuart910State = 2; if (BF_GLOBALS._nico910State == 4) { _sceneMode = 20; _stripManager.start(9115, this); @@ -2582,7 +2582,7 @@ void Scene910::signal() { _yellowCord.hide(); _sceneMode = 9136; setAction(&_sequenceManager1, this, 9136, &BF_GLOBALS._player, &_stuart, &_yellowCord, NULL); - BF_GLOBALS._v4CEE4 = 3; + BF_GLOBALS._stuart910State = 3; break; case 11: _sceneMode = 9137; @@ -2605,13 +2605,13 @@ void Scene910::signal() { _stuart.postInit(); _nico.setDetails(910, 72, 73, 74, 3, (SceneItem *)NULL); _stuart.setDetails(910, 66, 67, 68, 5, &_nico); - BF_GLOBALS._v4CEE8 = 0; + BF_GLOBALS._stuart910Talk = 0; _sceneMode = 9121; setAction(&_sequenceManager1, this, 9121, &_stuart, NULL); break; case 9126: _sceneMode = 19; - if (BF_GLOBALS._v4CEE4 == 0) + if (BF_GLOBALS._stuart910State == 0) signal(); else _stripManager.start(9115, this); @@ -2630,7 +2630,7 @@ void Scene910::signal() { break; case 9132: BF_GLOBALS._player.enableControl(); - BF_GLOBALS._v4CEE4 = 4; + BF_GLOBALS._stuart910State = 4; BF_GLOBALS._deathReason = 13; BF_GLOBALS._sceneManager.changeScene(666); break; diff --git a/engines/tsage/configure.engine b/engines/tsage/configure.engine new file mode 100644 index 0000000000..2b8edf8266 --- /dev/null +++ b/engines/tsage/configure.engine @@ -0,0 +1,3 @@ +# This file is included from the main "configure" script +# add_engine [name] [desc] [build-by-default] [subengines] [base games] [deps] +add_engine tsage "TsAGE" yes diff --git a/engines/tsage/converse.cpp b/engines/tsage/converse.cpp index 2298d28e0d..f7c1dd24e6 100644 --- a/engines/tsage/converse.cpp +++ b/engines/tsage/converse.cpp @@ -451,6 +451,13 @@ int ConversationChoiceDialog::execute(const Common::StringArray &choiceList) { draw(); g_globals->_events.showCursor(); + // WORKAROUND: On-screen dialogs are really meant to use a GfxManager instance + // for their lifetime, which prevents saving or loading. Since I don't want to spend a lot + // of time refactoring this already working dialog, fake it by putting a dummy gfxmanager at + // the end of the gfx manager list so as to prevent saving or loading + GfxManager gfxManager; + GLOBALS._gfxManagers.push_back(&gfxManager); + // Event handling loop Event event; while (!g_vm->shouldQuit()) { @@ -502,6 +509,7 @@ int ConversationChoiceDialog::execute(const Common::StringArray &choiceList) { // Remove the dialog remove(); + GLOBALS._gfxManagers.remove(&gfxManager); return _selectedIndex; } diff --git a/engines/tsage/core.cpp b/engines/tsage/core.cpp index 040dbc8c25..596f056bfe 100644 --- a/engines/tsage/core.cpp +++ b/engines/tsage/core.cpp @@ -1153,6 +1153,13 @@ void PaletteRotation::signal() { if (flag) _currIndex = _start; } + + // Added in Return to Ringworld + if (_currIndex < _start) { + flag = decDuration(); + if (flag) + _currIndex = _end; + } break; case 2: _currIndex += _idxChange; @@ -1538,7 +1545,11 @@ void ScenePalette::synchronize(Serializer &s) { s.syncAsSint32LE(_colors.foreground); s.syncAsSint32LE(_colors.background); - s.syncAsSint32LE(_field412); + if (s.getVersion() < 12) { + int useless = 0; + s.syncAsSint32LE(useless); + } + s.syncAsByte(_redColor); s.syncAsByte(_greenColor); s.syncAsByte(_blueColor); @@ -2103,7 +2114,7 @@ SceneObject::SceneObject() : SceneHotspot() { _shade = _oldShade = 0; _linkedActor = NULL; - _field8A = Common::Point(0, 0); + _actorDestPos = Common::Point(0, 0); _angle = 0; _xs = 0; _xe = 0; @@ -2497,8 +2508,8 @@ void SceneObject::synchronize(Serializer &s) { s.syncAsSint16LE(_moveDiff.x); s.syncAsSint16LE(_moveDiff.y); s.syncAsSint32LE(_moveRate); if (g_vm->getGameID() == GType_Ringworld2) { - s.syncAsSint16LE(_field8A.x); - s.syncAsSint16LE(_field8A.y); + s.syncAsSint16LE(_actorDestPos.x); + s.syncAsSint16LE(_actorDestPos.y); } SYNC_POINTER(_endAction); s.syncAsUint32LE(_regionBitList); @@ -2707,6 +2718,17 @@ GfxSurface SceneObject::getFrame() { _visageImages.setVisage(_visage, _strip); GfxSurface frame = _visageImages.getFrame(_frame); + // Reset any centroid adjustment flags, in + frame._flags &= ~(FRAME_FLIP_CENTROID_X | FRAME_FLIP_CENTROID_Y); + + // For later games, check whether the appropriate object flags are set for flipping + if (g_vm->getGameID() != GType_Ringworld) { + if ((_flags & OBJFLAG_FLIP_CENTROID_X) || _visageImages._flipHoriz) + frame._flags |= FRAME_FLIP_CENTROID_X; + if ((_flags & OBJFLAG_FLIP_CENTROID_Y) || _visageImages._flipVert) + frame._flags |= FRAME_FLIP_CENTROID_Y; + } + // If shading is needed, post apply the shadiing onto the frame if ((g_vm->getGameID() == GType_Ringworld2) && (_shade >= 1)) { Graphics::Surface s = frame.lockSurface(); @@ -2726,7 +2748,14 @@ GfxSurface SceneObject::getFrame() { } void SceneObject::reposition() { + if (g_vm->getGameID() == GType_Ringworld2) { + if (!(_flags & OBJFLAG_ZOOMED)) { + setZoom(g_globals->_sceneManager._scene->_zoomPercents[MIN(_position.y, (int16)255)]); + } + } + GfxSurface frame = getFrame(); + _bounds.resize(frame, _position.x, _position.y - _yDiff, _percent); _xs = _bounds.left; _xe = _bounds.right; diff --git a/engines/tsage/core.h b/engines/tsage/core.h index 05f6f4b3a0..3286ee1448 100644 --- a/engines/tsage/core.h +++ b/engines/tsage/core.h @@ -515,7 +515,8 @@ public: enum ObjectFlags {OBJFLAG_FIXED_PRIORITY = 1, OBJFLAG_NO_UPDATES = 2, OBJFLAG_ZOOMED = 4, OBJFLAG_SUPPRESS_DISPATCH = 8, OBJFLAG_HIDE = 0x100, OBJFLAG_HIDING = 0x200, OBJFLAG_REMOVE = 0x400, OBJFLAG_CLONED = 0x800, OBJFLAG_CHECK_REGION = 0x1000, OBJFLAG_PANE_0 = 0x4000, OBJFLAG_PANE_1 = 0x8000, - OBJFLAG_PANES = OBJFLAG_PANE_0 | OBJFLAG_PANE_1 + OBJFLAG_PANES = OBJFLAG_PANE_0 | OBJFLAG_PANE_1, + OBJFLAG_FLIP_CENTROID_X = 0x10000, OBJFLAG_FLIP_CENTROID_Y = 0x20000 }; class SceneObject : public SceneHotspot { @@ -548,7 +549,7 @@ public: EventHandler *_mover; Common::Point _moveDiff; int _moveRate; - Common::Point _field8A; + Common::Point _actorDestPos; Action *_endAction; uint32 _regionBitList; diff --git a/engines/tsage/debugger.cpp b/engines/tsage/debugger.cpp index c7da5f5d30..e81e5cddb3 100644 --- a/engines/tsage/debugger.cpp +++ b/engines/tsage/debugger.cpp @@ -30,18 +30,19 @@ namespace TsAGE { Debugger::Debugger() : GUI::Debugger() { - DCmd_Register("continue", WRAP_METHOD(Debugger, Cmd_Exit)); - DCmd_Register("scene", WRAP_METHOD(Debugger, Cmd_Scene)); - DCmd_Register("walk_regions", WRAP_METHOD(Debugger, Cmd_WalkRegions)); - DCmd_Register("priority_regions", WRAP_METHOD(Debugger, Cmd_PriorityRegions)); - DCmd_Register("scene_regions", WRAP_METHOD(Debugger, Cmd_SceneRegions)); - DCmd_Register("setflag", WRAP_METHOD(Debugger, Cmd_SetFlag)); - DCmd_Register("getflag", WRAP_METHOD(Debugger, Cmd_GetFlag)); - DCmd_Register("clearflag", WRAP_METHOD(Debugger, Cmd_ClearFlag)); - DCmd_Register("listobjects", WRAP_METHOD(Debugger, Cmd_ListObjects)); - DCmd_Register("moveobject", WRAP_METHOD(Debugger, Cmd_MoveObject)); - DCmd_Register("hotspots", WRAP_METHOD(Debugger, Cmd_Hotspots)); - DCmd_Register("sound", WRAP_METHOD(Debugger, Cmd_Sound)); + DCmd_Register("continue", WRAP_METHOD(Debugger, Cmd_Exit)); + DCmd_Register("scene", WRAP_METHOD(Debugger, Cmd_Scene)); + DCmd_Register("walk_regions", WRAP_METHOD(Debugger, Cmd_WalkRegions)); + DCmd_Register("priority_regions", WRAP_METHOD(Debugger, Cmd_PriorityRegions)); + DCmd_Register("scene_regions", WRAP_METHOD(Debugger, Cmd_SceneRegions)); + DCmd_Register("setflag", WRAP_METHOD(Debugger, Cmd_SetFlag)); + DCmd_Register("getflag", WRAP_METHOD(Debugger, Cmd_GetFlag)); + DCmd_Register("clearflag", WRAP_METHOD(Debugger, Cmd_ClearFlag)); + DCmd_Register("listobjects", WRAP_METHOD(Debugger, Cmd_ListObjects)); + DCmd_Register("moveobject", WRAP_METHOD(Debugger, Cmd_MoveObject)); + DCmd_Register("hotspots", WRAP_METHOD(Debugger, Cmd_Hotspots)); + DCmd_Register("sound", WRAP_METHOD(Debugger, Cmd_Sound)); + DCmd_Register("setdebug", WRAP_METHOD(Debugger, Cmd_SetDebug)); } static int strToInt(const char *s) { @@ -340,6 +341,14 @@ bool Debugger::Cmd_Sound(int argc, const char **argv) { return false; } +/** + * Activate internal debugger, when available + */ +bool Debugger::Cmd_SetDebug(int argc, const char **argv) { + DebugPrintf("Not available in this game\n"); + return true; +} + /* * This command lists the objects available, and their ID */ @@ -707,4 +716,19 @@ bool Ringworld2Debugger::Cmd_MoveObject(int argc, const char **argv) { return true; } + +/** + * Activate internal debugger, when available + */ +bool Ringworld2Debugger::Cmd_SetDebug(int argc, const char **argv) { + if (argc != 1) { + DebugPrintf("Usage: %s\n", argv[0]); + return true; + } + + // Set the internal debugger flag(s?) to true + // _debugCardGame is reset by scene1337::subPostInit() + R2_GLOBALS._debugCardGame = true; + return true; +} } // End of namespace TsAGE diff --git a/engines/tsage/debugger.h b/engines/tsage/debugger.h index bf826a3f77..c9b7e75039 100644 --- a/engines/tsage/debugger.h +++ b/engines/tsage/debugger.h @@ -45,6 +45,7 @@ protected: bool Cmd_Sound(int argc, const char **argv); virtual bool Cmd_ListObjects(int argc, const char **argv) = 0; virtual bool Cmd_MoveObject(int argc, const char **argv) = 0; + virtual bool Cmd_SetDebug(int argc, const char **argv); }; class DemoDebugger : public Debugger { @@ -69,6 +70,7 @@ class Ringworld2Debugger : public Debugger { protected: virtual bool Cmd_ListObjects(int argc, const char **argv); virtual bool Cmd_MoveObject(int argc, const char **argv); + virtual bool Cmd_SetDebug(int argc, const char **argv); }; } // End of namespace TsAGE diff --git a/engines/tsage/detection_tables.h b/engines/tsage/detection_tables.h index b374dbc98b..0f7f1e49bb 100644 --- a/engines/tsage/detection_tables.h +++ b/engines/tsage/detection_tables.h @@ -165,7 +165,7 @@ static const tSageGameDescription gameDescriptions[] = { AD_ENTRY1s("r2rw.rlb", "df6c25622387007788ca36d99362c1f0", 47586928), Common::EN_ANY, Common::kPlatformDOS, - ADGF_CD | ADGF_UNSTABLE, + ADGF_CD | ADGF_TESTING, GUIO0() }, GType_Ringworld2, diff --git a/engines/tsage/events.cpp b/engines/tsage/events.cpp index d2d8464763..6baa654214 100644 --- a/engines/tsage/events.cpp +++ b/engines/tsage/events.cpp @@ -71,7 +71,7 @@ bool EventsClass::pollEvent() { break; default: - break; + break; } return true; diff --git a/engines/tsage/globals.cpp b/engines/tsage/globals.cpp index 768c51ca16..0f271649b3 100644 --- a/engines/tsage/globals.cpp +++ b/engines/tsage/globals.cpp @@ -241,19 +241,19 @@ namespace BlueForce { BlueForceGlobals::BlueForceGlobals(): TsAGE2Globals() { _hiddenDoorStatus = 0; _nico910State = 0; - _v4CEE4 = 0; - _v4CEE6 = 0; - _v4CEE8 = 0; + _stuart910State = 0; + _nico910Talk = 0; + _stuart910Talk = 0; _deziTopic = 0; _deathReason = 0; _driveFromScene = 300; _driveToScene = 0; _subFlagBitArr1 = 0; _subFlagBitArr2 = 0; - _v50CC2 = 0; + _scene410HarrisonTalkFl = false; _scene410Action1Count = 0; _scene410TalkCount = 0; - _scene410HarrisonMovedFl = 0; + _scene410HarrisonMovedFl = false; _bookmark = bNone; _mapLocationId = 1; _clip1Bullets = 8; @@ -296,9 +296,9 @@ void BlueForceGlobals::synchronize(Serializer &s) { s.syncAsByte(_breakerBoxStatusArr[i]); s.syncAsSint16LE(_hiddenDoorStatus); s.syncAsSint16LE(_nico910State); - s.syncAsSint16LE(_v4CEE4); - s.syncAsSint16LE(_v4CEE6); - s.syncAsSint16LE(_v4CEE8); + s.syncAsSint16LE(_stuart910State); + s.syncAsSint16LE(_nico910Talk); + s.syncAsSint16LE(_stuart910Talk); s.syncAsSint16LE(_deziTopic); s.syncAsSint16LE(_deathReason); s.syncAsSint16LE(_driveFromScene); @@ -312,7 +312,7 @@ void BlueForceGlobals::synchronize(Serializer &s) { } s.syncAsSint16LE(_subFlagBitArr1); s.syncAsSint16LE(_subFlagBitArr2); - s.syncAsSint16LE(_v50CC2); + s.syncAsSint16LE(_scene410HarrisonTalkFl); s.syncAsSint16LE(_scene410Action1Count); s.syncAsSint16LE(_scene410TalkCount); s.syncAsSint16LE(_scene410HarrisonMovedFl); @@ -372,17 +372,17 @@ void BlueForceGlobals::reset() { _breakerBoxStatusArr[17] = 0; _hiddenDoorStatus = 0; _nico910State = 0; - _v4CEE4 = 0; - _v4CEE6 = 0; - _v4CEE8 = 0; + _stuart910State = 0; + _nico910Talk = 0; + _stuart910Talk = 0; _deziTopic = 0; _deathReason = 0; _subFlagBitArr1 = 0; _subFlagBitArr2 = 0; - _v50CC2 = 0; + _scene410HarrisonTalkFl = false; _scene410Action1Count = 0; _scene410TalkCount = 0; - _scene410HarrisonMovedFl = 0; + _scene410HarrisonMovedFl = false; _clip1Bullets = 8; _clip2Bullets = 8; } @@ -457,6 +457,8 @@ Ringworld2Globals::Ringworld2Globals() { _foodCount = 0; _rimLocation = 0; _rimTransportLocation = 0; + + _debugCardGame = false; } Ringworld2Globals::~Ringworld2Globals() { @@ -583,6 +585,8 @@ void Ringworld2Globals::reset() { _player._characterScene[R2_QUINN] = 100; _player._characterScene[R2_SEEKER] = 300; _player._characterScene[R2_MIRANDA] = 300; + + _debugCardGame = false; } void Ringworld2Globals::synchronize(Serializer &s) { diff --git a/engines/tsage/globals.h b/engines/tsage/globals.h index 4523a7bca0..f5543af345 100644 --- a/engines/tsage/globals.h +++ b/engines/tsage/globals.h @@ -200,19 +200,19 @@ public: int8 _breakerBoxStatusArr[18]; int _hiddenDoorStatus; int _nico910State; - int _v4CEE4; - int _v4CEE6; - int _v4CEE8; + int _stuart910State; + int _nico910Talk; + int _stuart910Talk; int _deziTopic; int _deathReason; int _driveFromScene; int _driveToScene; uint8 _subFlagBitArr1; uint8 _subFlagBitArr2; - int _v50CC2; + bool _scene410HarrisonTalkFl; int _scene410Action1Count; int _scene410TalkCount; - int _scene410HarrisonMovedFl; + bool _scene410HarrisonMovedFl; Bookmark _bookmark; int _mapLocationId; int _clip1Bullets, _clip2Bullets; @@ -292,6 +292,7 @@ public: byte _stripManager_lookupList[12]; byte _scene1550JunkLocations[508]; Common::Point _balloonPosition; + bool _debugCardGame; // moved from scene 1337 so it can be easily set in the debugger ScannerDialog *_scannerDialog; diff --git a/engines/tsage/graphics.cpp b/engines/tsage/graphics.cpp index 446c56662a..fa3ed33302 100644 --- a/engines/tsage/graphics.cpp +++ b/engines/tsage/graphics.cpp @@ -71,19 +71,14 @@ GfxSurface surfaceFromRes(const byte *imgData) { s._transColor = *(imgData + 8); byte flags = imgData[9]; + s._flags = (g_vm->getGameID() != GType_Ringworld) ? flags : 0; + bool rleEncoded = (flags & 2) != 0; // Figure out the centroid s._centroid.x = READ_LE_UINT16(imgData + 4); s._centroid.y = READ_LE_UINT16(imgData + 6); - if (g_vm->getGameID() != GType_Ringworld) { - if (flags & 4) - s._centroid.x = r.width() - (s._centroid.x + 1); - if (flags & 8) - s._centroid.y = r.height() - (s._centroid.y + 1); - } - const byte *srcP = imgData + 10; Graphics::Surface destSurface = s.lockSurface(); byte *destP = (byte *)destSurface.getPixels(); @@ -194,8 +189,9 @@ void Rect::contain(const Rect &r) { * @percent Scaling percentage */ void Rect::resize(const GfxSurface &surface, int xp, int yp, int percent) { - int xe = surface.getBounds().width() * percent / 100; - int ye = surface.getBounds().height() * percent / 100; + const Rect &bounds = surface.getBounds(); + int xe = bounds.width() * percent / 100; + int ye = bounds.height() * percent / 100; this->set(0, 0, xe, ye); if (!right) ++right; @@ -203,8 +199,13 @@ void Rect::resize(const GfxSurface &surface, int xp, int yp, int percent) { this->moveTo(xp, yp); - int xd = surface._centroid.x * percent / 100; - int yd = surface._centroid.y * percent / 100; + int xa = (surface._flags & FRAME_FLIP_CENTROID_X) == 0 ? surface._centroid.x : + bounds.width() - (surface._centroid.x + 1); + int ya = (surface._flags & FRAME_FLIP_CENTROID_Y) == 0 ? surface._centroid.y : + bounds.height() - (surface._centroid.y + 1); + + int xd = xa * percent / 100; + int yd = ya * percent / 100; this->translate(-xd, -yd); } @@ -234,6 +235,7 @@ GfxSurface::GfxSurface() : _bounds(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT) { _customSurface = NULL; _transColor = -1; _trackDirtyRects = false; + _flags = 0; } GfxSurface::GfxSurface(const GfxSurface &s) { @@ -417,6 +419,7 @@ GfxSurface &GfxSurface::operator=(const GfxSurface &s) { _bounds = s._bounds; _centroid = s._centroid; _transColor = s._transColor; + _flags = s._flags; if (_customSurface) { // Surface owns the internal data, so replicate it so new surface owns it's own @@ -1242,8 +1245,9 @@ GfxButton *GfxDialog::execute(GfxButton *defaultButton) { } void GfxDialog::setPalette() { - if (g_vm->getGameID() == GType_BlueForce) { - g_globals->_scenePalette.loadPalette(2); + if (g_vm->getGameID() != GType_Ringworld) { + if (g_vm->getGameID() == GType_BlueForce) + g_globals->_scenePalette.loadPalette(2); g_globals->_scenePalette.setPalette(0, 1); g_globals->_scenePalette.setPalette(g_globals->_gfxColors.background, 1); g_globals->_scenePalette.setPalette(g_globals->_gfxColors.foreground, 1); diff --git a/engines/tsage/graphics.h b/engines/tsage/graphics.h index 858731a1ac..47961dd02a 100644 --- a/engines/tsage/graphics.h +++ b/engines/tsage/graphics.h @@ -71,6 +71,8 @@ public: LineSlice(int xStart, int xEnd) { xs = xStart; xe = xEnd; } }; +enum FrameFlag { FRAME_FLIP_CENTROID_X = 4, FRAME_FLIP_CENTROID_Y = 8 }; + class GfxSurface { private: Graphics::Surface *_customSurface; @@ -89,6 +91,7 @@ public: Common::Point _centroid; int _transColor; Rect _clipRect; + byte _flags; public: GfxSurface(); GfxSurface(const GfxSurface &s); diff --git a/engines/tsage/ringworld/ringworld_scenes1.h b/engines/tsage/ringworld/ringworld_scenes1.h index 5dd882af93..d52d4fb6ec 100644 --- a/engines/tsage/ringworld/ringworld_scenes1.h +++ b/engines/tsage/ringworld/ringworld_scenes1.h @@ -315,8 +315,6 @@ public: Action1 _action1; Action2 _action2; Action3 _action3; - // CHECKME: Object1 looks useless - Object1 _object1; LeftFlyCycle _leftFlyCycle; CenterFlyCycle _centerFlyCycle; RightFlyCycle _rightFlyCycle; @@ -324,10 +322,7 @@ public: SpeakerSText _speakerSText; SpeakerQText _speakerQText; DisplayHotspot _background; - - //CHECKME: Useless Hotspot, never initialized DisplayHotspot _item1; - //CHECKME: Useless Hotspot, never initialized DisplayHotspot _entrance; DisplayHotspot _bulwark; DisplayHotspot _tree; diff --git a/engines/tsage/ringworld/ringworld_scenes10.cpp b/engines/tsage/ringworld/ringworld_scenes10.cpp index f9a8e7996a..eac181e350 100644 --- a/engines/tsage/ringworld/ringworld_scenes10.cpp +++ b/engines/tsage/ringworld/ringworld_scenes10.cpp @@ -1870,7 +1870,7 @@ void Scene9900::signal() { setAction(&_sequenceManager, this, 9908, &_object1, &_object2, &_object3, &_object4, &_object5, &_object6); break; case 162: - warning("TBC: shutdown();"); + // shutdown(); g_globals->_game->quitGame(); break; case 9901: diff --git a/engines/tsage/ringworld2/ringworld2_dialogs.cpp b/engines/tsage/ringworld2/ringworld2_dialogs.cpp index 12147f7ee5..a0675bc292 100644 --- a/engines/tsage/ringworld2/ringworld2_dialogs.cpp +++ b/engines/tsage/ringworld2/ringworld2_dialogs.cpp @@ -50,6 +50,7 @@ RightClickDialog::RightClickDialog() : GfxDialog() { _btnList[5] = Common::Point(83, 47); // Set the palette and change the cursor + _previousCursor = R2_GLOBALS._events.getCursor(); R2_GLOBALS._events.setCursor(CURSOR_ARROW); setPalette(); @@ -136,7 +137,7 @@ bool RightClickDialog::process(Event &event) { return false; } -void RightClickDialog::execute() { +int RightClickDialog::execute() { // Draw the dialog draw(); @@ -157,7 +158,8 @@ void RightClickDialog::execute() { } // Execute the specified action - CursorType cursorNum = CURSOR_NONE; + CursorType cursorNum = _previousCursor; + int result = -1; switch (_selectedAction) { case 0: // Look action @@ -177,17 +179,18 @@ void RightClickDialog::execute() { break; case 4: // Change player - CharacterDialog::show(); + result = 0; break; case 5: // Options dialog + result = 1; break; } - if (cursorNum != CURSOR_NONE) - R2_GLOBALS._events.setCursor(cursorNum); - + R2_GLOBALS._events.setCursor(cursorNum); _gfxManager.deactivate(); + + return result; } /*--------------------------------------------------------------------------*/ diff --git a/engines/tsage/ringworld2/ringworld2_dialogs.h b/engines/tsage/ringworld2/ringworld2_dialogs.h index 02a1aed81c..0c19ae4371 100644 --- a/engines/tsage/ringworld2/ringworld2_dialogs.h +++ b/engines/tsage/ringworld2/ringworld2_dialogs.h @@ -50,13 +50,14 @@ private: int _highlightedAction; int _selectedAction; + CursorType _previousCursor; public: RightClickDialog(); ~RightClickDialog(); virtual void draw(); virtual bool process(Event &event); - void execute(); + int execute(); }; class CharacterDialog: public GfxDialog { diff --git a/engines/tsage/ringworld2/ringworld2_logic.cpp b/engines/tsage/ringworld2/ringworld2_logic.cpp index 57d8afb57f..e1d6e79423 100644 --- a/engines/tsage/ringworld2/ringworld2_logic.cpp +++ b/engines/tsage/ringworld2/ringworld2_logic.cpp @@ -290,7 +290,7 @@ Scene *Ringworld2Game::createScene(int sceneNumber) { // Confrontation return new Scene3400(); case 3500: - // Maze action sequencec + // Flub tube maze return new Scene3500(); case 3600: // Cutscene - walking at gunpoint @@ -371,12 +371,13 @@ void SceneExt::postInit(SceneObjectList *OwnerList) { _field12 = 0; _sceneMode = 0; + static_cast<SceneHandlerExt *>(R2_GLOBALS._sceneHandler)->setupPaletteMaps(); + int prevScene = R2_GLOBALS._sceneManager._previousScene; int sceneNumber = R2_GLOBALS._sceneManager._sceneNumber; if (((prevScene == -1) && (sceneNumber != 180) && (sceneNumber != 205) && (sceneNumber != 50)) || (sceneNumber == 50) || ((sceneNumber == 100) && (prevScene == 0 || prevScene == 180 || prevScene == 205))) { - static_cast<SceneHandlerExt *>(R2_GLOBALS._sceneHandler)->setupPaletteMaps(); R2_GLOBALS._uiElements._active = true; R2_GLOBALS._uiElements.show(); } else { @@ -400,19 +401,6 @@ void SceneExt::process(Event &event) { } void SceneExt::dispatch() { -/* - _timerList.dispatch(); - - if (_field37A) { - if ((--_field37A == 0) && R2_GLOBALS._dayNumber) { - if (R2_GLOBALS._uiElements._active && R2_GLOBALS._player._enabled) { - R2_GLOBALS._uiElements.show(); - } - - _field37A = 0; - } - } -*/ Scene::dispatch(); } @@ -1237,8 +1225,13 @@ void Ringworld2Game::processEvent(Event &event) { void Ringworld2Game::rightClick() { RightClickDialog *dlg = new RightClickDialog(); - dlg->execute(); + int option = dlg->execute(); delete dlg; + + if (option == 0) + CharacterDialog::show(); + else if (option == 1) + HelpDialog::show(); } /*--------------------------------------------------------------------------*/ @@ -1502,7 +1495,7 @@ MazeUI::MazeUI() { _cellSize.x = _cellSize.y = 0; _mapOffset.x = _mapOffset.y = 0; _resNum = _cellsResNum = 0; - _frameCount = _resCount = _mapImagePitch = _unused = 0; + _frameCount = _resCount = _mapImagePitch = 0; } MazeUI::~MazeUI() { @@ -1518,7 +1511,9 @@ void MazeUI::synchronize(Serializer &s) { s.syncAsSint16LE(_mapOffset.x); s.syncAsSint16LE(_mapOffset.y); - s.syncAsSint16LE(_unused); + + int dummy = 0; + s.syncAsSint16LE(dummy); } void MazeUI::load(int resNum) { @@ -1603,12 +1598,13 @@ void MazeUI::draw() { (_cellSize.y - 1)) / _cellSize.y; // Loop to handle the cell rows of the visible display area one at a time - for (int yCtr = 0; yCtr < _cellsVisible.y; ++yCtr, yPos += ySize) { + for (int yCtr = 0; yCtr <= _cellsVisible.y; ++yCtr, yPos += ySize) { int cellY = _mapOffset.y / _cellSize.y + yCtr; // Loop to iterate through the horizontal visible cells to build up - // an entire cell high horizontal slice of the map - for (int xCtr = 0; xCtr < _cellsVisible.x; ++xCtr) { + // an entire cell high horizontal slice of the map, plus one extra cell + // to allow for partial cell scrolling on-screen on the left/right sides + for (int xCtr = 0; xCtr <= _cellsVisible.x; ++xCtr) { int cellX = _mapOffset.x / _cellSize.x + xCtr; // Get the type of content to display in the cell @@ -1861,6 +1857,10 @@ bool AnimationPlayer::load(int animId, Action *endAction) { _frameDelay = (60 / _subData._frameRate); _gameFrame = R2_GLOBALS._events.getFrameNumber(); + // WORKAROUND: Slow down the title sequences to better match the original + if (animId <= 4 || animId == 15) + _frameDelay *= 8; + if (_subData._totalSize) { _dataNeeded = _subData._totalSize; } else { diff --git a/engines/tsage/ringworld2/ringworld2_logic.h b/engines/tsage/ringworld2/ringworld2_logic.h index 41ddb277de..c9695c921d 100644 --- a/engines/tsage/ringworld2/ringworld2_logic.h +++ b/engines/tsage/ringworld2/ringworld2_logic.h @@ -307,7 +307,6 @@ public: int _frameCount; int _resCount; int _mapImagePitch; - int _unused; public: MazeUI(); virtual ~MazeUI(); diff --git a/engines/tsage/ringworld2/ringworld2_scenes0.cpp b/engines/tsage/ringworld2/ringworld2_scenes0.cpp index f483b1e47c..2592bde19a 100644 --- a/engines/tsage/ringworld2/ringworld2_scenes0.cpp +++ b/engines/tsage/ringworld2/ringworld2_scenes0.cpp @@ -712,7 +712,7 @@ void Scene125::signal() { R2_GLOBALS._player._canWalk = false; break; case 10: - switch (_consoleMode) { + switch (_consoleMode) { case 12: _sceneMode = 129; diff --git a/engines/tsage/ringworld2/ringworld2_scenes1.cpp b/engines/tsage/ringworld2/ringworld2_scenes1.cpp index 2d957990b9..98d60dac0d 100644 --- a/engines/tsage/ringworld2/ringworld2_scenes1.cpp +++ b/engines/tsage/ringworld2/ringworld2_scenes1.cpp @@ -20,6 +20,8 @@ * */ +#include "graphics/cursorman.h" + #include "tsage/scenes.h" #include "tsage/tsage.h" #include "tsage/staticres.h" @@ -874,8 +876,8 @@ void Scene1100::postInit(SceneObjectList *OwnerList) { R2_GLOBALS._player._moveRate = 30; R2_GLOBALS._player._moveDiff = Common::Point(16, 2); - _rightLandslide.setup2(1104, 2, 1, 175, 125, 102, 1); - _purplePlant.setup2(1102, 5, 1, 216, 167, 1, 0); + _rightLandslide.setup2(1104, 2, 1, 175, 125, 102, EFFECT_SHADED); + _purplePlant.setup2(1102, 5, 1, 216, 167, 1, EFFECT_NONE); _leftImpacts.postInit(); _leftImpacts.setup(1113, 2, 1); @@ -1568,7 +1570,7 @@ void Scene1200::signal() { // No break on purpose case 1203: R2_GLOBALS._player.enableControl(); - warning("_eventManager.waitEvent()"); + // CHECKME: The original is calling _eventManager.waitEvent(); _sceneMode = 2; break; case 10: @@ -1790,7 +1792,7 @@ void Scene1200::signal() { R2_GLOBALS._player.animate(ANIM_MODE_6, this); break; default: - warning("_eventManager.waitEvent()"); + // CHECKME: The original is walling _eventManager.waitEvent(); _sceneMode = 2; break; } @@ -2210,70 +2212,76 @@ void Scene1200::startCrawling(CrawlDirection dir) { * *--------------------------------------------------------------------------*/ -Scene1337::unkObj1337sub1::unkObj1337sub1() { - _field34 = 0; - _field36 = Common::Point(0, 0); +Scene1337::Card::Card() { + _cardId = 0; + _stationPos = Common::Point(0, 0); } -void Scene1337::unkObj1337sub1::synchronize(Serializer &s) { - warning("STUBBED: unkObj1337sub1::synchronize()"); +void Scene1337::Card::synchronize(Serializer &s) { + warning("STUBBED: Card::synchronize()"); } -Scene1337::unkObj1337_1::unkObj1337_1() { - _fieldB94 = Common::Point(0, 0); - _fieldB98 = Common::Point(0, 0); - _fieldB9C = Common::Point(0, 0); - _fieldBA0 = Common::Point(0, 0); - _fieldBA4 = 0; +Scene1337::GameBoardSide::GameBoardSide() { + _card1Pos = Common::Point(0, 0); + _card2Pos = Common::Point(0, 0); + _card3Pos = Common::Point(0, 0); + _card4Pos = Common::Point(0, 0); + _frameNum = 0; } -void Scene1337::unkObj1337_1::synchronize(Serializer &s) { - warning("STUBBED: unkObj1337_1::synchronize()"); +void Scene1337::GameBoardSide::synchronize(Serializer &s) { + warning("STUBBED: GameBoardSide::synchronize()"); } Scene1337::Scene1337() { _autoplay = false; - _field3E24 = 0; - _field3E26 = 0; + _cardsAvailableNumb = 0; + _currentDiscardIndex = 0; for (int i = 0; i < 100; i++) - _field3E28[i] = 0; + _availableCardsPile[i] = 0; - _field423C = 0; - _field423E = 0; + _shuffleEndedFl = false; + _currentPlayerNumb = 0; _field4240 = 0; _field4242 = 0; - _field4244 = 0; - _field4246 = 0; - _field4248 = 0; + _field4244 = false; + _field4246 = false; _field424A = 0; - _field424C = 0; - _field424E = 0; + _instructionsDisplayedFl = 0; + _instructionsWaitCount = 0; _unkFctPtr412 = nullptr; - _field3EF0 = nullptr; + _discardCard = nullptr; _field3EF4 = nullptr; _field3EF8 = nullptr; + + _cursorCurRes = 0; + _cursorCurStrip = 0; + _cursorCurFrame = 0; } void Scene1337::synchronize(Serializer &s) { warning("STUBBED: Scene1337::synchronize()"); } -void Scene1337::Action1337::subD18B5(int resNum, int stripNum, int frameNum) { - warning("STUBBED: Action1337::subD18B5()"); -} - -void Scene1337::Action1337::skipFrames(int32 skipCount) { +void Scene1337::Action1337::waitFrames(int32 frameCount) { uint32 firstFrameNumber = g_globals->_events.getFrameNumber(); - uint32 tmpFrameNumber = firstFrameNumber; - - while (tmpFrameNumber < firstFrameNumber + skipCount) - tmpFrameNumber = g_globals->_events.getFrameNumber(); + uint32 curFrame = firstFrameNumber; + uint32 destFrame = firstFrameNumber + frameCount; - warning("_eventManager.waitEvent(-1)"); + while ((curFrame < destFrame) && !g_vm->shouldQuit()) { + TsAGE::Event event; + g_globals->_events.getEvent(event); + curFrame = g_globals->_events.getFrameNumber(); + } + + // CHECKME: The original is calling _eventManager.waitEvent(); } +/** + * Display instructions + */ void Scene1337::Action1::signal() { Scene1337 *scene = (Scene1337 *)R2_GLOBALS._sceneManager._scene; @@ -2284,393 +2292,392 @@ void Scene1337::Action1::signal() { scene->actionDisplay(1331, 7, 159, 10, 1, 200, 0, 7, 0, 154, 154); scene->actionDisplay(1331, 8, 159, 10, 1, 200, 0, 7, 0, 154, 154); - scene->_arrunkObj1337[1]._arr2[0]._field34 = 2; - scene->_arrunkObj1337[1]._arr2[0]._object1.postInit(); - scene->_arrunkObj1337[1]._arr2[0]._object1.setVisage(1332); - scene->_arrunkObj1337[1]._arr2[0]._object1.setPosition(scene->_arrunkObj1337[1]._arr2[0]._field36, 0); - scene->_arrunkObj1337[1]._arr2[0]._object1.setStrip(2); - scene->_arrunkObj1337[1]._arr2[0]._object1.setFrame(scene->_arrunkObj1337[1]._arr2[0]._field34); - scene->_arrunkObj1337[1]._arr2[0]._object1.fixPriority(170); - scene->setAnimationInfo(&scene->_arrunkObj1337[1]._arr2[0]); - - scene->_arrunkObj1337[1]._arr2[1]._field34 = 3; - scene->_arrunkObj1337[1]._arr2[1]._object1.postInit(); - scene->_arrunkObj1337[1]._arr2[1]._object1.setVisage(1332); - scene->_arrunkObj1337[1]._arr2[1]._object1.setPosition(scene->_arrunkObj1337[1]._arr2[1]._field36, 0); - scene->_arrunkObj1337[1]._arr2[1]._object1.setStrip(2); - scene->_arrunkObj1337[1]._arr2[1]._object1.setFrame(scene->_arrunkObj1337[1]._arr2[1]._field34); - scene->_arrunkObj1337[1]._arr2[1]._object1.fixPriority(170); - scene->setAnimationInfo(&scene->_arrunkObj1337[1]._arr2[1]); - - scene->_arrunkObj1337[2]._arr2[0]._field34 = 4; - scene->_arrunkObj1337[2]._arr2[0]._object1.postInit(); - scene->_arrunkObj1337[2]._arr2[0]._object1.setVisage(1332); - scene->_arrunkObj1337[2]._arr2[0]._object1.setPosition(scene->_arrunkObj1337[2]._arr2[0]._field36, 0); - scene->_arrunkObj1337[2]._arr2[0]._object1.setStrip(2); - scene->_arrunkObj1337[2]._arr2[0]._object1.setFrame(scene->_arrunkObj1337[2]._arr2[0]._field34); - scene->_arrunkObj1337[2]._arr2[0]._object1.fixPriority(170); - scene->setAnimationInfo(&scene->_arrunkObj1337[2]._arr2[0]); - - scene->_arrunkObj1337[3]._arr2[0]._field34 = 5; - scene->_arrunkObj1337[3]._arr2[0]._object1.postInit(); - scene->_arrunkObj1337[3]._arr2[0]._object1.setVisage(1332); - scene->_arrunkObj1337[3]._arr2[0]._object1.setPosition(scene->_arrunkObj1337[3]._arr2[0]._field36, 0); - scene->_arrunkObj1337[3]._arr2[0]._object1.setStrip(2); - scene->_arrunkObj1337[3]._arr2[0]._object1.setFrame(scene->_arrunkObj1337[3]._arr2[0]._field34); - scene->_arrunkObj1337[3]._arr2[0]._object1.fixPriority(170); - scene->setAnimationInfo(&scene->_arrunkObj1337[3]._arr2[0]); - - scene->_arrunkObj1337[3]._arr2[1]._field34 = 6; - scene->_arrunkObj1337[3]._arr2[1]._object1.postInit(); - scene->_arrunkObj1337[3]._arr2[1]._object1.setVisage(1332); - scene->_arrunkObj1337[3]._arr2[1]._object1.setPosition(scene->_arrunkObj1337[3]._arr2[1]._field36, 0); - scene->_arrunkObj1337[3]._arr2[1]._object1.setStrip(2); - scene->_arrunkObj1337[3]._arr2[1]._object1.setFrame(scene->_arrunkObj1337[3]._arr2[1]._field34); - scene->_arrunkObj1337[3]._arr2[1]._object1.fixPriority(170); - scene->setAnimationInfo(&scene->_arrunkObj1337[3]._arr2[1]); - - scene->_arrunkObj1337[3]._arr2[2]._field34 = 7; - scene->_arrunkObj1337[3]._arr2[2]._object1.postInit(); - scene->_arrunkObj1337[3]._arr2[2]._object1.setVisage(1332); - scene->_arrunkObj1337[3]._arr2[2]._object1.setPosition(scene->_arrunkObj1337[3]._arr2[2]._field36, 0); - scene->_arrunkObj1337[3]._arr2[2]._object1.setStrip(2); - scene->_arrunkObj1337[3]._arr2[2]._object1.setFrame(scene->_arrunkObj1337[3]._arr2[2]._field34); - scene->_arrunkObj1337[3]._arr2[2]._object1.fixPriority(170); - scene->setAnimationInfo(&scene->_arrunkObj1337[3]._arr2[2]); - - scene->_arrunkObj1337[0]._arr2[0]._field34 = 8; - scene->_arrunkObj1337[0]._arr2[0]._object1.postInit(); - scene->_arrunkObj1337[0]._arr2[0]._object1.setVisage(1332); - scene->_arrunkObj1337[0]._arr2[0]._object1.setPosition(scene->_arrunkObj1337[0]._arr2[0]._field36, 0); - scene->_arrunkObj1337[0]._arr2[0]._object1.setStrip(2); - scene->_arrunkObj1337[0]._arr2[0]._object1.setFrame(scene->_arrunkObj1337[0]._arr2[0]._field34); - scene->_arrunkObj1337[0]._arr2[0]._object1.fixPriority(170); - scene->setAnimationInfo(&scene->_arrunkObj1337[0]._arr2[0]); - - scene->_arrunkObj1337[0]._arr2[1]._field34 = 9; - scene->_arrunkObj1337[0]._arr2[1]._object1.postInit(); - scene->_arrunkObj1337[0]._arr2[1]._object1.setVisage(1332); - scene->_arrunkObj1337[0]._arr2[1]._object1.setPosition(scene->_arrunkObj1337[0]._arr2[1]._field36, 0); - scene->_arrunkObj1337[0]._arr2[1]._object1.setStrip(2); - scene->_arrunkObj1337[0]._arr2[1]._object1.setFrame(scene->_arrunkObj1337[0]._arr2[1]._field34); - scene->_arrunkObj1337[0]._arr2[1]._object1.fixPriority(170); - scene->setAnimationInfo(&scene->_arrunkObj1337[0]._arr2[1]); + scene->_gameBoardSide[1]._outpostStation[0]._cardId = 2; + scene->_gameBoardSide[1]._outpostStation[0]._card.postInit(); + scene->_gameBoardSide[1]._outpostStation[0]._card.setVisage(1332); + scene->_gameBoardSide[1]._outpostStation[0]._card.setPosition(scene->_gameBoardSide[1]._outpostStation[0]._stationPos, 0); + scene->_gameBoardSide[1]._outpostStation[0]._card.setStrip(2); + scene->_gameBoardSide[1]._outpostStation[0]._card.setFrame(scene->_gameBoardSide[1]._outpostStation[0]._cardId); + scene->_gameBoardSide[1]._outpostStation[0]._card.fixPriority(170); + scene->setAnimationInfo(&scene->_gameBoardSide[1]._outpostStation[0]); + + scene->_gameBoardSide[1]._outpostStation[1]._cardId = 3; + scene->_gameBoardSide[1]._outpostStation[1]._card.postInit(); + scene->_gameBoardSide[1]._outpostStation[1]._card.setVisage(1332); + scene->_gameBoardSide[1]._outpostStation[1]._card.setPosition(scene->_gameBoardSide[1]._outpostStation[1]._stationPos, 0); + scene->_gameBoardSide[1]._outpostStation[1]._card.setStrip(2); + scene->_gameBoardSide[1]._outpostStation[1]._card.setFrame(scene->_gameBoardSide[1]._outpostStation[1]._cardId); + scene->_gameBoardSide[1]._outpostStation[1]._card.fixPriority(170); + scene->setAnimationInfo(&scene->_gameBoardSide[1]._outpostStation[1]); + + scene->_gameBoardSide[2]._outpostStation[0]._cardId = 4; + scene->_gameBoardSide[2]._outpostStation[0]._card.postInit(); + scene->_gameBoardSide[2]._outpostStation[0]._card.setVisage(1332); + scene->_gameBoardSide[2]._outpostStation[0]._card.setPosition(scene->_gameBoardSide[2]._outpostStation[0]._stationPos, 0); + scene->_gameBoardSide[2]._outpostStation[0]._card.setStrip(2); + scene->_gameBoardSide[2]._outpostStation[0]._card.setFrame(scene->_gameBoardSide[2]._outpostStation[0]._cardId); + scene->setAnimationInfo(&scene->_gameBoardSide[2]._outpostStation[0]); + + scene->_gameBoardSide[3]._outpostStation[0]._cardId = 5; + scene->_gameBoardSide[3]._outpostStation[0]._card.postInit(); + scene->_gameBoardSide[3]._outpostStation[0]._card.setVisage(1332); + scene->_gameBoardSide[3]._outpostStation[0]._card.setPosition(scene->_gameBoardSide[3]._outpostStation[0]._stationPos, 0); + scene->_gameBoardSide[3]._outpostStation[0]._card.setStrip(2); + scene->_gameBoardSide[3]._outpostStation[0]._card.setFrame(scene->_gameBoardSide[3]._outpostStation[0]._cardId); + scene->_gameBoardSide[3]._outpostStation[0]._card.fixPriority(170); + scene->setAnimationInfo(&scene->_gameBoardSide[3]._outpostStation[0]); + + scene->_gameBoardSide[3]._outpostStation[1]._cardId = 6; + scene->_gameBoardSide[3]._outpostStation[1]._card.postInit(); + scene->_gameBoardSide[3]._outpostStation[1]._card.setVisage(1332); + scene->_gameBoardSide[3]._outpostStation[1]._card.setPosition(scene->_gameBoardSide[3]._outpostStation[1]._stationPos, 0); + scene->_gameBoardSide[3]._outpostStation[1]._card.setStrip(2); + scene->_gameBoardSide[3]._outpostStation[1]._card.setFrame(scene->_gameBoardSide[3]._outpostStation[1]._cardId); + scene->_gameBoardSide[3]._outpostStation[1]._card.fixPriority(170); + scene->setAnimationInfo(&scene->_gameBoardSide[3]._outpostStation[1]); + + scene->_gameBoardSide[3]._outpostStation[2]._cardId = 7; + scene->_gameBoardSide[3]._outpostStation[2]._card.postInit(); + scene->_gameBoardSide[3]._outpostStation[2]._card.setVisage(1332); + scene->_gameBoardSide[3]._outpostStation[2]._card.setPosition(scene->_gameBoardSide[3]._outpostStation[2]._stationPos, 0); + scene->_gameBoardSide[3]._outpostStation[2]._card.setStrip(2); + scene->_gameBoardSide[3]._outpostStation[2]._card.setFrame(scene->_gameBoardSide[3]._outpostStation[2]._cardId); + scene->_gameBoardSide[3]._outpostStation[2]._card.fixPriority(170); + scene->setAnimationInfo(&scene->_gameBoardSide[3]._outpostStation[2]); + + scene->_gameBoardSide[0]._outpostStation[0]._cardId = 8; + scene->_gameBoardSide[0]._outpostStation[0]._card.postInit(); + scene->_gameBoardSide[0]._outpostStation[0]._card.setVisage(1332); + scene->_gameBoardSide[0]._outpostStation[0]._card.setPosition(scene->_gameBoardSide[0]._outpostStation[0]._stationPos, 0); + scene->_gameBoardSide[0]._outpostStation[0]._card.setStrip(2); + scene->_gameBoardSide[0]._outpostStation[0]._card.setFrame(scene->_gameBoardSide[0]._outpostStation[0]._cardId); + scene->_gameBoardSide[0]._outpostStation[0]._card.fixPriority(170); + scene->setAnimationInfo(&scene->_gameBoardSide[0]._outpostStation[0]); + + scene->_gameBoardSide[0]._outpostStation[1]._cardId = 9; + scene->_gameBoardSide[0]._outpostStation[1]._card.postInit(); + scene->_gameBoardSide[0]._outpostStation[1]._card.setVisage(1332); + scene->_gameBoardSide[0]._outpostStation[1]._card.setPosition(scene->_gameBoardSide[0]._outpostStation[1]._stationPos, 0); + scene->_gameBoardSide[0]._outpostStation[1]._card.setStrip(2); + scene->_gameBoardSide[0]._outpostStation[1]._card.setFrame(scene->_gameBoardSide[0]._outpostStation[1]._cardId); + scene->_gameBoardSide[0]._outpostStation[1]._card.fixPriority(170); + scene->setAnimationInfo(&scene->_gameBoardSide[0]._outpostStation[1]); R2_GLOBALS._sceneObjects->draw(); - skipFrames(60); + waitFrames(60); scene->actionDisplay(1331, 9, 159, 10, 1, 200, 0, 7, 0, 154, 154); - scene->_arrunkObj1337[2]._arr2[1]._field34 = 2; - scene->_arrunkObj1337[2]._arr2[1]._object1.postInit(); - scene->_arrunkObj1337[2]._arr2[1]._object1.setVisage(1332); - scene->_arrunkObj1337[2]._arr2[1]._object1.setPosition(scene->_arrunkObj1337[2]._arr2[1]._field36, 0); - scene->_arrunkObj1337[2]._arr2[1]._object1.setStrip(2); - scene->_arrunkObj1337[2]._arr2[1]._object1.setFrame(scene->_arrunkObj1337[2]._arr2[1]._field34); - scene->_arrunkObj1337[2]._arr2[1]._object1.fixPriority(170); - scene->setAnimationInfo(&scene->_arrunkObj1337[2]._arr2[1]); - - scene->_arrunkObj1337[2]._arr2[2]._field34 = 3; - scene->_arrunkObj1337[2]._arr2[2]._object1.postInit(); - scene->_arrunkObj1337[2]._arr2[2]._object1.setVisage(1332); - scene->_arrunkObj1337[2]._arr2[2]._object1.setPosition(scene->_arrunkObj1337[2]._arr2[2]._field36, 0); - scene->_arrunkObj1337[2]._arr2[2]._object1.setStrip(2); - scene->_arrunkObj1337[2]._arr2[2]._object1.setFrame(scene->_arrunkObj1337[2]._arr2[2]._field34); - scene->_arrunkObj1337[2]._arr2[2]._object1.fixPriority(170); - scene->setAnimationInfo(&scene->_arrunkObj1337[2]._arr2[2]); - - scene->_arrunkObj1337[2]._arr2[3]._field34 = 5; - scene->_arrunkObj1337[2]._arr2[3]._object1.postInit(); - scene->_arrunkObj1337[2]._arr2[3]._object1.setVisage(1332); - scene->_arrunkObj1337[2]._arr2[3]._object1.setPosition(scene->_arrunkObj1337[2]._arr2[3]._field36, 0); - scene->_arrunkObj1337[2]._arr2[3]._object1.setStrip(2); - scene->_arrunkObj1337[2]._arr2[3]._object1.setFrame(scene->_arrunkObj1337[2]._arr2[3]._field34); - scene->_arrunkObj1337[2]._arr2[3]._object1.fixPriority(170); - scene->setAnimationInfo(&scene->_arrunkObj1337[2]._arr2[3]); - - scene->_arrunkObj1337[2]._arr2[4]._field34 = 6; - scene->_arrunkObj1337[2]._arr2[4]._object1.postInit(); - scene->_arrunkObj1337[2]._arr2[4]._object1.setVisage(1332); - scene->_arrunkObj1337[2]._arr2[4]._object1.setPosition(scene->_arrunkObj1337[2]._arr2[4]._field36, 0); - scene->_arrunkObj1337[2]._arr2[4]._object1.setStrip(2); - scene->_arrunkObj1337[2]._arr2[4]._object1.setFrame(scene->_arrunkObj1337[2]._arr2[4]._field34); - scene->_arrunkObj1337[2]._arr2[4]._object1.fixPriority(170); - scene->setAnimationInfo(&scene->_arrunkObj1337[2]._arr2[4]); - - scene->_arrunkObj1337[2]._arr2[5]._field34 = 7; - scene->_arrunkObj1337[2]._arr2[5]._object1.postInit(); - scene->_arrunkObj1337[2]._arr2[5]._object1.setVisage(1332); - scene->_arrunkObj1337[2]._arr2[5]._object1.setPosition(scene->_arrunkObj1337[2]._arr2[5]._field36, 0); - scene->_arrunkObj1337[2]._arr2[5]._object1.setStrip(2); - scene->_arrunkObj1337[2]._arr2[5]._object1.setFrame(scene->_arrunkObj1337[2]._arr2[5]._field34); - scene->_arrunkObj1337[2]._arr2[5]._object1.fixPriority(170); - scene->setAnimationInfo(&scene->_arrunkObj1337[2]._arr2[5]); - - scene->_arrunkObj1337[2]._arr2[6]._field34 = 8; - scene->_arrunkObj1337[2]._arr2[6]._object1.postInit(); - scene->_arrunkObj1337[2]._arr2[6]._object1.setVisage(1332); - scene->_arrunkObj1337[2]._arr2[6]._object1.setPosition(scene->_arrunkObj1337[2]._arr2[6]._field36, 0); - scene->_arrunkObj1337[2]._arr2[6]._object1.setStrip(2); - scene->_arrunkObj1337[2]._arr2[6]._object1.setFrame(scene->_arrunkObj1337[2]._arr2[6]._field34); - scene->_arrunkObj1337[2]._arr2[6]._object1.fixPriority(170); - scene->setAnimationInfo(&scene->_arrunkObj1337[2]._arr2[6]); - - scene->_arrunkObj1337[2]._arr2[7]._field34 = 9; - scene->_arrunkObj1337[2]._arr2[7]._object1.postInit(); - scene->_arrunkObj1337[2]._arr2[7]._object1.setVisage(1332); - scene->_arrunkObj1337[2]._arr2[7]._object1.setPosition(scene->_arrunkObj1337[2]._arr2[7]._field36, 0); - scene->_arrunkObj1337[2]._arr2[7]._object1.setStrip(2); - scene->_arrunkObj1337[2]._arr2[7]._object1.setFrame(scene->_arrunkObj1337[2]._arr2[7]._field34); - scene->_arrunkObj1337[2]._arr2[7]._object1.fixPriority(170); - scene->setAnimationInfo(&scene->_arrunkObj1337[2]._arr2[7]); + scene->_gameBoardSide[2]._outpostStation[1]._cardId = 2; + scene->_gameBoardSide[2]._outpostStation[1]._card.postInit(); + scene->_gameBoardSide[2]._outpostStation[1]._card.setVisage(1332); + scene->_gameBoardSide[2]._outpostStation[1]._card.setPosition(scene->_gameBoardSide[2]._outpostStation[1]._stationPos, 0); + scene->_gameBoardSide[2]._outpostStation[1]._card.setStrip(2); + scene->_gameBoardSide[2]._outpostStation[1]._card.setFrame(scene->_gameBoardSide[2]._outpostStation[1]._cardId); + scene->_gameBoardSide[2]._outpostStation[1]._card.fixPriority(170); + scene->setAnimationInfo(&scene->_gameBoardSide[2]._outpostStation[1]); + + scene->_gameBoardSide[2]._outpostStation[2]._cardId = 3; + scene->_gameBoardSide[2]._outpostStation[2]._card.postInit(); + scene->_gameBoardSide[2]._outpostStation[2]._card.setVisage(1332); + scene->_gameBoardSide[2]._outpostStation[2]._card.setPosition(scene->_gameBoardSide[2]._outpostStation[2]._stationPos, 0); + scene->_gameBoardSide[2]._outpostStation[2]._card.setStrip(2); + scene->_gameBoardSide[2]._outpostStation[2]._card.setFrame(scene->_gameBoardSide[2]._outpostStation[2]._cardId); + scene->_gameBoardSide[2]._outpostStation[2]._card.fixPriority(170); + scene->setAnimationInfo(&scene->_gameBoardSide[2]._outpostStation[2]); + + scene->_gameBoardSide[2]._outpostStation[3]._cardId = 5; + scene->_gameBoardSide[2]._outpostStation[3]._card.postInit(); + scene->_gameBoardSide[2]._outpostStation[3]._card.setVisage(1332); + scene->_gameBoardSide[2]._outpostStation[3]._card.setPosition(scene->_gameBoardSide[2]._outpostStation[3]._stationPos, 0); + scene->_gameBoardSide[2]._outpostStation[3]._card.setStrip(2); + scene->_gameBoardSide[2]._outpostStation[3]._card.setFrame(scene->_gameBoardSide[2]._outpostStation[3]._cardId); + scene->_gameBoardSide[2]._outpostStation[3]._card.fixPriority(170); + scene->setAnimationInfo(&scene->_gameBoardSide[2]._outpostStation[3]); + + scene->_gameBoardSide[2]._outpostStation[4]._cardId = 6; + scene->_gameBoardSide[2]._outpostStation[4]._card.postInit(); + scene->_gameBoardSide[2]._outpostStation[4]._card.setVisage(1332); + scene->_gameBoardSide[2]._outpostStation[4]._card.setPosition(scene->_gameBoardSide[2]._outpostStation[4]._stationPos, 0); + scene->_gameBoardSide[2]._outpostStation[4]._card.setStrip(2); + scene->_gameBoardSide[2]._outpostStation[4]._card.setFrame(scene->_gameBoardSide[2]._outpostStation[4]._cardId); + scene->_gameBoardSide[2]._outpostStation[4]._card.fixPriority(170); + scene->setAnimationInfo(&scene->_gameBoardSide[2]._outpostStation[4]); + + scene->_gameBoardSide[2]._outpostStation[5]._cardId = 7; + scene->_gameBoardSide[2]._outpostStation[5]._card.postInit(); + scene->_gameBoardSide[2]._outpostStation[5]._card.setVisage(1332); + scene->_gameBoardSide[2]._outpostStation[5]._card.setPosition(scene->_gameBoardSide[2]._outpostStation[5]._stationPos, 0); + scene->_gameBoardSide[2]._outpostStation[5]._card.setStrip(2); + scene->_gameBoardSide[2]._outpostStation[5]._card.setFrame(scene->_gameBoardSide[2]._outpostStation[5]._cardId); + scene->_gameBoardSide[2]._outpostStation[5]._card.fixPriority(170); + scene->setAnimationInfo(&scene->_gameBoardSide[2]._outpostStation[5]); + + scene->_gameBoardSide[2]._outpostStation[6]._cardId = 8; + scene->_gameBoardSide[2]._outpostStation[6]._card.postInit(); + scene->_gameBoardSide[2]._outpostStation[6]._card.setVisage(1332); + scene->_gameBoardSide[2]._outpostStation[6]._card.setPosition(scene->_gameBoardSide[2]._outpostStation[6]._stationPos, 0); + scene->_gameBoardSide[2]._outpostStation[6]._card.setStrip(2); + scene->_gameBoardSide[2]._outpostStation[6]._card.setFrame(scene->_gameBoardSide[2]._outpostStation[6]._cardId); + scene->_gameBoardSide[2]._outpostStation[6]._card.fixPriority(170); + scene->setAnimationInfo(&scene->_gameBoardSide[2]._outpostStation[6]); + + scene->_gameBoardSide[2]._outpostStation[7]._cardId = 9; + scene->_gameBoardSide[2]._outpostStation[7]._card.postInit(); + scene->_gameBoardSide[2]._outpostStation[7]._card.setVisage(1332); + scene->_gameBoardSide[2]._outpostStation[7]._card.setPosition(scene->_gameBoardSide[2]._outpostStation[7]._stationPos, 0); + scene->_gameBoardSide[2]._outpostStation[7]._card.setStrip(2); + scene->_gameBoardSide[2]._outpostStation[7]._card.setFrame(scene->_gameBoardSide[2]._outpostStation[7]._cardId); + scene->_gameBoardSide[2]._outpostStation[7]._card.fixPriority(170); + scene->setAnimationInfo(&scene->_gameBoardSide[2]._outpostStation[7]); scene->_aSound1.play(62); R2_GLOBALS._sceneObjects->draw(); - skipFrames(120); - scene->_arrunkObj1337[2]._arr2[0]._object1.remove(); - scene->_arrunkObj1337[2]._arr2[1]._object1.remove(); - scene->_arrunkObj1337[2]._arr2[2]._object1.remove(); - scene->_arrunkObj1337[2]._arr2[3]._object1.remove(); - scene->_arrunkObj1337[2]._arr2[4]._object1.remove(); - scene->_arrunkObj1337[2]._arr2[5]._object1.remove(); - scene->_arrunkObj1337[2]._arr2[6]._object1.remove(); - scene->_arrunkObj1337[2]._arr2[7]._object1.remove(); - - scene->_arrunkObj1337[1]._arr2[0]._object1.remove(); - scene->_arrunkObj1337[1]._arr2[1]._object1.remove(); - - scene->_arrunkObj1337[3]._arr2[0]._object1.remove(); - scene->_arrunkObj1337[3]._arr2[1]._object1.remove(); - scene->_arrunkObj1337[3]._arr2[2]._object1.remove(); - - scene->_arrunkObj1337[0]._arr2[0]._object1.remove(); - scene->_arrunkObj1337[0]._arr2[1]._object1.remove(); - - scene->_background2.setup2(1332, 5, 1, 165, 95, 110, 1); - - scene->_arrunkObj1337[1]._arr1[0]._object1.postInit(); - scene->_arrunkObj1337[1]._arr1[0]._object1.setVisage(1332); - scene->_arrunkObj1337[1]._arr1[0]._object1.setPosition(scene->_arrunkObj1337[1]._arr1[0]._field36, 0); - scene->_arrunkObj1337[1]._arr1[0]._object1.setStrip(1); - scene->_arrunkObj1337[1]._arr1[0]._object1.setFrame(4); - scene->_arrunkObj1337[1]._arr1[0]._object1.fixPriority(170); - - scene->_arrunkObj1337[1]._arr1[1]._object1.postInit(); - scene->_arrunkObj1337[1]._arr1[1]._object1.setVisage(1332); - scene->_arrunkObj1337[1]._arr1[1]._object1.setPosition(scene->_arrunkObj1337[1]._arr1[1]._field36, 0); - scene->_arrunkObj1337[1]._arr1[1]._object1.setStrip(1); - scene->_arrunkObj1337[1]._arr1[1]._object1.setFrame(4); - scene->_arrunkObj1337[1]._arr1[1]._object1.fixPriority(170); - - scene->_arrunkObj1337[1]._arr1[2]._object1.postInit(); - scene->_arrunkObj1337[1]._arr1[2]._object1.setVisage(1332); - scene->_arrunkObj1337[1]._arr1[2]._object1.setPosition(scene->_arrunkObj1337[1]._arr1[2]._field36, 0); - scene->_arrunkObj1337[1]._arr1[2]._object1.setStrip(1); - scene->_arrunkObj1337[1]._arr1[2]._object1.setFrame(4); - scene->_arrunkObj1337[1]._arr1[2]._object1.fixPriority(170); - - scene->_arrunkObj1337[2]._arr1[0]._field34 = 30; - scene->_arrunkObj1337[2]._arr1[0]._object1.postInit(); - scene->_arrunkObj1337[2]._arr1[0]._object1.setVisage(1332); - scene->_arrunkObj1337[2]._arr1[0]._object1.setPosition(scene->_arrunkObj1337[2]._arr1[0]._field36, 0); - scene->_arrunkObj1337[2]._arr1[0]._object1.setStrip(1); - scene->_arrunkObj1337[2]._arr1[0]._object1.setFrame(2); - scene->_arrunkObj1337[2]._arr1[0]._object1.fixPriority(170); - scene->setAnimationInfo(&scene->_arrunkObj1337[2]._arr1[0]); - - scene->_arrunkObj1337[2]._arr1[1]._field34 = 16; - scene->_arrunkObj1337[2]._arr1[1]._object1.postInit(); - scene->_arrunkObj1337[2]._arr1[1]._object1.setVisage(1332); - scene->_arrunkObj1337[2]._arr1[1]._object1.setPosition(scene->_arrunkObj1337[2]._arr1[1]._field36, 0); - scene->_arrunkObj1337[2]._arr1[1]._object1.setStrip(1); - scene->_arrunkObj1337[2]._arr1[1]._object1.setFrame(2); - scene->_arrunkObj1337[2]._arr1[1]._object1.fixPriority(170); - scene->setAnimationInfo(&scene->_arrunkObj1337[2]._arr1[1]); - - scene->_arrunkObj1337[2]._arr1[2]._field34 = 1; - scene->_arrunkObj1337[2]._arr1[2]._object1.postInit(); - scene->_arrunkObj1337[2]._arr1[2]._object1.setVisage(1332); - scene->_arrunkObj1337[2]._arr1[2]._object1.setPosition(scene->_arrunkObj1337[2]._arr1[2]._field36, 0); - scene->_arrunkObj1337[2]._arr1[2]._object1.setStrip(1); - scene->_arrunkObj1337[2]._arr1[2]._object1.setFrame(2); - scene->_arrunkObj1337[2]._arr1[2]._object1.fixPriority(170); - scene->setAnimationInfo(&scene->_arrunkObj1337[2]._arr1[2]); - - scene->_arrunkObj1337[3]._arr1[0]._object1.postInit(); - scene->_arrunkObj1337[3]._arr1[0]._object1.setVisage(1332); - scene->_arrunkObj1337[3]._arr1[0]._object1.setPosition(scene->_arrunkObj1337[3]._arr1[0]._field36, 0); - scene->_arrunkObj1337[3]._arr1[0]._object1.setStrip(1); - scene->_arrunkObj1337[3]._arr1[0]._object1.setFrame(3); - scene->_arrunkObj1337[3]._arr1[0]._object1.fixPriority(170); - - scene->_arrunkObj1337[3]._arr1[1]._object1.postInit(); - scene->_arrunkObj1337[3]._arr1[1]._object1.setVisage(1332); - scene->_arrunkObj1337[3]._arr1[1]._object1.setPosition(scene->_arrunkObj1337[3]._arr1[1]._field36, 0); - scene->_arrunkObj1337[3]._arr1[1]._object1.setStrip(1); - scene->_arrunkObj1337[3]._arr1[1]._object1.setFrame(3); - scene->_arrunkObj1337[3]._arr1[1]._object1.fixPriority(170); - - scene->_arrunkObj1337[3]._arr1[2]._object1.postInit(); - scene->_arrunkObj1337[3]._arr1[2]._object1.setVisage(1332); - scene->_arrunkObj1337[3]._arr1[2]._object1.setPosition(scene->_arrunkObj1337[3]._arr1[2]._field36, 0); - scene->_arrunkObj1337[3]._arr1[2]._object1.setStrip(1); - scene->_arrunkObj1337[3]._arr1[2]._object1.setFrame(3); - scene->_arrunkObj1337[3]._arr1[2]._object1.fixPriority(170); - - scene->_arrunkObj1337[0]._arr1[0]._object1.postInit(); - scene->_arrunkObj1337[0]._arr1[0]._object1.setVisage(1332); - scene->_arrunkObj1337[0]._arr1[0]._object1.setPosition(scene->_arrunkObj1337[0]._arr1[0]._field36, 0); - scene->_arrunkObj1337[0]._arr1[0]._object1.setStrip(1); - scene->_arrunkObj1337[0]._arr1[0]._object1.setFrame(2); - scene->_arrunkObj1337[0]._arr1[0]._object1.fixPriority(170); - - scene->_arrunkObj1337[0]._arr1[1]._object1.postInit(); - scene->_arrunkObj1337[0]._arr1[1]._object1.setVisage(1332); - scene->_arrunkObj1337[0]._arr1[1]._object1.setPosition(scene->_arrunkObj1337[0]._arr1[1]._field36, 0); - scene->_arrunkObj1337[0]._arr1[1]._object1.setStrip(1); - scene->_arrunkObj1337[0]._arr1[1]._object1.setFrame(2); - scene->_arrunkObj1337[0]._arr1[1]._object1.fixPriority(170); - - scene->_arrunkObj1337[0]._arr1[2]._object1.postInit(); - scene->_arrunkObj1337[0]._arr1[2]._object1.setVisage(1332); - scene->_arrunkObj1337[0]._arr1[2]._object1.setPosition(scene->_arrunkObj1337[0]._arr1[2]._field36, 0); - scene->_arrunkObj1337[0]._arr1[2]._object1.setStrip(1); - scene->_arrunkObj1337[0]._arr1[2]._object1.setFrame(2); - scene->_arrunkObj1337[0]._arr1[2]._object1.fixPriority(170); + waitFrames(120); + scene->_gameBoardSide[2]._outpostStation[0]._card.remove(); + scene->_gameBoardSide[2]._outpostStation[1]._card.remove(); + scene->_gameBoardSide[2]._outpostStation[2]._card.remove(); + scene->_gameBoardSide[2]._outpostStation[3]._card.remove(); + scene->_gameBoardSide[2]._outpostStation[4]._card.remove(); + scene->_gameBoardSide[2]._outpostStation[5]._card.remove(); + scene->_gameBoardSide[2]._outpostStation[6]._card.remove(); + scene->_gameBoardSide[2]._outpostStation[7]._card.remove(); + + scene->_gameBoardSide[1]._outpostStation[0]._card.remove(); + scene->_gameBoardSide[1]._outpostStation[1]._card.remove(); + + scene->_gameBoardSide[3]._outpostStation[0]._card.remove(); + scene->_gameBoardSide[3]._outpostStation[1]._card.remove(); + scene->_gameBoardSide[3]._outpostStation[2]._card.remove(); + + scene->_gameBoardSide[0]._outpostStation[0]._card.remove(); + scene->_gameBoardSide[0]._outpostStation[1]._card.remove(); + + scene->_background2.setup2(1332, 5, 1, 165, 95, 110, EFFECT_SHADED); + + scene->_gameBoardSide[1]._handCard[0]._card.postInit(); + scene->_gameBoardSide[1]._handCard[0]._card.setVisage(1332); + scene->_gameBoardSide[1]._handCard[0]._card.setPosition(scene->_gameBoardSide[1]._handCard[0]._stationPos, 0); + scene->_gameBoardSide[1]._handCard[0]._card.setStrip(1); + scene->_gameBoardSide[1]._handCard[0]._card.setFrame(4); + scene->_gameBoardSide[1]._handCard[0]._card.fixPriority(170); + + scene->_gameBoardSide[1]._handCard[1]._card.postInit(); + scene->_gameBoardSide[1]._handCard[1]._card.setVisage(1332); + scene->_gameBoardSide[1]._handCard[1]._card.setPosition(scene->_gameBoardSide[1]._handCard[1]._stationPos, 0); + scene->_gameBoardSide[1]._handCard[1]._card.setStrip(1); + scene->_gameBoardSide[1]._handCard[1]._card.setFrame(4); + scene->_gameBoardSide[1]._handCard[1]._card.fixPriority(170); + + scene->_gameBoardSide[1]._handCard[2]._card.postInit(); + scene->_gameBoardSide[1]._handCard[2]._card.setVisage(1332); + scene->_gameBoardSide[1]._handCard[2]._card.setPosition(scene->_gameBoardSide[1]._handCard[2]._stationPos, 0); + scene->_gameBoardSide[1]._handCard[2]._card.setStrip(1); + scene->_gameBoardSide[1]._handCard[2]._card.setFrame(4); + scene->_gameBoardSide[1]._handCard[2]._card.fixPriority(170); + + scene->_gameBoardSide[2]._handCard[0]._cardId = 30; + scene->_gameBoardSide[2]._handCard[0]._card.postInit(); + scene->_gameBoardSide[2]._handCard[0]._card.setVisage(1332); + scene->_gameBoardSide[2]._handCard[0]._card.setPosition(scene->_gameBoardSide[2]._handCard[0]._stationPos, 0); + scene->_gameBoardSide[2]._handCard[0]._card.setStrip(1); + scene->_gameBoardSide[2]._handCard[0]._card.setFrame(2); + scene->_gameBoardSide[2]._handCard[0]._card.fixPriority(170); + scene->setAnimationInfo(&scene->_gameBoardSide[2]._handCard[0]); + + scene->_gameBoardSide[2]._handCard[1]._cardId = 16; + scene->_gameBoardSide[2]._handCard[1]._card.postInit(); + scene->_gameBoardSide[2]._handCard[1]._card.setVisage(1332); + scene->_gameBoardSide[2]._handCard[1]._card.setPosition(scene->_gameBoardSide[2]._handCard[1]._stationPos, 0); + scene->_gameBoardSide[2]._handCard[1]._card.setStrip(1); + scene->_gameBoardSide[2]._handCard[1]._card.setFrame(2); + scene->_gameBoardSide[2]._handCard[1]._card.fixPriority(170); + scene->setAnimationInfo(&scene->_gameBoardSide[2]._handCard[1]); + + scene->_gameBoardSide[2]._handCard[2]._cardId = 1; + scene->_gameBoardSide[2]._handCard[2]._card.postInit(); + scene->_gameBoardSide[2]._handCard[2]._card.setVisage(1332); + scene->_gameBoardSide[2]._handCard[2]._card.setPosition(scene->_gameBoardSide[2]._handCard[2]._stationPos, 0); + scene->_gameBoardSide[2]._handCard[2]._card.setStrip(1); + scene->_gameBoardSide[2]._handCard[2]._card.setFrame(2); + scene->_gameBoardSide[2]._handCard[2]._card.fixPriority(170); + scene->setAnimationInfo(&scene->_gameBoardSide[2]._handCard[2]); + + scene->_gameBoardSide[3]._handCard[0]._card.postInit(); + scene->_gameBoardSide[3]._handCard[0]._card.setVisage(1332); + scene->_gameBoardSide[3]._handCard[0]._card.setPosition(scene->_gameBoardSide[3]._handCard[0]._stationPos, 0); + scene->_gameBoardSide[3]._handCard[0]._card.setStrip(1); + scene->_gameBoardSide[3]._handCard[0]._card.setFrame(3); + scene->_gameBoardSide[3]._handCard[0]._card.fixPriority(170); + + scene->_gameBoardSide[3]._handCard[1]._card.postInit(); + scene->_gameBoardSide[3]._handCard[1]._card.setVisage(1332); + scene->_gameBoardSide[3]._handCard[1]._card.setPosition(scene->_gameBoardSide[3]._handCard[1]._stationPos, 0); + scene->_gameBoardSide[3]._handCard[1]._card.setStrip(1); + scene->_gameBoardSide[3]._handCard[1]._card.setFrame(3); + scene->_gameBoardSide[3]._handCard[1]._card.fixPriority(170); + + scene->_gameBoardSide[3]._handCard[2]._card.postInit(); + scene->_gameBoardSide[3]._handCard[2]._card.setVisage(1332); + scene->_gameBoardSide[3]._handCard[2]._card.setPosition(scene->_gameBoardSide[3]._handCard[2]._stationPos, 0); + scene->_gameBoardSide[3]._handCard[2]._card.setStrip(1); + scene->_gameBoardSide[3]._handCard[2]._card.setFrame(3); + scene->_gameBoardSide[3]._handCard[2]._card.fixPriority(170); + + scene->_gameBoardSide[0]._handCard[0]._card.postInit(); + scene->_gameBoardSide[0]._handCard[0]._card.setVisage(1332); + scene->_gameBoardSide[0]._handCard[0]._card.setPosition(scene->_gameBoardSide[0]._handCard[0]._stationPos, 0); + scene->_gameBoardSide[0]._handCard[0]._card.setStrip(1); + scene->_gameBoardSide[0]._handCard[0]._card.setFrame(2); + scene->_gameBoardSide[0]._handCard[0]._card.fixPriority(170); + + scene->_gameBoardSide[0]._handCard[1]._card.postInit(); + scene->_gameBoardSide[0]._handCard[1]._card.setVisage(1332); + scene->_gameBoardSide[0]._handCard[1]._card.setPosition(scene->_gameBoardSide[0]._handCard[1]._stationPos, 0); + scene->_gameBoardSide[0]._handCard[1]._card.setStrip(1); + scene->_gameBoardSide[0]._handCard[1]._card.setFrame(2); + scene->_gameBoardSide[0]._handCard[1]._card.fixPriority(170); + + scene->_gameBoardSide[0]._handCard[2]._card.postInit(); + scene->_gameBoardSide[0]._handCard[2]._card.setVisage(1332); + scene->_gameBoardSide[0]._handCard[2]._card.setPosition(scene->_gameBoardSide[0]._handCard[2]._stationPos, 0); + scene->_gameBoardSide[0]._handCard[2]._card.setStrip(1); + scene->_gameBoardSide[0]._handCard[2]._card.setFrame(2); + scene->_gameBoardSide[0]._handCard[2]._card.fixPriority(170); R2_GLOBALS._sceneObjects->draw(); scene->actionDisplay(1331, 10, 159, 10, 1, 200, 0, 7, 0, 154, 154); - scene->_item2._object1.setPosition(Common::Point(162, 95), 0); - scene->_item2._object1.show(); + scene->_animatedCard._card.setPosition(Common::Point(162, 95), 0); + scene->_animatedCard._card.show(); scene->_aSound2.play(61); Common::Point pt(91, 174); NpcMover *mover = new NpcMover(); - scene->_item2._object1.addMover(mover, &pt, this); + scene->_animatedCard._card.addMover(mover, &pt, this); } break; case 2: { - scene->_arrunkObj1337[2]._arr1[3]._field34 = 2; - scene->_arrunkObj1337[2]._arr1[3]._object1.postInit(); - scene->_arrunkObj1337[2]._arr1[3]._object1.setVisage(1332); - scene->_arrunkObj1337[2]._arr1[3]._object1.setPosition(scene->_arrunkObj1337[2]._arr1[3]._field36, 0); - scene->_arrunkObj1337[2]._arr1[3]._object1.setStrip(1); - scene->_arrunkObj1337[2]._arr1[3]._object1.setFrame(2); - scene->_arrunkObj1337[2]._arr1[3]._object1.fixPriority(170); + scene->_gameBoardSide[2]._handCard[3]._cardId = 2; + scene->_gameBoardSide[2]._handCard[3]._card.postInit(); + scene->_gameBoardSide[2]._handCard[3]._card.setVisage(1332); + scene->_gameBoardSide[2]._handCard[3]._card.setPosition(scene->_gameBoardSide[2]._handCard[3]._stationPos, 0); + scene->_gameBoardSide[2]._handCard[3]._card.setStrip(1); + scene->_gameBoardSide[2]._handCard[3]._card.setFrame(2); + scene->_gameBoardSide[2]._handCard[3]._card.fixPriority(170); - scene->_item2._object1.hide(); - scene->setAnimationInfo(&scene->_arrunkObj1337[2]._arr1[3]); + scene->_animatedCard._card.hide(); + scene->setAnimationInfo(&scene->_gameBoardSide[2]._handCard[3]); R2_GLOBALS._sceneObjects->draw(); - skipFrames(60); + waitFrames(60); scene->actionDisplay(1331, 11, 159, 10, 1, 200, 0, 7, 0, 154, 154); scene->actionDisplay(1331, 12, 159, 10, 1, 200, 0, 7, 0, 154, 154); - scene->_arrunkObj1337[2]._arr2[1]._field34 = 1; - scene->_arrunkObj1337[2]._arr2[1]._object1.postInit(); - scene->_arrunkObj1337[2]._arr2[1]._object1.setVisage(1332); - scene->_arrunkObj1337[2]._arr2[1]._object1.setPosition(scene->_arrunkObj1337[2]._arr2[1]._field36, 0); - scene->_arrunkObj1337[2]._arr2[1]._object1.hide(); + scene->_gameBoardSide[2]._outpostStation[1]._cardId = 1; + scene->_gameBoardSide[2]._outpostStation[1]._card.postInit(); + scene->_gameBoardSide[2]._outpostStation[1]._card.setVisage(1332); + scene->_gameBoardSide[2]._outpostStation[1]._card.setPosition(scene->_gameBoardSide[2]._outpostStation[1]._stationPos, 0); + scene->_gameBoardSide[2]._outpostStation[1]._card.hide(); - scene->_item2._object1.setStrip(scene->_arrunkObj1337[2]._arr1[2]._object1._strip); - scene->_item2._object1.setFrame(scene->_arrunkObj1337[2]._arr1[2]._object1._frame); - scene->_item2._object1.animate(ANIM_MODE_NONE, NULL); + scene->_animatedCard._card.setStrip(scene->_gameBoardSide[2]._handCard[2]._card._strip); + scene->_animatedCard._card.setFrame(scene->_gameBoardSide[2]._handCard[2]._card._frame); + scene->_animatedCard._card.animate(ANIM_MODE_NONE, NULL); - scene->_arrunkObj1337[2]._arr1[2]._field34 = 0; - scene->_arrunkObj1337[2]._arr1[2]._object1.remove(); + scene->_gameBoardSide[2]._handCard[2]._cardId = 0; + scene->_gameBoardSide[2]._handCard[2]._card.remove(); - scene->_item2._object1.setPosition(scene->_arrunkObj1337[2]._arr1[2]._field36, 0); - scene->_item2._object1.show(); + scene->_animatedCard._card.setPosition(scene->_gameBoardSide[2]._handCard[2]._stationPos, 0); + scene->_animatedCard._card.show(); NpcMover *mover = new NpcMover(); - scene->_item2._object1.addMover(mover, &scene->_arrunkObj1337[2]._arr2[1]._field36, this); + scene->_animatedCard._card.addMover(mover, &scene->_gameBoardSide[2]._outpostStation[1]._stationPos, this); } break; case 3: { - scene->_item2._object1.hide(); - scene->setAnimationInfo(&scene->_arrunkObj1337[2]._arr2[1]); + scene->_animatedCard._card.hide(); + scene->setAnimationInfo(&scene->_gameBoardSide[2]._outpostStation[1]); scene->_aSound1.play(59); R2_GLOBALS._sceneObjects->draw(); - skipFrames(60); + waitFrames(60); scene->actionDisplay(1331, 13, 159, 10, 1, 200, 0, 7, 0, 154, 154); - scene->_arrunkObj1337[2]._arr2[1]._field34 = scene->_arrunkObj1337[2]._arr1[3]._field34; + scene->_gameBoardSide[2]._outpostStation[1]._cardId = scene->_gameBoardSide[2]._handCard[3]._cardId; - scene->_item2._object1.setStrip(scene->_arrunkObj1337[2]._arr1[3]._object1._strip); - scene->_item2._object1.setFrame(scene->_arrunkObj1337[2]._arr1[3]._object1._frame); + scene->_animatedCard._card.setStrip(scene->_gameBoardSide[2]._handCard[3]._card._strip); + scene->_animatedCard._card.setFrame(scene->_gameBoardSide[2]._handCard[3]._card._frame); - scene->_arrunkObj1337[2]._arr1[3]._field34 = 0; - scene->_arrunkObj1337[2]._arr1[3]._object1.remove(); + scene->_gameBoardSide[2]._handCard[3]._cardId = 0; + scene->_gameBoardSide[2]._handCard[3]._card.remove(); - scene->_item2._object1.setPosition(scene->_arrunkObj1337[2]._arr1[3]._field36, 0); - scene->_item2._object1.show(); + scene->_animatedCard._card.setPosition(scene->_gameBoardSide[2]._handCard[3]._stationPos, 0); + scene->_animatedCard._card.show(); NpcMover *mover = new NpcMover(); - scene->_item2._object1.addMover(mover, &scene->_arrunkObj1337[2]._arr2[1]._field36, this); + scene->_animatedCard._card.addMover(mover, &scene->_gameBoardSide[2]._outpostStation[1]._stationPos, this); } break; case 4: { - scene->_item2._object1.hide(); - scene->setAnimationInfo(&scene->_arrunkObj1337[2]._arr2[1]); + scene->_animatedCard._card.hide(); + scene->setAnimationInfo(&scene->_gameBoardSide[2]._outpostStation[1]); scene->_aSound1.play(59); - scene->_item7._field34 = 1; - scene->_item7._object1.hide(); + scene->_discardPile._cardId = 1; + scene->_discardPile._card.hide(); - scene->_item2._object1.setStrip(5); - scene->_item2._object1.setFrame(1); - scene->_item2._object1.animate(ANIM_MODE_2, NULL); - scene->_item2._object1.setPosition(scene->_arrunkObj1337[2]._arr2[1]._field36, 0); - scene->_item2._object1.show(); + scene->_animatedCard._card.setStrip(5); + scene->_animatedCard._card.setFrame(1); + scene->_animatedCard._card.animate(ANIM_MODE_2, NULL); + scene->_animatedCard._card.setPosition(scene->_gameBoardSide[2]._outpostStation[1]._stationPos, 0); + scene->_animatedCard._card.show(); NpcMover *mover = new NpcMover(); - scene->_item2._object1.addMover(mover, &scene->_item7._field36, this); + scene->_animatedCard._card.addMover(mover, &scene->_discardPile._stationPos, this); } break; case 5: { - scene->_item2._object1.hide(); + scene->_animatedCard._card.hide(); - scene->_item7._object1.postInit(); - scene->_item7._object1.setVisage(1332); - scene->_item7._object1.setPosition(scene->_item7._field36, 0); - scene->setAnimationInfo(&scene->_item7); + scene->_discardPile._card.postInit(); + scene->_discardPile._card.setVisage(1332); + scene->_discardPile._card.setPosition(scene->_discardPile._stationPos, 0); + scene->setAnimationInfo(&scene->_discardPile); scene->_aSound2.play(61); R2_GLOBALS._sceneObjects->draw(); - skipFrames(60); + waitFrames(60); scene->actionDisplay(1331, 14, 159, 10, 1, 200, 0, 7, 0, 154, 154); - scene->_arrunkObj1337[2]._arr3[0]._object1.postInit(); - scene->_arrunkObj1337[2]._arr3[0]._object1.setVisage(1332); - scene->_arrunkObj1337[2]._arr3[0]._object1.setPosition(scene->_arrunkObj1337[2]._arr3[0]._field36, 0); - scene->_arrunkObj1337[2]._arr3[0]._object1.hide(); + scene->_gameBoardSide[2]._delayCard._card.postInit(); + scene->_gameBoardSide[2]._delayCard._card.setVisage(1332); + scene->_gameBoardSide[2]._delayCard._card.setPosition(scene->_gameBoardSide[2]._delayCard._stationPos, 0); + scene->_gameBoardSide[2]._delayCard._card.hide(); - scene->_arrunkObj1337[3]._arr1[2]._field34 = 0; - scene->_arrunkObj1337[3]._arr1[2].remove(); + scene->_gameBoardSide[3]._handCard[2]._cardId = 0; + scene->_gameBoardSide[3]._handCard[2].remove(); - scene->_item2._object1.setPosition(scene->_arrunkObj1337[3]._arr1[2]._field36, 0); - scene->_item2._object1.show(); + scene->_animatedCard._card.setPosition(scene->_gameBoardSide[3]._handCard[2]._stationPos, 0); + scene->_animatedCard._card.show(); NpcMover *mover = new NpcMover(); - scene->_item2._object1.addMover(mover, &scene->_arrunkObj1337[2]._arr3[0]._field36, this); + scene->_animatedCard._card.addMover(mover, &scene->_gameBoardSide[2]._delayCard._stationPos, this); } break; case 6: { - scene->_item2._object1.hide(); - scene->_arrunkObj1337[2]._arr3[0]._field34 = 21; - scene->setAnimationInfo(&scene->_arrunkObj1337[2]._arr3[0]); + scene->_animatedCard._card.hide(); + scene->_gameBoardSide[2]._delayCard._cardId = 21; + scene->setAnimationInfo(&scene->_gameBoardSide[2]._delayCard); scene->_aSound1.play(57); R2_GLOBALS._sceneObjects->draw(); - skipFrames(60); + waitFrames(60); scene->actionDisplay(1331, 15, 159, 10, 1, 200, 0, 7, 0, 154, 154); int tmpVal = 15; @@ -2679,89 +2686,89 @@ void Scene1337::Action1::signal() { for (i = 0; i <= 7; i++) { tmpVal += 29; - scene->_arrObject1[i].postInit(); - scene->_arrObject1[i].setVisage(1332); - scene->_arrObject1[i].setPosition(Common::Point(tmpVal, 90), 0); - scene->_arrObject1[i].setStrip(3); - scene->_arrObject1[i].fixPriority(190); - - scene->_arrObject2[i].postInit(); - scene->_arrObject2[i].setVisage(1332); - scene->_arrObject2[i].setPosition(Common::Point(tmpVal, 90), 0); - scene->_arrObject2[i].setStrip(7); - scene->_arrObject2[i].setFrame(1); - scene->_arrObject2[i].fixPriority(180); - } - - scene->_arrObject1[0].setFrame(1); - scene->_arrObject1[1].setFrame(3); - scene->_arrObject1[2].setFrame(6); - scene->_arrObject1[3].setFrame(8); - scene->_arrObject1[4].setFrame(9); - scene->_arrObject1[5].setFrame(10); - scene->_arrObject1[6].setFrame(11); - scene->_arrObject1[7].setFrame(12); + scene->_upperDisplayCard[i].postInit(); + scene->_upperDisplayCard[i].setVisage(1332); + scene->_upperDisplayCard[i].setPosition(Common::Point(tmpVal, 90), 0); + scene->_upperDisplayCard[i].setStrip(3); + scene->_upperDisplayCard[i].fixPriority(190); + + scene->_lowerDisplayCard[i].postInit(); + scene->_lowerDisplayCard[i].setVisage(1332); + scene->_lowerDisplayCard[i].setPosition(Common::Point(tmpVal, 90), 0); + scene->_lowerDisplayCard[i].setStrip(7); + scene->_lowerDisplayCard[i].setFrame(1); + scene->_lowerDisplayCard[i].fixPriority(180); + } + + scene->_upperDisplayCard[0].setFrame(1); + scene->_upperDisplayCard[1].setFrame(3); + scene->_upperDisplayCard[2].setFrame(6); + scene->_upperDisplayCard[3].setFrame(8); + scene->_upperDisplayCard[4].setFrame(9); + scene->_upperDisplayCard[5].setFrame(10); + scene->_upperDisplayCard[6].setFrame(11); + scene->_upperDisplayCard[7].setFrame(12); R2_GLOBALS._sceneObjects->draw(); - skipFrames(240); + waitFrames(240); - scene->_arrObject1[0].remove(); - scene->_arrObject1[1].remove(); - scene->_arrObject1[2].remove(); - scene->_arrObject1[3].remove(); - scene->_arrObject1[4].remove(); - scene->_arrObject1[5].remove(); - scene->_arrObject1[6].remove(); - scene->_arrObject1[7].remove(); + scene->_upperDisplayCard[0].remove(); + scene->_upperDisplayCard[1].remove(); + scene->_upperDisplayCard[2].remove(); + scene->_upperDisplayCard[3].remove(); + scene->_upperDisplayCard[4].remove(); + scene->_upperDisplayCard[5].remove(); + scene->_upperDisplayCard[6].remove(); + scene->_upperDisplayCard[7].remove(); - scene->_arrObject2[0].remove(); - scene->_arrObject2[1].remove(); - scene->_arrObject2[2].remove(); - scene->_arrObject2[3].remove(); - scene->_arrObject2[4].remove(); - scene->_arrObject2[5].remove(); - scene->_arrObject2[6].remove(); - scene->_arrObject2[7].remove(); + scene->_lowerDisplayCard[0].remove(); + scene->_lowerDisplayCard[1].remove(); + scene->_lowerDisplayCard[2].remove(); + scene->_lowerDisplayCard[3].remove(); + scene->_lowerDisplayCard[4].remove(); + scene->_lowerDisplayCard[5].remove(); + scene->_lowerDisplayCard[6].remove(); + scene->_lowerDisplayCard[7].remove(); - scene->_item7._field34 = scene->_arrunkObj1337[2]._arr3[0]._field34; + scene->_discardPile._cardId = scene->_gameBoardSide[2]._delayCard._cardId; - scene->_arrunkObj1337[2]._arr3[0]._field34 = 0; - scene->_arrunkObj1337[2]._arr3[0]._object1.remove(); + scene->_gameBoardSide[2]._delayCard._cardId = 0; + scene->_gameBoardSide[2]._delayCard._card.remove(); - scene->_item2._object1.setPosition(scene->_arrunkObj1337[2]._arr3[0]._field36, 0); - scene->_item2._object1.show(); + scene->_animatedCard._card.setPosition(scene->_gameBoardSide[2]._delayCard._stationPos, 0); + scene->_animatedCard._card.show(); NpcMover *mover = new NpcMover(); - scene->_item2._object1.addMover(mover, &scene->_item7._field36, this); + scene->_animatedCard._card.addMover(mover, &scene->_discardPile._stationPos, this); } break; case 7: { - scene->_item2._object1.hide(); - scene->setAnimationInfo(&scene->_item7); + scene->_animatedCard._card.hide(); + scene->setAnimationInfo(&scene->_discardPile); scene->_aSound2.play(61); R2_GLOBALS._sceneObjects->draw(); - scene->_arrunkObj1337[2]._arr3[0]._object1.postInit(); - scene->_arrunkObj1337[2]._arr3[0]._object1.setVisage(1332); - scene->_arrunkObj1337[2]._arr3[0]._object1.setPosition(scene->_arrunkObj1337[2]._arr3[0]._field36, 0); - scene->_arrunkObj1337[2]._arr3[0]._object1.hide(); + scene->_gameBoardSide[2]._delayCard._card.postInit(); + scene->_gameBoardSide[2]._delayCard._card.setVisage(1332); + scene->_gameBoardSide[2]._delayCard._card.setPosition(scene->_gameBoardSide[2]._delayCard._stationPos, 0); + scene->_gameBoardSide[2]._delayCard._card.hide(); - scene->_arrunkObj1337[3]._arr1[1]._field34 = 0; - scene->_arrunkObj1337[3]._arr1[1].remove(); + scene->_gameBoardSide[3]._handCard[1]._cardId = 0; + scene->_gameBoardSide[3]._handCard[1].remove(); - scene->_item2._object1.setPosition(scene->_arrunkObj1337[3]._arr1[1]._field36, 0); - scene->_item2._object1.show(); + scene->_animatedCard._card.setPosition(scene->_gameBoardSide[3]._handCard[1]._stationPos, 0); + scene->_animatedCard._card.show(); NpcMover *mover = new NpcMover(); - scene->_item2._object1.addMover(mover, &scene->_arrunkObj1337[2]._arr3[0]._field36, this); + scene->_animatedCard._card.addMover(mover, &scene->_gameBoardSide[2]._delayCard._stationPos, this); } break; case 8: { - scene->_item2._object1.hide(); - scene->_arrunkObj1337[2]._arr3[0]._field34 = 14; - scene->setAnimationInfo(&scene->_arrunkObj1337[2]._arr3[0]); + scene->_animatedCard._card.hide(); + scene->_gameBoardSide[2]._delayCard._cardId = 14; + scene->setAnimationInfo(&scene->_gameBoardSide[2]._delayCard); scene->_aSound1.play(57); R2_GLOBALS._sceneObjects->draw(); @@ -2772,219 +2779,219 @@ void Scene1337::Action1::signal() { for (i = 0; i <= 3; i++) { tmpVal += 29; - scene->_arrObject1[i].postInit(); - scene->_arrObject1[i].setVisage(1332); - scene->_arrObject1[i].setPosition(Common::Point(tmpVal, 71), 0); - scene->_arrObject1[i].setStrip(3); - scene->_arrObject1[i].fixPriority(190); + scene->_upperDisplayCard[i].postInit(); + scene->_upperDisplayCard[i].setVisage(1332); + scene->_upperDisplayCard[i].setPosition(Common::Point(tmpVal, 71), 0); + scene->_upperDisplayCard[i].setStrip(3); + scene->_upperDisplayCard[i].fixPriority(190); - scene->_arrObject2[i].postInit(); - scene->_arrObject2[i].setVisage(1332); - scene->_arrObject2[i].setPosition(Common::Point(tmpVal, 71), 0); - scene->_arrObject2[i].setStrip(7); - scene->_arrObject2[i].setFrame(1); - scene->_arrObject2[i].fixPriority(180); + scene->_lowerDisplayCard[i].postInit(); + scene->_lowerDisplayCard[i].setVisage(1332); + scene->_lowerDisplayCard[i].setPosition(Common::Point(tmpVal, 71), 0); + scene->_lowerDisplayCard[i].setStrip(7); + scene->_lowerDisplayCard[i].setFrame(1); + scene->_lowerDisplayCard[i].fixPriority(180); } - scene->_arrObject1[0].setFrame(2); - scene->_arrObject1[1].setFrame(5); - scene->_arrObject1[2].setFrame(7); - scene->_arrObject1[3].setFrame(15); + scene->_upperDisplayCard[0].setFrame(2); + scene->_upperDisplayCard[1].setFrame(5); + scene->_upperDisplayCard[2].setFrame(7); + scene->_upperDisplayCard[3].setFrame(15); R2_GLOBALS._sceneObjects->draw(); - skipFrames(240); + waitFrames(240); scene->actionDisplay(1331, 17, 159, 10, 1, 200, 0, 7, 0, 154, 154); tmpVal = 72; for (i = 4; i <= 7; i++) { tmpVal += 29; - scene->_arrObject1[i].postInit(); - scene->_arrObject1[i].setVisage(1332); - scene->_arrObject1[i].setPosition(Common::Point(tmpVal, 100), 0); - scene->_arrObject1[i].setStrip(4); - scene->_arrObject1[i].fixPriority(190); + scene->_upperDisplayCard[i].postInit(); + scene->_upperDisplayCard[i].setVisage(1332); + scene->_upperDisplayCard[i].setPosition(Common::Point(tmpVal, 100), 0); + scene->_upperDisplayCard[i].setStrip(4); + scene->_upperDisplayCard[i].fixPriority(190); - scene->_arrObject2[i].postInit(); - scene->_arrObject2[i].setVisage(1332); - scene->_arrObject2[i].setPosition(Common::Point(tmpVal, 100), 0); - scene->_arrObject2[i].setStrip(7); - scene->_arrObject2[i].setFrame(1); - scene->_arrObject2[i].fixPriority(180); + scene->_lowerDisplayCard[i].postInit(); + scene->_lowerDisplayCard[i].setVisage(1332); + scene->_lowerDisplayCard[i].setPosition(Common::Point(tmpVal, 100), 0); + scene->_lowerDisplayCard[i].setStrip(7); + scene->_lowerDisplayCard[i].setFrame(1); + scene->_lowerDisplayCard[i].fixPriority(180); } - scene->_arrObject1[4].setFrame(1); - scene->_arrObject1[5].setFrame(5); - scene->_arrObject1[6].setFrame(7); - scene->_arrObject1[7].setFrame(3); + scene->_upperDisplayCard[4].setFrame(1); + scene->_upperDisplayCard[5].setFrame(5); + scene->_upperDisplayCard[6].setFrame(7); + scene->_upperDisplayCard[7].setFrame(3); R2_GLOBALS._sceneObjects->draw(); - skipFrames(240); + waitFrames(240); - scene->_arrObject1[0].remove(); - scene->_arrObject1[1].remove(); - scene->_arrObject1[2].remove(); - scene->_arrObject1[3].remove(); - scene->_arrObject1[4].remove(); - scene->_arrObject1[5].remove(); - scene->_arrObject1[6].remove(); - scene->_arrObject1[7].remove(); + scene->_upperDisplayCard[0].remove(); + scene->_upperDisplayCard[1].remove(); + scene->_upperDisplayCard[2].remove(); + scene->_upperDisplayCard[3].remove(); + scene->_upperDisplayCard[4].remove(); + scene->_upperDisplayCard[5].remove(); + scene->_upperDisplayCard[6].remove(); + scene->_upperDisplayCard[7].remove(); - scene->_arrObject2[0].remove(); - scene->_arrObject2[1].remove(); - scene->_arrObject2[2].remove(); - scene->_arrObject2[3].remove(); - scene->_arrObject2[4].remove(); - scene->_arrObject2[5].remove(); - scene->_arrObject2[6].remove(); - scene->_arrObject2[7].remove(); + scene->_lowerDisplayCard[0].remove(); + scene->_lowerDisplayCard[1].remove(); + scene->_lowerDisplayCard[2].remove(); + scene->_lowerDisplayCard[3].remove(); + scene->_lowerDisplayCard[4].remove(); + scene->_lowerDisplayCard[5].remove(); + scene->_lowerDisplayCard[6].remove(); + scene->_lowerDisplayCard[7].remove(); - scene->_item7._field34 = scene->_arrunkObj1337[2]._arr1[0]._field34; + scene->_discardPile._cardId = scene->_gameBoardSide[2]._handCard[0]._cardId; - scene->_item2._object1.setStrip(scene->_arrunkObj1337[2]._arr1[0]._object1._strip); - scene->_item2._object1.setFrame(scene->_arrunkObj1337[2]._arr1[0]._object1._frame); - scene->_item2._object1.animate(ANIM_MODE_NONE, NULL); + scene->_animatedCard._card.setStrip(scene->_gameBoardSide[2]._handCard[0]._card._strip); + scene->_animatedCard._card.setFrame(scene->_gameBoardSide[2]._handCard[0]._card._frame); + scene->_animatedCard._card.animate(ANIM_MODE_NONE, NULL); - scene->_arrunkObj1337[2]._arr1[0]._field34 = 0; - scene->_arrunkObj1337[2]._arr1[0]._object1.remove(); + scene->_gameBoardSide[2]._handCard[0]._cardId = 0; + scene->_gameBoardSide[2]._handCard[0]._card.remove(); - scene->_item2._object1.setPosition(scene->_arrunkObj1337[2]._arr1[0]._field36, 0); - scene->_item2._object1.show(); + scene->_animatedCard._card.setPosition(scene->_gameBoardSide[2]._handCard[0]._stationPos, 0); + scene->_animatedCard._card.show(); NpcMover *mover = new NpcMover(); - scene->_item2._object1.addMover(mover, &scene->_arrunkObj1337[2]._arr3[0]._field36, this); + scene->_animatedCard._card.addMover(mover, &scene->_gameBoardSide[2]._delayCard._stationPos, this); } break; case 9: { scene->_aSound1.play(58); - scene->_arrunkObj1337[2]._arr3[0]._field34 = 0; - scene->_arrunkObj1337[2]._arr3[0].remove(); - scene->_item2._object1.setStrip(5); - scene->_item2._object1.setFrame(1); - scene->_item2._object1.animate(ANIM_MODE_2, NULL); - scene->_item2._object1.setPosition(scene->_arrunkObj1337[2]._arr3[0]._field36, 0); - scene->_item2._object1.show(); + scene->_gameBoardSide[2]._delayCard._cardId = 0; + scene->_gameBoardSide[2]._delayCard.remove(); + scene->_animatedCard._card.setStrip(5); + scene->_animatedCard._card.setFrame(1); + scene->_animatedCard._card.animate(ANIM_MODE_2, NULL); + scene->_animatedCard._card.setPosition(scene->_gameBoardSide[2]._delayCard._stationPos, 0); + scene->_animatedCard._card.show(); NpcMover *mover = new NpcMover(); - scene->_item2._object1.addMover(mover, &scene->_item7._field36, this); + scene->_animatedCard._card.addMover(mover, &scene->_discardPile._stationPos, this); } break; case 10: { - scene->_item2._object1.hide(); - scene->setAnimationInfo(&scene->_item7); + scene->_animatedCard._card.hide(); + scene->setAnimationInfo(&scene->_discardPile); scene->_aSound2.play(61); R2_GLOBALS._sceneObjects->draw(); scene->actionDisplay(1331, 18, 159, 10, 1, 200, 0, 7, 0, 154, 154); - scene->_arrObject1[0].postInit(); - scene->_arrObject1[0].setVisage(1332); - scene->_arrObject1[0].setPosition(Common::Point(131, 71), 0); - scene->_arrObject1[0].fixPriority(190); - scene->_arrObject1[0].setStrip(3); - scene->_arrObject1[0].setFrame(4); - - scene->_arrObject2[0].postInit(); - scene->_arrObject2[0].setVisage(1332); - scene->_arrObject2[0].setPosition(Common::Point(131, 71), 0); - scene->_arrObject2[0].setStrip(7); - scene->_arrObject2[0].setFrame(1); - scene->_arrObject2[0].fixPriority(180); - - scene->_arrObject1[1].postInit(); - scene->_arrObject1[1].setVisage(1332); - scene->_arrObject1[1].setPosition(Common::Point(160, 71), 0); - scene->_arrObject1[1].fixPriority(190); - scene->_arrObject1[1].setStrip(3); - scene->_arrObject1[1].setFrame(16); - - scene->_arrObject2[1].postInit(); - scene->_arrObject2[1].setVisage(1332); - scene->_arrObject2[1].setPosition(Common::Point(160, 71), 0); - scene->_arrObject2[1].setStrip(7); - scene->_arrObject2[1].setFrame(1); - scene->_arrObject2[1].fixPriority(180); - - scene->_arrObject1[2].postInit(); - scene->_arrObject1[2].setVisage(1332); - scene->_arrObject1[2].setPosition(Common::Point(131, 100), 0); - scene->_arrObject1[2].fixPriority(190); - scene->_arrObject1[2].setStrip(4); - scene->_arrObject1[2].setFrame(4); - - scene->_arrObject2[2].postInit(); - scene->_arrObject2[2].setVisage(1332); - scene->_arrObject2[2].setPosition(Common::Point(131, 100), 0); - scene->_arrObject2[2].setStrip(7); - scene->_arrObject2[2].setFrame(1); - scene->_arrObject2[2].fixPriority(180); - - scene->_arrObject1[3].postInit(); - scene->_arrObject1[3].setVisage(1332); - scene->_arrObject1[3].setPosition(Common::Point(160, 100), 0); - scene->_arrObject1[3].fixPriority(190); - scene->_arrObject1[3].setStrip(4); - scene->_arrObject1[3].setFrame(2); - - scene->_arrObject2[3].postInit(); - scene->_arrObject2[3].setVisage(1332); - scene->_arrObject2[3].setPosition(Common::Point(160, 100), 0); - scene->_arrObject2[3].setStrip(7); - scene->_arrObject2[3].setFrame(1); - scene->_arrObject2[3].fixPriority(180); + scene->_upperDisplayCard[0].postInit(); + scene->_upperDisplayCard[0].setVisage(1332); + scene->_upperDisplayCard[0].setPosition(Common::Point(131, 71), 0); + scene->_upperDisplayCard[0].fixPriority(190); + scene->_upperDisplayCard[0].setStrip(3); + scene->_upperDisplayCard[0].setFrame(4); + + scene->_lowerDisplayCard[0].postInit(); + scene->_lowerDisplayCard[0].setVisage(1332); + scene->_lowerDisplayCard[0].setPosition(Common::Point(131, 71), 0); + scene->_lowerDisplayCard[0].setStrip(7); + scene->_lowerDisplayCard[0].setFrame(1); + scene->_lowerDisplayCard[0].fixPriority(180); + + scene->_upperDisplayCard[1].postInit(); + scene->_upperDisplayCard[1].setVisage(1332); + scene->_upperDisplayCard[1].setPosition(Common::Point(160, 71), 0); + scene->_upperDisplayCard[1].fixPriority(190); + scene->_upperDisplayCard[1].setStrip(3); + scene->_upperDisplayCard[1].setFrame(16); + + scene->_lowerDisplayCard[1].postInit(); + scene->_lowerDisplayCard[1].setVisage(1332); + scene->_lowerDisplayCard[1].setPosition(Common::Point(160, 71), 0); + scene->_lowerDisplayCard[1].setStrip(7); + scene->_lowerDisplayCard[1].setFrame(1); + scene->_lowerDisplayCard[1].fixPriority(180); + + scene->_upperDisplayCard[2].postInit(); + scene->_upperDisplayCard[2].setVisage(1332); + scene->_upperDisplayCard[2].setPosition(Common::Point(131, 100), 0); + scene->_upperDisplayCard[2].fixPriority(190); + scene->_upperDisplayCard[2].setStrip(4); + scene->_upperDisplayCard[2].setFrame(4); + + scene->_lowerDisplayCard[2].postInit(); + scene->_lowerDisplayCard[2].setVisage(1332); + scene->_lowerDisplayCard[2].setPosition(Common::Point(131, 100), 0); + scene->_lowerDisplayCard[2].setStrip(7); + scene->_lowerDisplayCard[2].setFrame(1); + scene->_lowerDisplayCard[2].fixPriority(180); + + scene->_upperDisplayCard[3].postInit(); + scene->_upperDisplayCard[3].setVisage(1332); + scene->_upperDisplayCard[3].setPosition(Common::Point(160, 100), 0); + scene->_upperDisplayCard[3].fixPriority(190); + scene->_upperDisplayCard[3].setStrip(4); + scene->_upperDisplayCard[3].setFrame(2); + + scene->_lowerDisplayCard[3].postInit(); + scene->_lowerDisplayCard[3].setVisage(1332); + scene->_lowerDisplayCard[3].setPosition(Common::Point(160, 100), 0); + scene->_lowerDisplayCard[3].setStrip(7); + scene->_lowerDisplayCard[3].setFrame(1); + scene->_lowerDisplayCard[3].fixPriority(180); R2_GLOBALS._sceneObjects->draw(); - skipFrames(240); + waitFrames(240); - scene->_arrObject1[0].remove(); - scene->_arrObject1[1].remove(); - scene->_arrObject1[2].remove(); - scene->_arrObject1[3].remove(); + scene->_upperDisplayCard[0].remove(); + scene->_upperDisplayCard[1].remove(); + scene->_upperDisplayCard[2].remove(); + scene->_upperDisplayCard[3].remove(); - scene->_arrObject2[0].remove(); - scene->_arrObject2[1].remove(); - scene->_arrObject2[2].remove(); - scene->_arrObject2[3].remove(); + scene->_lowerDisplayCard[0].remove(); + scene->_lowerDisplayCard[1].remove(); + scene->_lowerDisplayCard[2].remove(); + scene->_lowerDisplayCard[3].remove(); - scene->_object1.setFrame(1); - scene->_object1.show(); - scene->_object1.animate(ANIM_MODE_2, NULL); + scene->_currentPlayerArrow.setFrame(1); + scene->_currentPlayerArrow.show(); + scene->_currentPlayerArrow.animate(ANIM_MODE_2, NULL); R2_GLOBALS._sceneObjects->draw(); scene->actionDisplay(1331, 19, 159, 10, 1, 220, 0, 7, 0, 154, 154); - scene->_object1.hide(); + scene->_currentPlayerArrow.hide(); scene->actionDisplay(1331, 20, 159, 10, 1, 220, 0, 7, 0, 154, 154); scene->actionDisplay(1331, 21, 159, 10, 1, 220, 0, 7, 0, 154, 154); - scene->_item7._field34 = scene->_arrunkObj1337[2]._arr1[1]._field34; + scene->_discardPile._cardId = scene->_gameBoardSide[2]._handCard[1]._cardId; - scene->_item2._object1.setStrip(scene->_arrunkObj1337[2]._arr1[1]._object1._strip); - scene->_item2._object1.setFrame(scene->_arrunkObj1337[2]._arr1[1]._object1._frame); - scene->_item2._object1.animate(ANIM_MODE_NONE, NULL); + scene->_animatedCard._card.setStrip(scene->_gameBoardSide[2]._handCard[1]._card._strip); + scene->_animatedCard._card.setFrame(scene->_gameBoardSide[2]._handCard[1]._card._frame); + scene->_animatedCard._card.animate(ANIM_MODE_NONE, NULL); - scene->_arrunkObj1337[2]._arr1[1]._field34 = 0; - scene->_arrunkObj1337[2]._arr1[1]._object1.remove(); + scene->_gameBoardSide[2]._handCard[1]._cardId = 0; + scene->_gameBoardSide[2]._handCard[1]._card.remove(); - scene->_item2._object1.setPosition(scene->_arrunkObj1337[2]._arr1[1]._field36, 0); - scene->_item2._object1.show(); + scene->_animatedCard._card.setPosition(scene->_gameBoardSide[2]._handCard[1]._stationPos, 0); + scene->_animatedCard._card.show(); NpcMover *mover = new NpcMover(); - scene->_item2._object1.addMover(mover, &scene->_item7._field36, this); + scene->_animatedCard._card.addMover(mover, &scene->_discardPile._stationPos, this); } break; case 11: { - scene->_item2._object1.hide(); - scene->setAnimationInfo(&scene->_item7); + scene->_animatedCard._card.hide(); + scene->setAnimationInfo(&scene->_discardPile); scene->_aSound2.play(61); - scene->_item2._object1.setStrip(5); - scene->_item2._object1.setFrame(1); - scene->_item2._object1.animate(ANIM_MODE_2, NULL); + scene->_animatedCard._card.setStrip(5); + scene->_animatedCard._card.setFrame(1); + scene->_animatedCard._card.animate(ANIM_MODE_2, NULL); R2_GLOBALS._sceneObjects->draw(); @@ -2992,38 +2999,38 @@ void Scene1337::Action1::signal() { int i = -1; for (i = 0; i <= 3; i ++) { - scene->_arrunkObj1337[3]._arr1[i]._field34 = 0; - scene->_arrunkObj1337[3]._arr1[i]._object1.remove(); + scene->_gameBoardSide[3]._handCard[i]._cardId = 0; + scene->_gameBoardSide[3]._handCard[i]._card.remove(); - scene->_arrunkObj1337[2]._arr1[i]._field34 = 0; - scene->_arrunkObj1337[2]._arr1[i]._object1.remove(); + scene->_gameBoardSide[2]._handCard[i]._cardId = 0; + scene->_gameBoardSide[2]._handCard[i]._card.remove(); - scene->_arrunkObj1337[0]._arr1[i]._field34 = 0; - scene->_arrunkObj1337[0]._arr1[i]._object1.remove(); + scene->_gameBoardSide[0]._handCard[i]._cardId = 0; + scene->_gameBoardSide[0]._handCard[i]._card.remove(); - scene->_arrunkObj1337[1]._arr1[i]._field34 = 0; - scene->_arrunkObj1337[1]._arr1[i]._object1.remove(); + scene->_gameBoardSide[1]._handCard[i]._cardId = 0; + scene->_gameBoardSide[1]._handCard[i]._card.remove(); } for (i = 0; i <= 7; i++) { - scene->_arrunkObj1337[3]._arr2[i]._field34 = 0; - scene->_arrunkObj1337[3]._arr2[i]._object1.remove(); + scene->_gameBoardSide[3]._outpostStation[i]._cardId = 0; + scene->_gameBoardSide[3]._outpostStation[i]._card.remove(); - scene->_arrunkObj1337[2]._arr2[i]._field34 = 0; - scene->_arrunkObj1337[2]._arr2[i]._object1.remove(); + scene->_gameBoardSide[2]._outpostStation[i]._cardId = 0; + scene->_gameBoardSide[2]._outpostStation[i]._card.remove(); - scene->_arrunkObj1337[0]._arr2[i]._field34 = 0; - scene->_arrunkObj1337[0]._arr2[i]._object1.remove(); + scene->_gameBoardSide[0]._outpostStation[i]._cardId = 0; + scene->_gameBoardSide[0]._outpostStation[i]._card.remove(); - scene->_arrunkObj1337[1]._arr2[i]._field34 = 0; - scene->_arrunkObj1337[1]._arr2[i]._object1.remove(); + scene->_gameBoardSide[1]._outpostStation[i]._cardId = 0; + scene->_gameBoardSide[1]._outpostStation[i]._card.remove(); } - scene->_arrunkObj1337[2]._arr3[0]._field34 = 0; - scene->_arrunkObj1337[2]._arr3[0]._object1.remove(); + scene->_gameBoardSide[2]._delayCard._cardId = 0; + scene->_gameBoardSide[2]._delayCard._card.remove(); - scene->_item7._field34 = 0; - scene->_item7._object1.remove(); + scene->_discardPile._cardId = 0; + scene->_discardPile._card.remove(); scene->_background2.remove(); } @@ -3041,311 +3048,317 @@ void Scene1337::Action1::signal() { } } +/** + * Shuffle cards animation + */ void Scene1337::Action2::signal() { Scene1337 *scene = (Scene1337 *)R2_GLOBALS._sceneManager._scene; switch (_actionIndex++) { case 0: - scene->_item3._object1.postInit(); - scene->_item3._object1.setVisage(1332); - scene->_item3._object1.setStrip(8); - scene->_item3._object1.setFrame(1); - scene->_item3._object1.fixPriority(300); - scene->_item3._object1.setPosition(Common::Point(156, 108)); + scene->_shuffleAnimation._card.postInit(); + scene->_shuffleAnimation._card.setVisage(1332); + scene->_shuffleAnimation._card.setStrip(8); + scene->_shuffleAnimation._card.setFrame(1); + scene->_shuffleAnimation._card.fixPriority(300); + scene->_shuffleAnimation._card.setPosition(Common::Point(156, 108)); - scene->_item7._object1.remove(); - scene->_item7._field34 = 0; + scene->_discardPile._card.remove(); + scene->_discardPile._cardId = 0; scene->_aSound1.play(60); - scene->_item3._object1.animate(ANIM_MODE_5, this); + scene->_shuffleAnimation._card.animate(ANIM_MODE_5, this); break; case 1: - scene->_item3._object1.setFrame(1); + scene->_shuffleAnimation._card.setFrame(1); scene->_aSound1.play(60); - scene->_item3._object1.animate(ANIM_MODE_5, this); + scene->_shuffleAnimation._card.animate(ANIM_MODE_5, this); break; case 2: { Common::Point pt(156, 108); NpcMover *mover = new NpcMover(); - scene->_item3._object1.addMover(mover, &pt, this); + scene->_shuffleAnimation._card.addMover(mover, &pt, this); } break; case 3: - scene->_item3._object1.remove(); - scene->_background2.setup2(1332, 5, 1, 162, 95, 110, 1); - scene->_field423C = 1; + scene->_shuffleAnimation._card.remove(); + scene->_background2.setup2(1332, 5, 1, 162, 95, 110, EFFECT_SHADED); + scene->_shuffleEndedFl = true; break; default: break; } } +/** + * Deal cards + */ void Scene1337::Action3::signal() { Scene1337 *scene = (Scene1337 *)R2_GLOBALS._sceneManager._scene; - scene->_item2._object1.setPosition(Common::Point(162, 95), 0); + scene->_animatedCard._card.setPosition(Common::Point(162, 95), 0); switch (_actionIndex++) { case 0: { - scene->_item2._object1._moveDiff = Common::Point(30, 30); - scene->_item2._object1.setVisage(1332); - scene->_item2._object1.setStrip(5); - scene->_item2._object1.setFrame(1); - scene->_item2._object1.fixPriority(400); - scene->_item2._object1.animate(ANIM_MODE_2, NULL); + scene->_animatedCard._card._moveDiff = Common::Point(30, 30); + scene->_animatedCard._card.setVisage(1332); + scene->_animatedCard._card.setStrip(5); + scene->_animatedCard._card.setFrame(1); + scene->_animatedCard._card.fixPriority(400); + scene->_animatedCard._card.animate(ANIM_MODE_2, NULL); scene->_aSound2.play(61); Common::Point pt(283, 146); NpcMover *mover = new NpcMover(); - scene->_item2._object1.addMover(mover, &pt, this); + scene->_animatedCard._card.addMover(mover, &pt, this); - scene->_item2._object1.show(); - scene->_arrunkObj1337[1]._arr1[0]._field34 = scene->_field3E28[scene->_field3E24]; + scene->_animatedCard._card.show(); + scene->_gameBoardSide[1]._handCard[0]._cardId = scene->_availableCardsPile[scene->_cardsAvailableNumb]; } break; case 1: { - scene->_arrunkObj1337[1]._arr1[0]._object1.postInit(); - scene->_arrunkObj1337[1]._arr1[0]._object1._moveDiff = Common::Point(30, 30); - scene->_arrunkObj1337[1]._arr1[0]._object1.setVisage(1332); - scene->_arrunkObj1337[1]._arr1[0]._object1.setPosition(scene->_arrunkObj1337[1]._arr1[0]._field36, 0); - scene->_arrunkObj1337[1]._arr1[0]._object1.setStrip(1); - scene->_arrunkObj1337[1]._arr1[0]._object1.setFrame(4); - scene->_arrunkObj1337[1]._arr1[0]._object1.fixPriority(170); + scene->_gameBoardSide[1]._handCard[0]._card.postInit(); + scene->_gameBoardSide[1]._handCard[0]._card._moveDiff = Common::Point(30, 30); + scene->_gameBoardSide[1]._handCard[0]._card.setVisage(1332); + scene->_gameBoardSide[1]._handCard[0]._card.setPosition(scene->_gameBoardSide[1]._handCard[0]._stationPos, 0); + scene->_gameBoardSide[1]._handCard[0]._card.setStrip(1); + scene->_gameBoardSide[1]._handCard[0]._card.setFrame(4); + scene->_gameBoardSide[1]._handCard[0]._card.fixPriority(170); scene->_aSound2.play(61); Common::Point pt(10, 174); NpcMover *mover = new NpcMover(); - scene->_item2._object1.addMover(mover, &pt, this); + scene->_animatedCard._card.addMover(mover, &pt, this); - scene->_arrunkObj1337[2]._arr1[0]._field34 = scene->_field3E28[scene->_field3E24]; + scene->_gameBoardSide[2]._handCard[0]._cardId = scene->_availableCardsPile[scene->_cardsAvailableNumb]; } break; case 2: { - scene->_arrunkObj1337[2]._arr1[0]._object1.postInit(); - scene->_arrunkObj1337[2]._arr1[0]._object1._moveDiff = Common::Point(30, 30); - scene->_arrunkObj1337[2]._arr1[0]._object1.setVisage(1332); - scene->_arrunkObj1337[2]._arr1[0]._object1.setPosition(scene->_arrunkObj1337[2]._arr1[0]._field36, 0); - scene->_arrunkObj1337[2]._arr1[0]._object1.fixPriority(170); - if (scene->_arrunkObj1337[2]._arr1[0]._field34 > 9) { - if (scene->_arrunkObj1337[2]._arr1[0]._field34 > 25) { - scene->_arrunkObj1337[2]._arr1[0]._object1.setStrip(4); - scene->_arrunkObj1337[2]._arr1[0]._object1.setFrame(scene->_arrunkObj1337[2]._arr1[0]._field34 - 25); + scene->_gameBoardSide[2]._handCard[0]._card.postInit(); + scene->_gameBoardSide[2]._handCard[0]._card._moveDiff = Common::Point(30, 30); + scene->_gameBoardSide[2]._handCard[0]._card.setVisage(1332); + scene->_gameBoardSide[2]._handCard[0]._card.setPosition(scene->_gameBoardSide[2]._handCard[0]._stationPos, 0); + scene->_gameBoardSide[2]._handCard[0]._card.fixPriority(170); + if (scene->_gameBoardSide[2]._handCard[0]._cardId > 9) { + if (scene->_gameBoardSide[2]._handCard[0]._cardId > 25) { + scene->_gameBoardSide[2]._handCard[0]._card.setStrip(4); + scene->_gameBoardSide[2]._handCard[0]._card.setFrame(scene->_gameBoardSide[2]._handCard[0]._cardId - 25); } else { - scene->_arrunkObj1337[2]._arr1[0]._object1.setStrip(3); - scene->_arrunkObj1337[2]._arr1[0]._object1.setFrame(scene->_arrunkObj1337[2]._arr1[0]._field34 - 9); + scene->_gameBoardSide[2]._handCard[0]._card.setStrip(3); + scene->_gameBoardSide[2]._handCard[0]._card.setFrame(scene->_gameBoardSide[2]._handCard[0]._cardId - 9); } } else { - scene->_arrunkObj1337[2]._arr1[0]._object1.setStrip(2); - scene->_arrunkObj1337[2]._arr1[0]._object1.setFrame(scene->_arrunkObj1337[2]._arr1[0]._field34); + scene->_gameBoardSide[2]._handCard[0]._card.setStrip(2); + scene->_gameBoardSide[2]._handCard[0]._card.setFrame(scene->_gameBoardSide[2]._handCard[0]._cardId); } scene->_aSound2.play(61); Common::Point pt(14, 14); NpcMover *mover = new NpcMover(); - scene->_item2._object1.addMover(mover, &pt, this); + scene->_animatedCard._card.addMover(mover, &pt, this); - scene->_arrunkObj1337[3]._arr1[0]._field34 = scene->_field3E28[scene->_field3E24]; + scene->_gameBoardSide[3]._handCard[0]._cardId = scene->_availableCardsPile[scene->_cardsAvailableNumb]; } break; case 3: { - scene->_arrunkObj1337[3]._arr1[0]._object1.postInit(); - scene->_arrunkObj1337[3]._arr1[0]._object1._moveDiff = Common::Point(30, 30); - scene->_arrunkObj1337[3]._arr1[0]._object1.setVisage(1332); - scene->_arrunkObj1337[3]._arr1[0]._object1.setPosition(scene->_arrunkObj1337[3]._arr1[0]._field36, 0); - scene->_arrunkObj1337[3]._arr1[0]._object1.setStrip(1); - scene->_arrunkObj1337[3]._arr1[0]._object1.setFrame(3); - scene->_arrunkObj1337[3]._arr1[0]._object1.fixPriority(170); + scene->_gameBoardSide[3]._handCard[0]._card.postInit(); + scene->_gameBoardSide[3]._handCard[0]._card._moveDiff = Common::Point(30, 30); + scene->_gameBoardSide[3]._handCard[0]._card.setVisage(1332); + scene->_gameBoardSide[3]._handCard[0]._card.setPosition(scene->_gameBoardSide[3]._handCard[0]._stationPos, 0); + scene->_gameBoardSide[3]._handCard[0]._card.setStrip(1); + scene->_gameBoardSide[3]._handCard[0]._card.setFrame(3); + scene->_gameBoardSide[3]._handCard[0]._card.fixPriority(170); scene->_aSound2.play(61); Common::Point pt(280, 5); NpcMover *mover = new NpcMover(); - scene->_item2._object1.addMover(mover, &pt, this); + scene->_animatedCard._card.addMover(mover, &pt, this); - scene->_arrunkObj1337[0]._arr1[0]._field34 = scene->_field3E28[scene->_field3E24]; + scene->_gameBoardSide[0]._handCard[0]._cardId = scene->_availableCardsPile[scene->_cardsAvailableNumb]; } break; case 4: { - scene->_arrunkObj1337[0]._arr1[0]._object1.postInit(); - scene->_arrunkObj1337[0]._arr1[0]._object1._moveDiff = Common::Point(30,30); - scene->_arrunkObj1337[0]._arr1[0]._object1.setVisage(1332); - scene->_arrunkObj1337[0]._arr1[0]._object1.setPosition(scene->_arrunkObj1337[0]._arr1[0]._field36, 0); - scene->_arrunkObj1337[0]._arr1[0]._object1.setStrip(5); - scene->_arrunkObj1337[0]._arr1[0]._object1.setFrame(1); - scene->_arrunkObj1337[0]._arr1[0]._object1.fixPriority(170); + scene->_gameBoardSide[0]._handCard[0]._card.postInit(); + scene->_gameBoardSide[0]._handCard[0]._card._moveDiff = Common::Point(30,30); + scene->_gameBoardSide[0]._handCard[0]._card.setVisage(1332); + scene->_gameBoardSide[0]._handCard[0]._card.setPosition(scene->_gameBoardSide[0]._handCard[0]._stationPos, 0); + scene->_gameBoardSide[0]._handCard[0]._card.setStrip(5); + scene->_gameBoardSide[0]._handCard[0]._card.setFrame(1); + scene->_gameBoardSide[0]._handCard[0]._card.fixPriority(170); scene->_aSound2.play(61); Common::Point pt(283, 124); NpcMover *mover = new NpcMover(); - scene->_item2._object1.addMover(mover, &pt, this); + scene->_animatedCard._card.addMover(mover, &pt, this); - scene->_arrunkObj1337[1]._arr1[1]._field34 = scene->_field3E28[scene->_field3E24]; + scene->_gameBoardSide[1]._handCard[1]._cardId = scene->_availableCardsPile[scene->_cardsAvailableNumb]; } break; case 5: { - scene->_arrunkObj1337[1]._arr1[1]._object1.postInit(); - scene->_arrunkObj1337[1]._arr1[1]._object1._moveDiff = Common::Point(30, 30); - scene->_arrunkObj1337[1]._arr1[1]._object1.setVisage(1332); - scene->_arrunkObj1337[1]._arr1[1]._object1.setPosition(scene->_arrunkObj1337[1]._arr1[1]._field36, 0); - scene->_arrunkObj1337[1]._arr1[1]._object1.setStrip(1); - scene->_arrunkObj1337[1]._arr1[1]._object1.setFrame(4); - scene->_arrunkObj1337[1]._arr1[1]._object1.fixPriority(170); + scene->_gameBoardSide[1]._handCard[1]._card.postInit(); + scene->_gameBoardSide[1]._handCard[1]._card._moveDiff = Common::Point(30, 30); + scene->_gameBoardSide[1]._handCard[1]._card.setVisage(1332); + scene->_gameBoardSide[1]._handCard[1]._card.setPosition(scene->_gameBoardSide[1]._handCard[1]._stationPos, 0); + scene->_gameBoardSide[1]._handCard[1]._card.setStrip(1); + scene->_gameBoardSide[1]._handCard[1]._card.setFrame(4); + scene->_gameBoardSide[1]._handCard[1]._card.fixPriority(170); scene->_aSound2.play(61); Common::Point pt(37, 174); NpcMover *mover = new NpcMover(); - scene->_item2._object1.addMover(mover, &pt, this); + scene->_animatedCard._card.addMover(mover, &pt, this); - scene->_arrunkObj1337[2]._arr1[1]._field34 = scene->_field3E28[scene->_field3E24]; + scene->_gameBoardSide[2]._handCard[1]._cardId = scene->_availableCardsPile[scene->_cardsAvailableNumb]; } break; case 6: { - scene->_arrunkObj1337[2]._arr1[1]._object1.postInit(); - scene->_arrunkObj1337[2]._arr1[1]._object1._moveDiff = Common::Point(30, 30); - scene->_arrunkObj1337[2]._arr1[1]._object1.setVisage(1332); - scene->_arrunkObj1337[2]._arr1[1]._object1.setPosition(scene->_arrunkObj1337[2]._arr1[1]._field36, 0); - scene->_arrunkObj1337[2]._arr1[1]._object1.fixPriority(170); - - if (scene->_arrunkObj1337[2]._arr1[1]._field34 > 9) { - if (scene->_arrunkObj1337[2]._arr1[1]._field34 > 25) { - scene->_arrunkObj1337[2]._arr1[1]._object1.setStrip(4); - scene->_arrunkObj1337[2]._arr1[1]._object1.setFrame(scene->_arrunkObj1337[2]._arr1[1]._field34 - 25); + scene->_gameBoardSide[2]._handCard[1]._card.postInit(); + scene->_gameBoardSide[2]._handCard[1]._card._moveDiff = Common::Point(30, 30); + scene->_gameBoardSide[2]._handCard[1]._card.setVisage(1332); + scene->_gameBoardSide[2]._handCard[1]._card.setPosition(scene->_gameBoardSide[2]._handCard[1]._stationPos, 0); + scene->_gameBoardSide[2]._handCard[1]._card.fixPriority(170); + + if (scene->_gameBoardSide[2]._handCard[1]._cardId > 9) { + if (scene->_gameBoardSide[2]._handCard[1]._cardId > 25) { + scene->_gameBoardSide[2]._handCard[1]._card.setStrip(4); + scene->_gameBoardSide[2]._handCard[1]._card.setFrame(scene->_gameBoardSide[2]._handCard[1]._cardId - 25); } else { - scene->_arrunkObj1337[2]._arr1[1]._object1.setStrip(3); - scene->_arrunkObj1337[2]._arr1[1]._object1.setFrame(scene->_arrunkObj1337[2]._arr1[1]._field34 - 9); + scene->_gameBoardSide[2]._handCard[1]._card.setStrip(3); + scene->_gameBoardSide[2]._handCard[1]._card.setFrame(scene->_gameBoardSide[2]._handCard[1]._cardId - 9); } } else { - scene->_arrunkObj1337[2]._arr1[1]._object1.setStrip(2); - scene->_arrunkObj1337[2]._arr1[1]._object1.setFrame(scene->_arrunkObj1337[2]._arr1[1]._field34); + scene->_gameBoardSide[2]._handCard[1]._card.setStrip(2); + scene->_gameBoardSide[2]._handCard[1]._card.setFrame(scene->_gameBoardSide[2]._handCard[1]._cardId); } scene->_aSound2.play(61); Common::Point pt(14, 36); NpcMover *mover = new NpcMover(); - scene->_item2._object1.addMover(mover, &pt, this); + scene->_animatedCard._card.addMover(mover, &pt, this); - scene->_arrunkObj1337[3]._arr1[1]._field34 = scene->_field3E28[scene->_field3E24]; + scene->_gameBoardSide[3]._handCard[1]._cardId = scene->_availableCardsPile[scene->_cardsAvailableNumb]; } break; case 7: { - scene->_arrunkObj1337[3]._arr1[1]._object1.postInit(); - scene->_arrunkObj1337[3]._arr1[1]._object1._moveDiff = Common::Point(30, 30); - scene->_arrunkObj1337[3]._arr1[1]._object1.setVisage(1332); - scene->_arrunkObj1337[3]._arr1[1]._object1.setPosition(scene->_arrunkObj1337[3]._arr1[1]._field36); - scene->_arrunkObj1337[3]._arr1[1]._object1.setStrip(1); - scene->_arrunkObj1337[3]._arr1[1]._object1.setFrame(3); - scene->_arrunkObj1337[3]._arr1[1]._object1.fixPriority(170); + scene->_gameBoardSide[3]._handCard[1]._card.postInit(); + scene->_gameBoardSide[3]._handCard[1]._card._moveDiff = Common::Point(30, 30); + scene->_gameBoardSide[3]._handCard[1]._card.setVisage(1332); + scene->_gameBoardSide[3]._handCard[1]._card.setPosition(scene->_gameBoardSide[3]._handCard[1]._stationPos); + scene->_gameBoardSide[3]._handCard[1]._card.setStrip(1); + scene->_gameBoardSide[3]._handCard[1]._card.setFrame(3); + scene->_gameBoardSide[3]._handCard[1]._card.fixPriority(170); scene->_aSound2.play(61); Common::Point pt(253, 5); NpcMover *mover = new NpcMover(); - scene->_item2._object1.addMover(mover, &pt, this); + scene->_animatedCard._card.addMover(mover, &pt, this); - scene->_arrunkObj1337[0]._arr1[1]._field34 = scene->_field3E28[scene->_field3E24]; + scene->_gameBoardSide[0]._handCard[1]._cardId = scene->_availableCardsPile[scene->_cardsAvailableNumb]; } break; case 8: { - scene->_arrunkObj1337[0]._arr1[1]._object1.postInit(); - scene->_arrunkObj1337[0]._arr1[1]._object1._moveDiff = Common::Point(30, 30); - scene->_arrunkObj1337[0]._arr1[1]._object1.setVisage(1332); - scene->_arrunkObj1337[0]._arr1[1]._object1.setPosition(scene->_arrunkObj1337[0]._arr1[1]._field36, 0); - scene->_arrunkObj1337[0]._arr1[1]._object1.setStrip(5); - scene->_arrunkObj1337[0]._arr1[1]._object1.setFrame(1); - scene->_arrunkObj1337[0]._arr1[1]._object1.fixPriority(170); + scene->_gameBoardSide[0]._handCard[1]._card.postInit(); + scene->_gameBoardSide[0]._handCard[1]._card._moveDiff = Common::Point(30, 30); + scene->_gameBoardSide[0]._handCard[1]._card.setVisage(1332); + scene->_gameBoardSide[0]._handCard[1]._card.setPosition(scene->_gameBoardSide[0]._handCard[1]._stationPos, 0); + scene->_gameBoardSide[0]._handCard[1]._card.setStrip(5); + scene->_gameBoardSide[0]._handCard[1]._card.setFrame(1); + scene->_gameBoardSide[0]._handCard[1]._card.fixPriority(170); scene->_aSound2.play(61); Common::Point pt(283, 102); NpcMover *mover = new NpcMover(); - scene->_item2._object1.addMover(mover, &pt, this); + scene->_animatedCard._card.addMover(mover, &pt, this); - scene->_arrunkObj1337[1]._arr1[2]._field34 = scene->_field3E28[scene->_field3E24]; + scene->_gameBoardSide[1]._handCard[2]._cardId = scene->_availableCardsPile[scene->_cardsAvailableNumb]; } break; case 9: { - scene->_arrunkObj1337[1]._arr1[2]._object1.postInit(); - scene->_arrunkObj1337[1]._arr1[2]._object1._moveDiff = Common::Point(30, 30); - scene->_arrunkObj1337[1]._arr1[2]._object1.setVisage(1332); - scene->_arrunkObj1337[1]._arr1[2]._object1.setPosition(scene->_arrunkObj1337[1]._arr1[2]._field36, 0); - scene->_arrunkObj1337[1]._arr1[2]._object1.setStrip(1); - scene->_arrunkObj1337[1]._arr1[2]._object1.setFrame(4); - scene->_arrunkObj1337[1]._arr1[2]._object1.fixPriority(170); + scene->_gameBoardSide[1]._handCard[2]._card.postInit(); + scene->_gameBoardSide[1]._handCard[2]._card._moveDiff = Common::Point(30, 30); + scene->_gameBoardSide[1]._handCard[2]._card.setVisage(1332); + scene->_gameBoardSide[1]._handCard[2]._card.setPosition(scene->_gameBoardSide[1]._handCard[2]._stationPos, 0); + scene->_gameBoardSide[1]._handCard[2]._card.setStrip(1); + scene->_gameBoardSide[1]._handCard[2]._card.setFrame(4); + scene->_gameBoardSide[1]._handCard[2]._card.fixPriority(170); scene->_aSound2.play(61); Common::Point pt(64, 174); NpcMover *mover = new NpcMover(); - scene->_item2._object1.addMover(mover, &pt, this); + scene->_animatedCard._card.addMover(mover, &pt, this); - scene->_arrunkObj1337[2]._arr1[2]._field34 = scene->_field3E28[scene->_field3E24]; + scene->_gameBoardSide[2]._handCard[2]._cardId = scene->_availableCardsPile[scene->_cardsAvailableNumb]; } break; case 10: { - scene->_arrunkObj1337[2]._arr1[2]._object1.postInit(); - scene->_arrunkObj1337[2]._arr1[2]._object1._moveDiff = Common::Point(30, 30); - scene->_arrunkObj1337[2]._arr1[2]._object1.setVisage(1332); - scene->_arrunkObj1337[2]._arr1[2]._object1.setPosition(scene->_arrunkObj1337[2]._arr1[2]._field36, 0); - scene->_arrunkObj1337[2]._arr1[2]._object1.fixPriority(170); - - if (scene->_arrunkObj1337[2]._arr1[2]._field34 > 9) { - if (scene->_arrunkObj1337[2]._arr1[2]._field34 > 25) { - scene->_arrunkObj1337[2]._arr1[2]._object1.setStrip(4); - scene->_arrunkObj1337[2]._arr1[2]._object1.setFrame(scene->_arrunkObj1337[2]._arr1[2]._field34 - 25); + scene->_gameBoardSide[2]._handCard[2]._card.postInit(); + scene->_gameBoardSide[2]._handCard[2]._card._moveDiff = Common::Point(30, 30); + scene->_gameBoardSide[2]._handCard[2]._card.setVisage(1332); + scene->_gameBoardSide[2]._handCard[2]._card.setPosition(scene->_gameBoardSide[2]._handCard[2]._stationPos, 0); + scene->_gameBoardSide[2]._handCard[2]._card.fixPriority(170); + + if (scene->_gameBoardSide[2]._handCard[2]._cardId > 9) { + if (scene->_gameBoardSide[2]._handCard[2]._cardId > 25) { + scene->_gameBoardSide[2]._handCard[2]._card.setStrip(4); + scene->_gameBoardSide[2]._handCard[2]._card.setFrame(scene->_gameBoardSide[2]._handCard[2]._cardId - 25); } else { - scene->_arrunkObj1337[2]._arr1[2]._object1.setStrip(3); - scene->_arrunkObj1337[2]._arr1[2]._object1.setFrame(scene->_arrunkObj1337[2]._arr1[2]._field34 - 9); + scene->_gameBoardSide[2]._handCard[2]._card.setStrip(3); + scene->_gameBoardSide[2]._handCard[2]._card.setFrame(scene->_gameBoardSide[2]._handCard[2]._cardId - 9); } } else { - scene->_arrunkObj1337[2]._arr1[2]._object1.setStrip(2); - scene->_arrunkObj1337[2]._arr1[2]._object1.setFrame(scene->_arrunkObj1337[2]._arr1[2]._field34); + scene->_gameBoardSide[2]._handCard[2]._card.setStrip(2); + scene->_gameBoardSide[2]._handCard[2]._card.setFrame(scene->_gameBoardSide[2]._handCard[2]._cardId); } scene->_aSound2.play(61); Common::Point pt(14, 58); NpcMover *mover = new NpcMover(); - scene->_item2._object1.addMover(mover, &pt, this); + scene->_animatedCard._card.addMover(mover, &pt, this); - scene->_arrunkObj1337[3]._arr1[2]._field34 = scene->_field3E28[scene->_field3E24]; + scene->_gameBoardSide[3]._handCard[2]._cardId = scene->_availableCardsPile[scene->_cardsAvailableNumb]; } break; case 11: { - scene->_arrunkObj1337[3]._arr1[2]._object1.postInit(); - scene->_arrunkObj1337[3]._arr1[2]._object1._moveDiff = Common::Point(30, 30); - scene->_arrunkObj1337[3]._arr1[2]._object1.setVisage(1332); - scene->_arrunkObj1337[3]._arr1[2]._object1.setPosition(scene->_arrunkObj1337[3]._arr1[2]._field36, 0); - scene->_arrunkObj1337[3]._arr1[2]._object1.setStrip(1); - scene->_arrunkObj1337[3]._arr1[2]._object1.setFrame(3); - scene->_arrunkObj1337[3]._arr1[2]._object1.fixPriority(170); + scene->_gameBoardSide[3]._handCard[2]._card.postInit(); + scene->_gameBoardSide[3]._handCard[2]._card._moveDiff = Common::Point(30, 30); + scene->_gameBoardSide[3]._handCard[2]._card.setVisage(1332); + scene->_gameBoardSide[3]._handCard[2]._card.setPosition(scene->_gameBoardSide[3]._handCard[2]._stationPos, 0); + scene->_gameBoardSide[3]._handCard[2]._card.setStrip(1); + scene->_gameBoardSide[3]._handCard[2]._card.setFrame(3); + scene->_gameBoardSide[3]._handCard[2]._card.fixPriority(170); scene->_aSound2.play(61); Common::Point pt(226, 5); NpcMover *mover = new NpcMover(); - scene->_item2._object1.addMover(mover, &pt, this); + scene->_animatedCard._card.addMover(mover, &pt, this); - scene->_arrunkObj1337[0]._arr1[2]._field34 = scene->_field3E28[scene->_field3E24]; + scene->_gameBoardSide[0]._handCard[2]._cardId = scene->_availableCardsPile[scene->_cardsAvailableNumb]; } break; case 12: - scene->_arrunkObj1337[0]._arr1[2]._object1.postInit(); - scene->_arrunkObj1337[0]._arr1[2]._object1._moveDiff = Common::Point(30, 30); - scene->_arrunkObj1337[0]._arr1[2]._object1.setVisage(1332); - scene->_arrunkObj1337[0]._arr1[2]._object1.setPosition(scene->_arrunkObj1337[0]._arr1[2]._field36, 0); - scene->_arrunkObj1337[0]._arr1[2]._object1.setStrip(5); - scene->_arrunkObj1337[0]._arr1[2]._object1.setFrame(1); - scene->_arrunkObj1337[0]._arr1[2]._object1.fixPriority(170); - scene->_arrunkObj1337[0]._arr1[2]._object1.hide(); + scene->_gameBoardSide[0]._handCard[2]._card.postInit(); + scene->_gameBoardSide[0]._handCard[2]._card._moveDiff = Common::Point(30, 30); + scene->_gameBoardSide[0]._handCard[2]._card.setVisage(1332); + scene->_gameBoardSide[0]._handCard[2]._card.setPosition(scene->_gameBoardSide[0]._handCard[2]._stationPos, 0); + scene->_gameBoardSide[0]._handCard[2]._card.setStrip(5); + scene->_gameBoardSide[0]._handCard[2]._card.setFrame(1); + scene->_gameBoardSide[0]._handCard[2]._card.fixPriority(170); + scene->_animatedCard._card.hide(); default: break; } if (_actionIndex > 12) { - scene->_field423E = 0; + scene->_currentPlayerNumb = 0; R2_GLOBALS._sceneObjects->draw(); scene->actionDisplay(1330, 0, 159, 10, 1, 200, 0, 7, 0, 154, 154); scene->subC20F9(); } else if (_actionIndex >= 1) { - scene->_field3E28[scene->_field3E24] = 0; - scene->_field3E24--; + scene->_availableCardsPile[scene->_cardsAvailableNumb] = 0; + scene->_cardsAvailableNumb--; } } @@ -3354,21 +3367,21 @@ void Scene1337::Action4::signal() { switch (_actionIndex++) { case 0: - if ((scene->_arrunkObj1337[scene->_field423E]._arr1[0]._field34 == 0) && (scene->subC264B(scene->_arrunkObj1337[scene->_field423E]._arr3[0]._field34))) { - if (scene->_field3E24 < 0) - scene->subC264B(scene->_arrunkObj1337[scene->_field423E]._arr3[0]._field34); - scene->_item2._object1.setPosition(Common::Point(162, 95), 0); - scene->_item2._object1.show(); + if ((scene->_gameBoardSide[scene->_currentPlayerNumb]._handCard[0]._cardId == 0) && (scene->subC264B(scene->_gameBoardSide[scene->_currentPlayerNumb]._delayCard._cardId))) { + if (scene->_cardsAvailableNumb < 0) + scene->shuffleCards(); + scene->_animatedCard._card.setPosition(Common::Point(162, 95), 0); + scene->_animatedCard._card.show(); scene->_aSound2.play(61); NpcMover *mover = new NpcMover(); - scene->_item2._object1.addMover(mover, &scene->_arrunkObj1337[scene->_field423E]._fieldB94, this); + scene->_animatedCard._card.addMover(mover, &scene->_gameBoardSide[scene->_currentPlayerNumb]._card1Pos, this); - scene->_arrunkObj1337[scene->_field423E]._arr1[0]._field34 = scene->_field3E28[scene->_field3E24]; - scene->_field3E28[scene->_field3E24] = 0; - scene->_field3E24--; + scene->_gameBoardSide[scene->_currentPlayerNumb]._handCard[0]._cardId = scene->_availableCardsPile[scene->_cardsAvailableNumb]; + scene->_availableCardsPile[scene->_cardsAvailableNumb] = 0; + scene->_cardsAvailableNumb--; - if (scene->_field3E24 < 0) + if (scene->_cardsAvailableNumb < 0) scene->_background2.remove(); } else { // Self call, forcing next actionIndex @@ -3376,127 +3389,127 @@ void Scene1337::Action4::signal() { } break; case 1: - if ( ( scene->_item2._object1._position.x == scene->_arrunkObj1337[scene->_field423E]._fieldB94.x) - && ( scene->_item2._object1._position.y == scene->_arrunkObj1337[scene->_field423E]._fieldB94.y) ) { - scene->_arrunkObj1337[scene->_field423E]._arr1[0]._object1.postInit(); - scene->_arrunkObj1337[scene->_field423E]._arr1[0]._object1._moveDiff = Common::Point(30, 30); - scene->_arrunkObj1337[scene->_field423E]._arr1[0]._object1.setVisage(1332); - scene->_arrunkObj1337[scene->_field423E]._arr1[0]._object1.setPosition(scene->_arrunkObj1337[scene->_field423E]._arr1[0]._field36, 0); - scene->_arrunkObj1337[scene->_field423E]._arr1[0]._object1.setStrip(1); - scene->_arrunkObj1337[scene->_field423E]._arr1[0]._object1.setFrame(scene->_arrunkObj1337[scene->_field423E]._fieldBA4); - scene->_arrunkObj1337[scene->_field423E]._arr1[0]._object1.fixPriority(170); - } - - if ((scene->_field4248 == 1) || (scene->_field423E == 2)) - scene->setAnimationInfo(&scene->_arrunkObj1337[scene->_field423E]._arr1[0]); - - scene->_item2._object1.hide(); - if ((scene->_arrunkObj1337[scene->_field423E]._arr1[0]._field34 == 0) && (scene->subC264B(scene->_arrunkObj1337[scene->_field423E]._arr3[0]._field34 == 0))) { - if (scene->_field3E24 < 0) + if ( ( scene->_animatedCard._card._position.x == scene->_gameBoardSide[scene->_currentPlayerNumb]._card1Pos.x) + && ( scene->_animatedCard._card._position.y == scene->_gameBoardSide[scene->_currentPlayerNumb]._card1Pos.y) ) { + scene->_gameBoardSide[scene->_currentPlayerNumb]._handCard[0]._card.postInit(); + scene->_gameBoardSide[scene->_currentPlayerNumb]._handCard[0]._card._moveDiff = Common::Point(30, 30); + scene->_gameBoardSide[scene->_currentPlayerNumb]._handCard[0]._card.setVisage(1332); + scene->_gameBoardSide[scene->_currentPlayerNumb]._handCard[0]._card.setPosition(scene->_gameBoardSide[scene->_currentPlayerNumb]._handCard[0]._stationPos, 0); + scene->_gameBoardSide[scene->_currentPlayerNumb]._handCard[0]._card.setStrip(1); + scene->_gameBoardSide[scene->_currentPlayerNumb]._handCard[0]._card.setFrame(scene->_gameBoardSide[scene->_currentPlayerNumb]._frameNum); + scene->_gameBoardSide[scene->_currentPlayerNumb]._handCard[0]._card.fixPriority(170); + } + + if ((R2_GLOBALS._debugCardGame) || (scene->_currentPlayerNumb == 2)) + scene->setAnimationInfo(&scene->_gameBoardSide[scene->_currentPlayerNumb]._handCard[0]); + + scene->_animatedCard._card.hide(); + if ((scene->_gameBoardSide[scene->_currentPlayerNumb]._handCard[0]._cardId == 0) && (scene->subC264B(scene->_gameBoardSide[scene->_currentPlayerNumb]._delayCard._cardId == 0))) { + if (scene->_cardsAvailableNumb < 0) scene->shuffleCards(); - scene->_item2._object1.setPosition(Common::Point(162, 95)); - scene->_item2._object1.show(); + scene->_animatedCard._card.setPosition(Common::Point(162, 95)); + scene->_animatedCard._card.show(); scene->_aSound2.play(61); NpcMover *mover = new NpcMover(); - scene->_item2._object1.addMover(mover, &scene->_arrunkObj1337[scene->_field423E]._fieldB98, this); + scene->_animatedCard._card.addMover(mover, &scene->_gameBoardSide[scene->_currentPlayerNumb]._card2Pos, this); - scene->_arrunkObj1337[scene->_field423E]._arr1[1]._field34 = scene->_field3E28[scene->_field3E24]; - scene->_field3E28[scene->_field3E24] = 0; - scene->_field3E24--; - if (scene->_field3E24 < 0) + scene->_gameBoardSide[scene->_currentPlayerNumb]._handCard[1]._cardId = scene->_availableCardsPile[scene->_cardsAvailableNumb]; + scene->_availableCardsPile[scene->_cardsAvailableNumb] = 0; + scene->_cardsAvailableNumb--; + if (scene->_cardsAvailableNumb < 0) scene->_background2.remove(); } else signal(); break; case 2: - if ( ( scene->_item2._object1._position.x == scene->_arrunkObj1337[scene->_field423E]._fieldB98.x) - && ( scene->_item2._object1._position.y == scene->_arrunkObj1337[scene->_field423E]._fieldB98.y) ) { - scene->_arrunkObj1337[scene->_field423E]._arr1[1]._object1.postInit(); - scene->_arrunkObj1337[scene->_field423E]._arr1[1]._object1._moveDiff = Common::Point(30, 30); - scene->_arrunkObj1337[scene->_field423E]._arr1[1]._object1.setVisage(1332); - scene->_arrunkObj1337[scene->_field423E]._arr1[1]._object1.setPosition(scene->_arrunkObj1337[scene->_field423E]._arr1[1]._field36, 0); - scene->_arrunkObj1337[scene->_field423E]._arr1[1]._object1.setStrip(1); - scene->_arrunkObj1337[scene->_field423E]._arr1[1]._object1.setFrame(scene->_arrunkObj1337[scene->_field423E]._fieldBA4); - scene->_arrunkObj1337[scene->_field423E]._arr1[1]._object1.fixPriority(170); - } - - if ((scene->_field4248 == 1) || (scene->_field423E == 2)) - scene->setAnimationInfo(&scene->_arrunkObj1337[scene->_field423E]._arr1[1]); - - scene->_item2._object1.hide(); - if ((scene->_arrunkObj1337[scene->_field423E]._arr1[2]._field34 == 0) && (scene->subC264B(scene->_arrunkObj1337[scene->_field423E]._arr3[0]._field34 == 0))) { - if (scene->_field3E24 < 0) + if ( ( scene->_animatedCard._card._position.x == scene->_gameBoardSide[scene->_currentPlayerNumb]._card2Pos.x) + && ( scene->_animatedCard._card._position.y == scene->_gameBoardSide[scene->_currentPlayerNumb]._card2Pos.y) ) { + scene->_gameBoardSide[scene->_currentPlayerNumb]._handCard[1]._card.postInit(); + scene->_gameBoardSide[scene->_currentPlayerNumb]._handCard[1]._card._moveDiff = Common::Point(30, 30); + scene->_gameBoardSide[scene->_currentPlayerNumb]._handCard[1]._card.setVisage(1332); + scene->_gameBoardSide[scene->_currentPlayerNumb]._handCard[1]._card.setPosition(scene->_gameBoardSide[scene->_currentPlayerNumb]._handCard[1]._stationPos, 0); + scene->_gameBoardSide[scene->_currentPlayerNumb]._handCard[1]._card.setStrip(1); + scene->_gameBoardSide[scene->_currentPlayerNumb]._handCard[1]._card.setFrame(scene->_gameBoardSide[scene->_currentPlayerNumb]._frameNum); + scene->_gameBoardSide[scene->_currentPlayerNumb]._handCard[1]._card.fixPriority(170); + } + + if ((R2_GLOBALS._debugCardGame) || (scene->_currentPlayerNumb == 2)) + scene->setAnimationInfo(&scene->_gameBoardSide[scene->_currentPlayerNumb]._handCard[1]); + + scene->_animatedCard._card.hide(); + if ((scene->_gameBoardSide[scene->_currentPlayerNumb]._handCard[2]._cardId == 0) && (scene->subC264B(scene->_gameBoardSide[scene->_currentPlayerNumb]._delayCard._cardId == 0))) { + if (scene->_cardsAvailableNumb < 0) scene->shuffleCards(); - scene->_item2._object1.setPosition(Common::Point(162, 95)); - scene->_item2._object1.show(); + scene->_animatedCard._card.setPosition(Common::Point(162, 95)); + scene->_animatedCard._card.show(); scene->_aSound2.play(61); NpcMover *mover = new NpcMover(); - scene->_item2._object1.addMover(mover, &scene->_arrunkObj1337[scene->_field423E]._fieldB9C, this); + scene->_animatedCard._card.addMover(mover, &scene->_gameBoardSide[scene->_currentPlayerNumb]._card3Pos, this); - scene->_arrunkObj1337[scene->_field423E]._arr1[2]._field34 = scene->_field3E28[scene->_field3E24]; - scene->_field3E28[scene->_field3E24] = 0; - scene->_field3E24--; - if (scene->_field3E24 < 0) + scene->_gameBoardSide[scene->_currentPlayerNumb]._handCard[2]._cardId = scene->_availableCardsPile[scene->_cardsAvailableNumb]; + scene->_availableCardsPile[scene->_cardsAvailableNumb] = 0; + scene->_cardsAvailableNumb--; + if (scene->_cardsAvailableNumb < 0) scene->_background2.remove(); } else signal(); break; case 3: - if ( ( scene->_item2._object1._position.x == scene->_arrunkObj1337[scene->_field423E]._fieldB9C.x) - && ( scene->_item2._object1._position.y == scene->_arrunkObj1337[scene->_field423E]._fieldB9C.y) ) { - scene->_arrunkObj1337[scene->_field423E]._arr1[2]._object1.postInit(); - scene->_arrunkObj1337[scene->_field423E]._arr1[2]._object1._moveDiff = Common::Point(30, 30); - scene->_arrunkObj1337[scene->_field423E]._arr1[2]._object1.setVisage(1332); - scene->_arrunkObj1337[scene->_field423E]._arr1[2]._object1.setPosition(scene->_arrunkObj1337[scene->_field423E]._arr1[2]._field36, 0); - scene->_arrunkObj1337[scene->_field423E]._arr1[2]._object1.setStrip(1); - scene->_arrunkObj1337[scene->_field423E]._arr1[2]._object1.setFrame(scene->_arrunkObj1337[scene->_field423E]._fieldBA4); - scene->_arrunkObj1337[scene->_field423E]._arr1[2]._object1.fixPriority(170); - } - - if ((scene->_field4248 == 1) || (scene->_field423E == 2)) - scene->setAnimationInfo(&scene->_arrunkObj1337[scene->_field423E]._arr1[2]); - - scene->_item2._object1.hide(); - if ((scene->_arrunkObj1337[scene->_field423E]._arr1[3]._field34 == 0) && (scene->subC264B(scene->_arrunkObj1337[scene->_field423E]._arr3[0]._field34 == 0))) { - if (scene->_field3E24 < 0) + if ( ( scene->_animatedCard._card._position.x == scene->_gameBoardSide[scene->_currentPlayerNumb]._card3Pos.x) + && ( scene->_animatedCard._card._position.y == scene->_gameBoardSide[scene->_currentPlayerNumb]._card3Pos.y) ) { + scene->_gameBoardSide[scene->_currentPlayerNumb]._handCard[2]._card.postInit(); + scene->_gameBoardSide[scene->_currentPlayerNumb]._handCard[2]._card._moveDiff = Common::Point(30, 30); + scene->_gameBoardSide[scene->_currentPlayerNumb]._handCard[2]._card.setVisage(1332); + scene->_gameBoardSide[scene->_currentPlayerNumb]._handCard[2]._card.setPosition(scene->_gameBoardSide[scene->_currentPlayerNumb]._handCard[2]._stationPos, 0); + scene->_gameBoardSide[scene->_currentPlayerNumb]._handCard[2]._card.setStrip(1); + scene->_gameBoardSide[scene->_currentPlayerNumb]._handCard[2]._card.setFrame(scene->_gameBoardSide[scene->_currentPlayerNumb]._frameNum); + scene->_gameBoardSide[scene->_currentPlayerNumb]._handCard[2]._card.fixPriority(170); + } + + if ((R2_GLOBALS._debugCardGame) || (scene->_currentPlayerNumb == 2)) + scene->setAnimationInfo(&scene->_gameBoardSide[scene->_currentPlayerNumb]._handCard[2]); + + scene->_animatedCard._card.hide(); + if ((scene->_gameBoardSide[scene->_currentPlayerNumb]._handCard[3]._cardId == 0) && (scene->subC264B(scene->_gameBoardSide[scene->_currentPlayerNumb]._delayCard._cardId == 0))) { + if (scene->_cardsAvailableNumb < 0) scene->shuffleCards(); - scene->_item2._object1.setPosition(Common::Point(162, 95)); - scene->_item2._object1.show(); + scene->_animatedCard._card.setPosition(Common::Point(162, 95)); + scene->_animatedCard._card.show(); scene->_aSound2.play(61); NpcMover *mover = new NpcMover(); - scene->_item2._object1.addMover(mover, &scene->_arrunkObj1337[scene->_field423E]._fieldBA0, this); + scene->_animatedCard._card.addMover(mover, &scene->_gameBoardSide[scene->_currentPlayerNumb]._card4Pos, this); - scene->_arrunkObj1337[scene->_field423E]._arr1[3]._field34 = scene->_field3E28[scene->_field3E24]; - scene->_field3E28[scene->_field3E24] = 0; - scene->_field3E24--; - if (scene->_field3E24 < 0) + scene->_gameBoardSide[scene->_currentPlayerNumb]._handCard[3]._cardId = scene->_availableCardsPile[scene->_cardsAvailableNumb]; + scene->_availableCardsPile[scene->_cardsAvailableNumb] = 0; + scene->_cardsAvailableNumb--; + if (scene->_cardsAvailableNumb < 0) scene->_background2.remove(); } else signal(); break; case 4: - if ( ( scene->_item2._object1._position.x == scene->_arrunkObj1337[scene->_field423E]._fieldBA0.x) - && ( scene->_item2._object1._position.y == scene->_arrunkObj1337[scene->_field423E]._fieldBA0.y) ) { - scene->_arrunkObj1337[scene->_field423E]._arr1[3]._object1.postInit(); - scene->_arrunkObj1337[scene->_field423E]._arr1[3]._object1._moveDiff = Common::Point(30, 30); - scene->_arrunkObj1337[scene->_field423E]._arr1[3]._object1.setVisage(1332); - scene->_arrunkObj1337[scene->_field423E]._arr1[3]._object1.setPosition(scene->_arrunkObj1337[scene->_field423E]._arr1[3]._field36, 0); - scene->_arrunkObj1337[scene->_field423E]._arr1[3]._object1.setStrip(1); - scene->_arrunkObj1337[scene->_field423E]._arr1[3]._object1.setFrame(scene->_arrunkObj1337[scene->_field423E]._fieldBA4); - scene->_arrunkObj1337[scene->_field423E]._arr1[3]._object1.fixPriority(170); - } - - if ((scene->_field4248 == 1) || (scene->_field423E == 2)) - scene->setAnimationInfo(&scene->_arrunkObj1337[scene->_field423E]._arr1[3]); - - scene->_item2._object1.hide(); - switch (scene->_field423E) { + if ( ( scene->_animatedCard._card._position.x == scene->_gameBoardSide[scene->_currentPlayerNumb]._card4Pos.x) + && ( scene->_animatedCard._card._position.y == scene->_gameBoardSide[scene->_currentPlayerNumb]._card4Pos.y) ) { + scene->_gameBoardSide[scene->_currentPlayerNumb]._handCard[3]._card.postInit(); + scene->_gameBoardSide[scene->_currentPlayerNumb]._handCard[3]._card._moveDiff = Common::Point(30, 30); + scene->_gameBoardSide[scene->_currentPlayerNumb]._handCard[3]._card.setVisage(1332); + scene->_gameBoardSide[scene->_currentPlayerNumb]._handCard[3]._card.setPosition(scene->_gameBoardSide[scene->_currentPlayerNumb]._handCard[3]._stationPos, 0); + scene->_gameBoardSide[scene->_currentPlayerNumb]._handCard[3]._card.setStrip(1); + scene->_gameBoardSide[scene->_currentPlayerNumb]._handCard[3]._card.setFrame(scene->_gameBoardSide[scene->_currentPlayerNumb]._frameNum); + scene->_gameBoardSide[scene->_currentPlayerNumb]._handCard[3]._card.fixPriority(170); + } + + if ((R2_GLOBALS._debugCardGame) || (scene->_currentPlayerNumb == 2)) + scene->setAnimationInfo(&scene->_gameBoardSide[scene->_currentPlayerNumb]._handCard[3]); + + scene->_animatedCard._card.hide(); + switch (scene->_currentPlayerNumb) { case 0: scene->subCF979(); break; @@ -3523,34 +3536,34 @@ void Scene1337::Action5::signal() { switch (_actionIndex++) { case 0: { - scene->_field3E28[scene->_field3E26] = scene->_field3EF0->_field34; - scene->_field3E26--; - if (!g_globals->_sceneObjects->contains(&scene->_item7._object1)) { - scene->_item7._object1.postInit(); - scene->_item7._object1.hide(); - scene->_item7._object1.setVisage(1332); - scene->_item7._object1.setPosition(scene->_item7._field36, 0); - scene->_item7._object1.fixPriority(170); - } - - scene->_item7._field34 = scene->_field3EF0->_field34; - scene->_field3EF0->_field34 = 0; - scene->_field3EF0->_object1.remove(); - - if (scene->_field3EF0 == &scene->_item6) { - subD18B5(5, 1, 4); + scene->_availableCardsPile[scene->_currentDiscardIndex] = scene->_discardCard->_cardId; + scene->_currentDiscardIndex--; + if (!g_globals->_sceneObjects->contains(&scene->_discardPile._card)) { + scene->_discardPile._card.postInit(); + scene->_discardPile._card.hide(); + scene->_discardPile._card.setVisage(1332); + scene->_discardPile._card.setPosition(scene->_discardPile._stationPos, 0); + scene->_discardPile._card.fixPriority(170); + } + + scene->_discardPile._cardId = scene->_discardCard->_cardId; + scene->_discardCard->_cardId = 0; + scene->_discardCard->_card.remove(); + + if (scene->_discardCard == &scene->_item6) { + scene->setCursorData(5, 1, 4); scene->subC4CEC(); } - scene->_item2._object1.setPosition(scene->_field3EF0->_field36, 0); - scene->_item2._object1.show(); + scene->_animatedCard._card.setPosition(scene->_discardCard->_stationPos, 0); + scene->_animatedCard._card.show(); Common::Point pt(128, 95); NpcMover *mover = new NpcMover(); - scene->_item2._object1.addMover(mover, &pt, this); + scene->_animatedCard._card.addMover(mover, &pt, this); } break; case 1: - scene->_item2._object1.hide(); - scene->setAnimationInfo(&scene->_item7); + scene->_animatedCard._card.hide(); + scene->setAnimationInfo(&scene->_discardPile); scene->_aSound2.play(61); scene->subC20F9(); break; @@ -3564,29 +3577,29 @@ void Scene1337::Action6::signal() { switch (_actionIndex++) { case 0: { - scene->_field3EF4->_field34 = 1; - scene->_field3EF4->_object1.postInit(); - scene->_field3EF4->_object1.hide(); - scene->_field3EF4->_object1.setVisage(1332); - scene->_field3EF4->_object1.setPosition(scene->_field3EF4->_field36); - scene->_field3EF4->_object1.fixPriority(170); + scene->_field3EF4->_cardId = 1; + scene->_field3EF4->_card.postInit(); + scene->_field3EF4->_card.hide(); + scene->_field3EF4->_card.setVisage(1332); + scene->_field3EF4->_card.setPosition(scene->_field3EF4->_stationPos); + scene->_field3EF4->_card.fixPriority(170); - scene->_field3EF0->_field34 = 0; - scene->_field3EF0->_object1.remove(); + scene->_discardCard->_cardId = 0; + scene->_discardCard->_card.remove(); - scene->_item2._object1.setPosition(scene->_field3EF0->_field36); - scene->_item2._object1.show(); + scene->_animatedCard._card.setPosition(scene->_discardCard->_stationPos); + scene->_animatedCard._card.show(); NpcMover *mover = new NpcMover(); - scene->_item2._object1.addMover(mover, &scene->_field3EF4->_field36, this); + scene->_animatedCard._card.addMover(mover, &scene->_field3EF4->_stationPos, this); } break; case 1: - scene->_item2._object1.hide(); + scene->_animatedCard._card.hide(); scene->setAnimationInfo(scene->_field3EF4); scene->_aSound1.play(59); - if (scene->_field3EF0 == &scene->_item6) { - subD18B5(5, 1, 4); + if (scene->_discardCard == &scene->_item6) { + scene->setCursorData(5, 1, 4); scene->subC4CEC(); } scene->subC20F9(); @@ -3601,30 +3614,30 @@ void Scene1337::Action7::signal() { switch (_actionIndex++) { case 0: { - scene->_field3EF4->_field34 = scene->_field3EF0->_field34; + scene->_field3EF4->_cardId = scene->_discardCard->_cardId; - scene->_field3EF0->_field34 = 0; - scene->_field3EF0->_object1.remove(); + scene->_discardCard->_cardId = 0; + scene->_discardCard->_card.remove(); - scene->_item2._object1.setPosition(scene->_field3EF0->_field36, 0); - scene->_item2._object1.show(); + scene->_animatedCard._card.setPosition(scene->_discardCard->_stationPos, 0); + scene->_animatedCard._card.show(); NpcMover *mover = new NpcMover(); - scene->_item2._object1.addMover(mover, &scene->_field3EF4->_field36, this); + scene->_animatedCard._card.addMover(mover, &scene->_field3EF4->_stationPos, this); } break; case 1: - if (scene->_field3EF0 == &scene->_item6) { - subD18B5(5, 1, 4); + if (scene->_discardCard == &scene->_item6) { + scene->setCursorData(5, 1, 4); scene->subC4CEC(); } scene->setAnimationInfo(scene->_field3EF4); scene->_aSound1.play(59); - scene->_item5._field34 = 1; - scene->_item5._field36.x = scene->_field3EF4->_field36.x; - scene->_item5._field36.y = scene->_field3EF4->_field36.y; - scene->_item5._object1.postInit(); - scene->_item5._object1.hide(); - scene->_item5._object1._flags = 0x200; + scene->_item5._cardId = 1; + scene->_item5._stationPos.x = scene->_field3EF4->_stationPos.x; + scene->_item5._stationPos.y = scene->_field3EF4->_stationPos.y; + scene->_item5._card.postInit(); + scene->_item5._card.hide(); + scene->_item5._card._flags = OBJFLAG_HIDING; scene->subC4A39(&scene->_item5); break; @@ -3638,24 +3651,24 @@ void Scene1337::Action8::signal() { switch (_actionIndex++) { case 0: { - scene->_field3E28[scene->_field3E26] = scene->_field3EF4->_field34; - scene->_field3E26--; + scene->_availableCardsPile[scene->_currentDiscardIndex] = scene->_field3EF4->_cardId; + scene->_currentDiscardIndex--; - scene->_field3EF4->_field34 = scene->_field3EF0->_field34; - scene->_field3EF0->_object1.remove(); + scene->_field3EF4->_cardId = scene->_discardCard->_cardId; + scene->_discardCard->_card.remove(); - scene->_item2._object1.setPosition(scene->_field3EF0->_field36, 0); - scene->_item2._object1.show(); + scene->_animatedCard._card.setPosition(scene->_discardCard->_stationPos, 0); + scene->_animatedCard._card.show(); NpcMover *mover = new NpcMover(); - scene->_item2._object1.addMover(mover, &scene->_field3EF4->_field36, this); + scene->_animatedCard._card.addMover(mover, &scene->_field3EF4->_stationPos, this); } break; case 1: - scene->_item2._object1.hide(); + scene->_animatedCard._card.hide(); - if (scene->_field3EF0 == &scene->_item6) { - subD18B5(5, 1, 4); + if (scene->_discardCard == &scene->_item6) { + scene->setCursorData(5, 1, 4); scene->subC4CEC(); } scene->setAnimationInfo(scene->_field3EF4); @@ -3672,30 +3685,30 @@ void Scene1337::Action9::signal() { switch (_actionIndex++) { case 0: { - scene->_field3EF4->_field34 = scene->_field3EF0->_field34; - scene->_field3EF4->_object1.postInit(); - scene->_field3EF4->_object1.hide(); - scene->_field3EF4->_object1.setVisage(1332); - scene->_field3EF4->_object1.setPosition(scene->_field3EF4->_field36, 0); - scene->_field3EF4->_object1.fixPriority(170); + scene->_field3EF4->_cardId = scene->_discardCard->_cardId; + scene->_field3EF4->_card.postInit(); + scene->_field3EF4->_card.hide(); + scene->_field3EF4->_card.setVisage(1332); + scene->_field3EF4->_card.setPosition(scene->_field3EF4->_stationPos, 0); + scene->_field3EF4->_card.fixPriority(170); - scene->_field3EF0->_field34 = 0; - scene->_field3EF0->_object1.remove(); + scene->_discardCard->_cardId = 0; + scene->_discardCard->_card.remove(); - scene->_item2._object1.setPosition(scene->_field3EF0->_field36, 0); - scene->_item2._object1.show(); + scene->_animatedCard._card.setPosition(scene->_discardCard->_stationPos, 0); + scene->_animatedCard._card.show(); NpcMover *mover = new NpcMover(); - scene->_item2._object1.addMover(mover, &scene->_field3EF4->_field36, this); + scene->_animatedCard._card.addMover(mover, &scene->_field3EF4->_stationPos, this); } break; case 1: - scene->_item2._object1.hide(); + scene->_animatedCard._card.hide(); scene->setAnimationInfo(scene->_field3EF4); scene->_aSound1.play(57); - if (scene->_field3EF0 == &scene->_item6) { - subD18B5(5, 1, 4); + if (scene->_discardCard == &scene->_item6) { + scene->setCursorData(5, 1, 4); scene->subC4CEC(); } @@ -3711,29 +3724,29 @@ void Scene1337::Action10::signal() { switch (_actionIndex++) { case 0: { - scene->_field3EF8->_object1.postInit(); - scene->_field3EF8->_object1.hide(); - scene->_field3EF8->_object1.setVisage(1332); - scene->_field3EF8->_object1.setPosition(scene->_field3EF8->_field36, 0); - scene->_field3EF8->_object1.fixPriority(170); - scene->_field3EF8->_field34 = scene->_field3EF0->_field34; - - scene->_field3EF0->_field34 = 0; - scene->_field3EF0->_object1.remove(); - - if (scene->_field3EF0 == &scene->_item6) { - subD18B5(5, 1, 4); + scene->_field3EF8->_card.postInit(); + scene->_field3EF8->_card.hide(); + scene->_field3EF8->_card.setVisage(1332); + scene->_field3EF8->_card.setPosition(scene->_field3EF8->_stationPos, 0); + scene->_field3EF8->_card.fixPriority(170); + scene->_field3EF8->_cardId = scene->_discardCard->_cardId; + + scene->_discardCard->_cardId = 0; + scene->_discardCard->_card.remove(); + + if (scene->_discardCard == &scene->_item6) { + scene->setCursorData(5, 1, 4); scene->subC4CEC(); } - scene->_item2._object1.setPosition(scene->_field3EF0->_field36, 0); - scene->_item2._object1.show(); + scene->_animatedCard._card.setPosition(scene->_discardCard->_stationPos, 0); + scene->_animatedCard._card.show(); NpcMover *mover = new NpcMover(); - scene->_item2._object1.addMover(mover, &scene->_field3EF8->_field36, this); + scene->_animatedCard._card.addMover(mover, &scene->_field3EF8->_stationPos, this); } break; case 1: { - scene->_item2._object1.hide(); + scene->_animatedCard._card.hide(); scene->setAnimationInfo(scene->_field3EF8); scene->_aSound1.play(57); @@ -3743,7 +3756,7 @@ void Scene1337::Action10::signal() { switch (scene->_field4240) { case 0: for (indexFound = 0; indexFound < 3; indexFound++) { - if (scene->_arrunkObj1337[0]._arr1[indexFound]._field34 == 29) { + if (scene->_gameBoardSide[0]._handCard[indexFound]._cardId == 29) { found = true; break; } @@ -3751,7 +3764,7 @@ void Scene1337::Action10::signal() { break; case 1: for (indexFound = 0; indexFound < 3; indexFound++) { - if (scene->_arrunkObj1337[1]._arr1[indexFound]._field34 == 29) { + if (scene->_gameBoardSide[1]._handCard[indexFound]._cardId == 29) { found = true; break; } @@ -3759,7 +3772,7 @@ void Scene1337::Action10::signal() { break; case 2: for (indexFound = 0; indexFound < 3; indexFound++) { - if (scene->_arrunkObj1337[2]._arr1[indexFound]._field34 == 29) { + if (scene->_gameBoardSide[2]._handCard[indexFound]._cardId == 29) { found = true; break; } @@ -3767,7 +3780,7 @@ void Scene1337::Action10::signal() { break; case 3: for (indexFound = 0; indexFound < 3; indexFound++) { - if (scene->_arrunkObj1337[3]._arr1[indexFound]._field34 == 29) { + if (scene->_gameBoardSide[3]._handCard[indexFound]._cardId == 29) { found = true; break; } @@ -3782,11 +3795,11 @@ void Scene1337::Action10::signal() { if (found) { switch (scene->_field4240) { case 0: - scene->subC51A0(&scene->_arrunkObj1337[0]._arr1[indexFound], scene->_field3EF8); + scene->subC51A0(&scene->_gameBoardSide[0]._handCard[indexFound], scene->_field3EF8); found2 = true; break; case 1: - scene->subC51A0(&scene->_arrunkObj1337[1]._arr1[indexFound], scene->_field3EF8); + scene->subC51A0(&scene->_gameBoardSide[1]._handCard[indexFound], scene->_field3EF8); found2 = true; break; case 2: @@ -3794,12 +3807,12 @@ void Scene1337::Action10::signal() { if (MessageDialog::show(USE_INTERCEPTOR, NO_MSG, YES_MSG) == 0) scene->subC4CEC(); else { - scene->subC51A0(&scene->_arrunkObj1337[2]._arr1[indexFound], scene->_field3EF8); + scene->subC51A0(&scene->_gameBoardSide[2]._handCard[indexFound], scene->_field3EF8); found2 = true; } break; case 3: - scene->subC51A0(&scene->_arrunkObj1337[3]._arr1[indexFound], scene->_field3EF8); + scene->subC51A0(&scene->_gameBoardSide[3]._handCard[indexFound], scene->_field3EF8); found2 = true; break; default: @@ -3813,14 +3826,14 @@ void Scene1337::Action10::signal() { if (scene->_field4240 == 2) { int j = 0; for (int i = 0; i <= 7; i++) { - if (scene->_arrunkObj1337[2]._arr2[i]._field34 != 0) + if (scene->_gameBoardSide[2]._outpostStation[i]._cardId != 0) ++j; } if (j <= 1) { for (int i = 0; i <= 7; i++) { - if (scene->_arrunkObj1337[2]._arr2[i]._field34 != 0) { - scene->_field3EF4 = &scene->_arrunkObj1337[2]._arr2[i]; + if (scene->_gameBoardSide[2]._outpostStation[i]._cardId != 0) { + scene->_field3EF4 = &scene->_gameBoardSide[2]._outpostStation[i]; break; } } @@ -3839,11 +3852,11 @@ void Scene1337::Action10::signal() { g_globals->_events.delay(g_globals->_sceneHandler->_delayTicks); } - scene->_item6._field36 = event.mousePos; + scene->_item6._stationPos = event.mousePos; for (int i = 0; i <= 7; i++) { - if ((scene->subC2BF8(&scene->_arrunkObj1337[2]._arr2[i], scene->_item6._field36) != 0) && (scene->_arrunkObj1337[2]._arr2[i]._field34 != 0)) { - scene->_field3EF4 = &scene->_arrunkObj1337[2]._arr2[0]; + if ((scene->subC2BF8(&scene->_gameBoardSide[2]._outpostStation[i], scene->_item6._stationPos) != 0) && (scene->_gameBoardSide[2]._outpostStation[i]._cardId != 0)) { + scene->_field3EF4 = &scene->_gameBoardSide[2]._outpostStation[0]; found2 = true; break; } @@ -3853,20 +3866,20 @@ void Scene1337::Action10::signal() { } } - scene->_field3E28[scene->_field3E26] = scene->_field3EF4->_field34; - scene->_field3E26--; - scene->_field3EF4->_field34 = 0; - scene->_field3EF4->_object1.remove(); + scene->_availableCardsPile[scene->_currentDiscardIndex] = scene->_field3EF4->_cardId; + scene->_currentDiscardIndex--; + scene->_field3EF4->_cardId = 0; + scene->_field3EF4->_card.remove(); - scene->_item2._object1.setPosition(scene->_field3EF4->_field36, 0); - scene->_item2._object1.show(); + scene->_animatedCard._card.setPosition(scene->_field3EF4->_stationPos, 0); + scene->_animatedCard._card.show(); NpcMover *mover = new NpcMover(); - scene->_item2._object1.addMover(mover, &scene->_field3EF8->_field36, this); + scene->_animatedCard._card.addMover(mover, &scene->_field3EF8->_stationPos, this); } break; case 2: - scene->_item2._object1.hide(); + scene->_animatedCard._card.hide(); scene->subC4A39(scene->_field3EF8); break; default: @@ -3881,29 +3894,29 @@ void Scene1337::Action11::signal() { switch (_actionIndex++) { case 0: { - scene->_field3EF4->_object1.postInit(); - scene->_field3EF4->_object1.hide(); - scene->_field3EF4->_object1.setVisage(1332); - scene->_field3EF4->_object1.setPosition(scene->_field3EF4->_field36, 0); - scene->_field3EF4->_object1.fixPriority(170); - scene->_field3EF4->_field34 = 25; + scene->_field3EF4->_card.postInit(); + scene->_field3EF4->_card.hide(); + scene->_field3EF4->_card.setVisage(1332); + scene->_field3EF4->_card.setPosition(scene->_field3EF4->_stationPos, 0); + scene->_field3EF4->_card.fixPriority(170); + scene->_field3EF4->_cardId = 25; if (scene->_field4240 == 2) { - scene->_item2._object1.setPosition(scene->_field3EF4->_field36, 0); - subD18B5(5, 1, 4); + scene->_animatedCard._card.setPosition(scene->_field3EF4->_stationPos, 0); + scene->setCursorData(5, 1, 4); } else { - scene->_field3EF0->_field34 = 0; - scene->_field3EF0->_object1.remove(); - scene->_item2._object1.setPosition(scene->_field3EF0->_field36, 0); + scene->_discardCard->_cardId = 0; + scene->_discardCard->_card.remove(); + scene->_animatedCard._card.setPosition(scene->_discardCard->_stationPos, 0); } - scene->_item2._object1.show(); + scene->_animatedCard._card.show(); NpcMover *mover = new NpcMover(); - scene->_item2._object1.addMover(mover, &scene->_field3EF4->_field36, this); + scene->_animatedCard._card.addMover(mover, &scene->_field3EF4->_stationPos, this); } break; case 1: { - scene->_item2._object1.hide(); + scene->_animatedCard._card.hide(); scene->setAnimationInfo(scene->_field3EF4); scene->_aSound1.play(57); @@ -3913,18 +3926,18 @@ void Scene1337::Action11::signal() { switch (scene->_field4242) { case 0: for (i = 0; i <= 3; i++) { - if (scene->_arrunkObj1337[0]._arr1[i]._field34 == 27) { + if (scene->_gameBoardSide[0]._handCard[i]._cardId == 27) { found = true; break; } } if ((found) && (scene->subC3E92(scene->_field4240) != -1)) { - scene->_field3EF0 = &scene->_arrunkObj1337[0]._arr1[i]; - scene->_field3EF4 = &scene->_arrunkObj1337[0]._arr4[0]; + scene->_discardCard = &scene->_gameBoardSide[0]._handCard[i]; + scene->_field3EF4 = &scene->_gameBoardSide[0]._emptyStationPos; if (scene->_field4240 != 0) { int tmpVal = scene->subC3E92(scene->_field4240); - scene->_field3EF8 = &scene->_arrunkObj1337[scene->_field4240]._arr1[tmpVal]; + scene->_field3EF8 = &scene->_gameBoardSide[scene->_field4240]._handCard[tmpVal]; } scene->_item1.setAction(&scene->_action12); noAction = false; @@ -3932,18 +3945,18 @@ void Scene1337::Action11::signal() { break; case 1: for (i = 0; i <= 3; i++) { - if (scene->_arrunkObj1337[1]._arr1[i]._field34 == 27) { + if (scene->_gameBoardSide[1]._handCard[i]._cardId == 27) { found = true; break; } } if ((found) && (scene->subC3E92(scene->_field4240) != -1)) { - scene->_field3EF0 = &scene->_arrunkObj1337[1]._arr1[i]; - scene->_field3EF4 = &scene->_arrunkObj1337[1]._arr4[0]; + scene->_discardCard = &scene->_gameBoardSide[1]._handCard[i]; + scene->_field3EF4 = &scene->_gameBoardSide[1]._emptyStationPos; if (scene->_field4240 != 1) { int tmpVal = scene->subC3E92(scene->_field4240); - scene->_field3EF8 = &scene->_arrunkObj1337[scene->_field4240]._arr1[tmpVal]; + scene->_field3EF8 = &scene->_gameBoardSide[scene->_field4240]._handCard[tmpVal]; } scene->_item1.setAction(&scene->_action12); noAction = false; @@ -3951,7 +3964,7 @@ void Scene1337::Action11::signal() { break; case 2: for (i = 0; i <= 3; i++) { - if (scene->_arrunkObj1337[2]._arr1[i]._field34 == 27) { + if (scene->_gameBoardSide[2]._handCard[i]._cardId == 27) { found = true; break; } @@ -3963,11 +3976,11 @@ void Scene1337::Action11::signal() { scene->subC4CEC(); else { scene->subC4CEC(); - scene->_field3EF0 = &scene->_arrunkObj1337[2]._arr1[i]; - scene->_field3EF4 = &scene->_arrunkObj1337[2]._arr4[0]; + scene->_discardCard = &scene->_gameBoardSide[2]._handCard[i]; + scene->_field3EF4 = &scene->_gameBoardSide[2]._emptyStationPos; if (scene->_field4240 != 2) { int tmpVal = scene->subC3E92(scene->_field4240); - scene->_field3EF8 = &scene->_arrunkObj1337[scene->_field4240]._arr1[tmpVal]; + scene->_field3EF8 = &scene->_gameBoardSide[scene->_field4240]._handCard[tmpVal]; } scene->_item1.setAction(&scene->_action12); noAction = false; @@ -3976,18 +3989,18 @@ void Scene1337::Action11::signal() { break; case 3: for (i = 0; i <= 3; i++) { - if (scene->_arrunkObj1337[3]._arr1[i]._field34 == 27) { + if (scene->_gameBoardSide[3]._handCard[i]._cardId == 27) { found = true; break; } } if ((found) && (scene->subC3E92(scene->_field4240) != -1)) { - scene->_field3EF0 = &scene->_arrunkObj1337[3]._arr1[i]; - scene->_field3EF4 = &scene->_arrunkObj1337[3]._arr4[0]; + scene->_discardCard = &scene->_gameBoardSide[3]._handCard[i]; + scene->_field3EF4 = &scene->_gameBoardSide[3]._emptyStationPos; if (scene->_field4240 != 3) { int tmpVal = scene->subC3E92(scene->_field4240); - scene->_field3EF8 = &scene->_arrunkObj1337[scene->_field4240]._arr1[tmpVal]; + scene->_field3EF8 = &scene->_gameBoardSide[scene->_field4240]._handCard[tmpVal]; } scene->_item1.setAction(&scene->_action12); noAction = false; @@ -4004,7 +4017,7 @@ void Scene1337::Action11::signal() { int count = 0; if (scene->_field4242 != 2) { for (i = 0; i <= 3; i++) { - if (scene->_arrunkObj1337[scene->_field4242]._arr1[i]._field34 == 0) + if (scene->_gameBoardSide[scene->_field4242]._handCard[i]._cardId == 0) ++count; } } @@ -4035,74 +4048,70 @@ void Scene1337::Action11::signal() { g_globals->_events.delay(g_globals->_sceneHandler->_delayTicks); } - scene->_item6._field36 = event.mousePos; + scene->_item6._stationPos = event.mousePos; found = false; if (scene->_field4242 != 2) { for (i = 0; i <= 3; i++) { - if ((scene->subC2BF8(&scene->_arrunkObj1337[scene->_field4242]._arr1[i], scene->_item6._field36) != 0) && (scene->_arrunkObj1337[scene->_field4242]._arr1[i]._field34 != 0)) { - scene->_field3EF8 = &scene->_arrunkObj1337[scene->_field4242]._arr1[i]; + if ((scene->subC2BF8(&scene->_gameBoardSide[scene->_field4242]._handCard[i], scene->_item6._stationPos) != 0) && (scene->_gameBoardSide[scene->_field4242]._handCard[i]._cardId != 0)) { + scene->_field3EF8 = &scene->_gameBoardSide[scene->_field4242]._handCard[i]; found = true; break; } } } } // while - scene->_field4246 = 1; + scene->_field4246 = true; scene->subC4CEC(); } else { if (scene->_field4242 != 2) { int tmpVal = scene->subC3E92(scene->_field4242); - scene->_field3EF8 = &scene->_arrunkObj1337[scene->_field4242]._arr1[tmpVal]; + scene->_field3EF8 = &scene->_gameBoardSide[scene->_field4242]._handCard[tmpVal]; } } } - scene->_field3EF0->_object1.postInit(); - scene->_field3EF0->_object1.hide(); - scene->_field3EF0->_object1.setVisage(1332); - scene->_field3EF0->_object1.setPosition(scene->_field3EF0->_field36, 0); - scene->_field3EF0->_object1.fixPriority(170); - scene->_field3EF0->_object1.setStrip2(1); - scene->_field3EF0->_field34 = scene->_field3EF8->_field34; + scene->_discardCard->_card.postInit(); + scene->_discardCard->_card.hide(); + scene->_discardCard->_card.setVisage(1332); + scene->_discardCard->_card.setPosition(scene->_discardCard->_stationPos, 0); + scene->_discardCard->_card.fixPriority(170); + scene->_discardCard->_card.setStrip2(1); + scene->_discardCard->_cardId = scene->_field3EF8->_cardId; - scene->_field3EF8->_field34 = 0; - scene->_field3EF8->_object1.remove(); + scene->_field3EF8->_cardId = 0; + scene->_field3EF8->_card.remove(); - scene->_item2._object1.setPosition(scene->_field3EF8->_field36, 0); - scene->_item2._object1.show(); + scene->_animatedCard._card.setPosition(scene->_field3EF8->_stationPos, 0); + scene->_animatedCard._card.show(); NpcMover *mover = new NpcMover(); - scene->_item2._object1.addMover(mover, &scene->_field3EF0->_field36, this); + scene->_animatedCard._card.addMover(mover, &scene->_discardCard->_stationPos, this); } break; case 2: - scene->_item2._object1.hide(); + scene->_animatedCard._card.hide(); switch (scene->_field4240) { case 0: - scene->_field3EF0->_object1.setFrame(2); - scene->_field3EF0->_object1.show(); - scene->_field423E--; - scene->_field4244 = 0; + scene->_discardCard->_card.setFrame(2); + scene->_discardCard->_card.show(); break; case 1: - scene->_field3EF0->_object1.setFrame(4); - scene->_field3EF0->_object1.show(); - scene->_field423E--; - scene->_field4244 = 0; + scene->_discardCard->_card.setFrame(4); + scene->_discardCard->_card.show(); break; case 3: - scene->_field3EF0->_object1.setFrame(3); - scene->_field3EF0->_object1.show(); - scene->_field423E--; - scene->_field4244 = 0; + scene->_discardCard->_card.setFrame(3); + scene->_discardCard->_card.show(); break; default: - scene->setAnimationInfo(scene->_field3EF0); + scene->setAnimationInfo(scene->_discardCard); break; } + scene->_currentPlayerNumb--; + scene->_field4244 = false; scene->subC4A39(scene->_field3EF4); break; default: @@ -4118,19 +4127,20 @@ void Scene1337::Action12::signal() { signal(); break; case 1: { - scene->_field3E28[scene->_field3E26] = scene->_field3EF4->_field34; - scene->_field3EF4->_field34 = scene->_field3EF0->_field34; - scene->_field3EF0->_field34 = 0; - scene->_field3EF0->_object1.remove(); - scene->_item2._object1.setPosition(scene->_field3EF0->_field36, 0); - scene->_item2._object1.show(); + scene->_availableCardsPile[scene->_currentDiscardIndex] = scene->_field3EF4->_cardId; + scene->_currentDiscardIndex++; + scene->_field3EF4->_cardId = scene->_discardCard->_cardId; + scene->_discardCard->_cardId = 0; + scene->_discardCard->_card.remove(); + scene->_animatedCard._card.setPosition(scene->_discardCard->_stationPos, 0); + scene->_animatedCard._card.show(); NpcMover *mover = new NpcMover(); - scene->_item2._object1.addMover(mover, &scene->_field3EF4->_field36, this); + scene->_animatedCard._card.addMover(mover, &scene->_field3EF4->_stationPos, this); } break; case 2: - scene->_item2._object1.hide(); + scene->_animatedCard._card.hide(); scene->setAnimationInfo(scene->_field3EF4); scene->_aSound1.play(58); if (scene->_field4242 == 2) { @@ -4139,19 +4149,19 @@ void Scene1337::Action12::signal() { switch (scene->_field4240) { case 0: for (i = 0; i <= 3; i++) { - if (scene->_arrunkObj1337[0]._arr1[i]._field34 != 0) + if (scene->_gameBoardSide[0]._handCard[i]._cardId != 0) ++count; } break; case 1: for (i = 0; i <= 3; i++) { - if (scene->_arrunkObj1337[3]._arr1[i]._field34 != 0) + if (scene->_gameBoardSide[3]._handCard[i]._cardId != 0) ++count; } break; case 3: for (i = 0; i <= 3; i++) { - if (scene->_arrunkObj1337[3]._arr1[i]._field34 != 0) + if (scene->_gameBoardSide[3]._handCard[i]._cardId != 0) ++count; } break; @@ -4186,13 +4196,13 @@ void Scene1337::Action12::signal() { g_globals->_events.delay(g_globals->_sceneHandler->_delayTicks); } - scene->_item6._field36 = event.mousePos; + scene->_item6._stationPos = event.mousePos; if (scene->_field4240 == 0) { for (i = 0; i <= 3; i++) { - if ((scene->subC2BF8(&scene->_arrunkObj1337[0]._arr1[i], scene->_item6._field36) != 0) && (scene->_arrunkObj1337[0]._arr1[i]._field34 != 0)) { + if ((scene->subC2BF8(&scene->_gameBoardSide[0]._handCard[i], scene->_item6._stationPos) != 0) && (scene->_gameBoardSide[0]._handCard[i]._cardId != 0)) { found = true; - scene->_field3EF8 = &scene->_arrunkObj1337[0]._arr1[i]; + scene->_field3EF8 = &scene->_gameBoardSide[0]._handCard[i]; break; } } @@ -4200,9 +4210,9 @@ void Scene1337::Action12::signal() { if (scene->_field4240 == 3) { for (i = 0; i <= 3; i++) { - if ((scene->subC2BF8(&scene->_arrunkObj1337[3]._arr1[i], scene->_item6._field36) != 0) && (scene->_arrunkObj1337[3]._arr1[i]._field34 != 0)) { + if ((scene->subC2BF8(&scene->_gameBoardSide[3]._handCard[i], scene->_item6._stationPos) != 0) && (scene->_gameBoardSide[3]._handCard[i]._cardId != 0)) { found = true; - scene->_field3EF8 = &scene->_arrunkObj1337[3]._arr1[i]; + scene->_field3EF8 = &scene->_gameBoardSide[3]._handCard[i]; break; } } @@ -4210,9 +4220,9 @@ void Scene1337::Action12::signal() { if (scene->_field4240 == 1) { for (i = 0; i <= 3; i++) { - if ((scene->subC2BF8(&scene->_arrunkObj1337[1]._arr1[i], scene->_item6._field36) != 0) && (scene->_arrunkObj1337[1]._arr1[i]._field34 != 0)) { + if ((scene->subC2BF8(&scene->_gameBoardSide[1]._handCard[i], scene->_item6._stationPos) != 0) && (scene->_gameBoardSide[1]._handCard[i]._cardId != 0)) { found = true; - scene->_field3EF8 = &scene->_arrunkObj1337[1]._arr1[i]; + scene->_field3EF8 = &scene->_gameBoardSide[1]._handCard[i]; break; } } @@ -4223,55 +4233,55 @@ void Scene1337::Action12::signal() { if (scene->_field4240 != 1) { switch (scene->_field4240) { case 0: - scene->_field3EF8 = &scene->_arrunkObj1337[0]._arr1[scene->subC3E92(0)]; + scene->_field3EF8 = &scene->_gameBoardSide[0]._handCard[scene->subC3E92(0)]; break; case 3: - scene->_field3EF8 = &scene->_arrunkObj1337[3]._arr1[scene->subC3E92(3)]; + scene->_field3EF8 = &scene->_gameBoardSide[3]._handCard[scene->subC3E92(3)]; break; default: break; } } else { - scene->_field3EF8 = &scene->_arrunkObj1337[1]._arr1[scene->subC3E92(1)]; + scene->_field3EF8 = &scene->_gameBoardSide[1]._handCard[scene->subC3E92(1)]; } } - scene->_field3EF0->_object1.postInit(); - scene->_field3EF0->_object1.hide(); - scene->_field3EF0->_object1.setVisage(1332); - scene->_field3EF0->_object1.setPosition(scene->_field3EF0->_field36); - scene->_field3EF0->_object1.fixPriority(170); - scene->_field3EF0->_object1.setStrip2(1); - scene->_field3EF0->_field34 = scene->_field3EF8->_field34; + scene->_discardCard->_card.postInit(); + scene->_discardCard->_card.hide(); + scene->_discardCard->_card.setVisage(1332); + scene->_discardCard->_card.setPosition(scene->_discardCard->_stationPos); + scene->_discardCard->_card.fixPriority(170); + scene->_discardCard->_card.setStrip2(1); + scene->_discardCard->_cardId = scene->_field3EF8->_cardId; - scene->_field3EF8->_field34 = 0; - scene->_field3EF8->_object1.remove(); + scene->_field3EF8->_cardId = 0; + scene->_field3EF8->_card.remove(); - scene->_item2._object1.setPosition(scene->_field3EF8->_field36); - scene->_item2._object1.show(); + scene->_animatedCard._card.setPosition(scene->_field3EF8->_stationPos); + scene->_animatedCard._card.show(); scene->_aSound1.play(57); NpcMover *mover = new NpcMover(); - scene->_item2._object1.addMover(mover, &scene->_field3EF0->_field36, this); + scene->_animatedCard._card.addMover(mover, &scene->_discardCard->_stationPos, this); } break; case 3: - scene->_item2._object1.hide(); + scene->_animatedCard._card.hide(); switch (scene->_field4242) { case 0: - scene->_field3EF0->_object1.setFrame2(2); - scene->_field3EF0->_object1.show(); + scene->_discardCard->_card.setFrame2(2); + scene->_discardCard->_card.show(); break; case 1: - scene->_field3EF0->_object1.setFrame2(4); - scene->_field3EF0->_object1.show(); + scene->_discardCard->_card.setFrame2(4); + scene->_discardCard->_card.show(); break; case 3: - scene->_field3EF0->_object1.setFrame2(3); - scene->_field3EF0->_object1.show(); + scene->_discardCard->_card.setFrame2(3); + scene->_discardCard->_card.show(); break; default: - scene->setAnimationInfo(scene->_field3EF0); + scene->setAnimationInfo(scene->_discardCard); break; } scene->subC4A39(scene->_field3EF4); @@ -4286,23 +4296,23 @@ void Scene1337::Action13::signal() { switch (_actionIndex++) { case 0: { - scene->_field3E28[scene->_field3E26] = scene->_field3EF4->_field34; - scene->_field3E26--; + scene->_availableCardsPile[scene->_currentDiscardIndex] = scene->_field3EF4->_cardId; + scene->_currentDiscardIndex--; - scene->_field3EF4->_field34 = scene->_field3EF0->_field34; + scene->_field3EF4->_cardId = scene->_discardCard->_cardId; - scene->_field3EF0->_field34 = 0; - scene->_field3EF0->_object1.remove(); + scene->_discardCard->_cardId = 0; + scene->_discardCard->_card.remove(); - scene->_item2._object1.setPosition(scene->_field3EF0->_field36, 0); - scene->_item2._object1.show(); + scene->_animatedCard._card.setPosition(scene->_discardCard->_stationPos, 0); + scene->_animatedCard._card.show(); NpcMover *mover = new NpcMover(); - scene->_item2._object1.addMover(mover, &scene->_field3EF4->_field36, this); + scene->_animatedCard._card.addMover(mover, &scene->_field3EF4->_stationPos, this); } break; case 1: - scene->_item2._object1.hide(); + scene->_animatedCard._card.hide(); scene->setAnimationInfo(scene->_field3EF4); scene->_aSound1.play(58); signal(); @@ -4331,105 +4341,105 @@ void Scene1337::postInit(SceneObjectList *OwnerList) { _unkFctPtr412 = NULL; - _field3EF0 = NULL; - _field3EF4 = NULL; - _field3EF8 = NULL; - - _arrunkObj1337[2]._arr1[0]._field36 = Common::Point(10, 174); - _arrunkObj1337[2]._arr1[1]._field36 = Common::Point(37, 174); - _arrunkObj1337[2]._arr1[2]._field36 = Common::Point(64, 174); - _arrunkObj1337[2]._arr1[3]._field36 = Common::Point(91, 174); - - _arrunkObj1337[2]._arr2[0]._field36 = Common::Point(119, 174); - _arrunkObj1337[2]._arr2[1]._field36 = Common::Point(119, 148); - _arrunkObj1337[2]._arr2[2]._field36 = Common::Point(119, 122); - _arrunkObj1337[2]._arr2[3]._field36 = Common::Point(145, 122); - _arrunkObj1337[2]._arr2[4]._field36 = Common::Point(171, 122); - _arrunkObj1337[2]._arr2[5]._field36 = Common::Point(171, 148); - _arrunkObj1337[2]._arr2[6]._field36 = Common::Point(171, 174); - _arrunkObj1337[2]._arr2[7]._field36 = Common::Point(145, 174); - - _arrunkObj1337[2]._arr3[0]._field36 = Common::Point(199, 174); - - _arrunkObj1337[2]._arr4[0]._field36 = Common::Point(145, 148); - - _arrunkObj1337[2]._fieldB94 = Common::Point(10, 174); - _arrunkObj1337[2]._fieldB98 = Common::Point(37, 174); - _arrunkObj1337[2]._fieldB9C = Common::Point(64, 174); - _arrunkObj1337[2]._fieldBA0 = Common::Point(91, 174); - _arrunkObj1337[2]._fieldBA4 = 2; - - _arrunkObj1337[3]._arr1[0]._field36 = Common::Point(14, 14); - _arrunkObj1337[3]._arr1[1]._field36 = Common::Point(14, 36); - _arrunkObj1337[3]._arr1[2]._field36 = Common::Point(14, 58); - _arrunkObj1337[3]._arr1[3]._field36 = Common::Point(14, 80); - - _arrunkObj1337[3]._arr2[0]._field36 = Common::Point(37, 66); - _arrunkObj1337[3]._arr2[1]._field36 = Common::Point(63, 66); - _arrunkObj1337[3]._arr2[2]._field36 = Common::Point(89, 66); - _arrunkObj1337[3]._arr2[3]._field36 = Common::Point(89, 92); - _arrunkObj1337[3]._arr2[4]._field36 = Common::Point(89, 118); - _arrunkObj1337[3]._arr2[5]._field36 = Common::Point(63, 118); - _arrunkObj1337[3]._arr2[6]._field36 = Common::Point(37, 118); - _arrunkObj1337[3]._arr2[7]._field36 = Common::Point(37, 92); - - _arrunkObj1337[3]._arr3[0]._field36 = Common::Point(37, 145); - - _arrunkObj1337[3]._arr4[0]._field36 = Common::Point(63, 92); - - _arrunkObj1337[3]._fieldB94 = Common::Point(14, 14); - _arrunkObj1337[3]._fieldB98 = Common::Point(14, 36); - _arrunkObj1337[3]._fieldB9C = Common::Point(14, 58); - _arrunkObj1337[3]._fieldBA0 = Common::Point(14, 80); - _arrunkObj1337[3]._fieldBA4 = 3; - - _arrunkObj1337[0]._arr1[0]._field36 = Common::Point(280, 5); - _arrunkObj1337[0]._arr1[1]._field36 = Common::Point(253, 5); - _arrunkObj1337[0]._arr1[2]._field36 = Common::Point(226, 5); - _arrunkObj1337[0]._arr1[3]._field36 = Common::Point(199, 5); - - _arrunkObj1337[0]._arr2[0]._field36 = Common::Point(171, 16); - _arrunkObj1337[0]._arr2[1]._field36 = Common::Point(171, 42); - _arrunkObj1337[0]._arr2[2]._field36 = Common::Point(171, 68); - _arrunkObj1337[0]._arr2[3]._field36 = Common::Point(145, 68); - _arrunkObj1337[0]._arr2[4]._field36 = Common::Point(119, 68); - _arrunkObj1337[0]._arr2[5]._field36 = Common::Point(119, 42); - _arrunkObj1337[0]._arr2[6]._field36 = Common::Point(119, 16); - _arrunkObj1337[0]._arr2[7]._field36 = Common::Point(145, 16); - - _arrunkObj1337[0]._arr3[0]._field36 = Common::Point(91, 16); - - _arrunkObj1337[0]._arr4[0]._field36 = Common::Point(145, 42); - - _arrunkObj1337[0]._fieldB94 = Common::Point(280, 5); - _arrunkObj1337[0]._fieldB98 = Common::Point(253, 5); - _arrunkObj1337[0]._fieldB9C = Common::Point(226, 5); - _arrunkObj1337[0]._fieldBA0 = Common::Point(199, 5); - _arrunkObj1337[0]._fieldBA4 = 2; - - _arrunkObj1337[1]._arr1[0]._field36 = Common::Point(283, 146); - _arrunkObj1337[1]._arr1[1]._field36 = Common::Point(283, 124); - _arrunkObj1337[1]._arr1[2]._field36 = Common::Point(283, 102); - _arrunkObj1337[1]._arr1[3]._field36 = Common::Point(283, 80); - - _arrunkObj1337[1]._arr2[0]._field36 = Common::Point(253, 122); - _arrunkObj1337[1]._arr2[1]._field36 = Common::Point(227, 122); - _arrunkObj1337[1]._arr2[2]._field36 = Common::Point(201, 122); - _arrunkObj1337[1]._arr2[3]._field36 = Common::Point(201, 96); - _arrunkObj1337[1]._arr2[4]._field36 = Common::Point(201, 70); - _arrunkObj1337[1]._arr2[5]._field36 = Common::Point(227, 70); - _arrunkObj1337[1]._arr2[6]._field36 = Common::Point(253, 70); - _arrunkObj1337[1]._arr2[7]._field36 = Common::Point(253, 96); - - _arrunkObj1337[1]._arr3[0]._field36 = Common::Point(253, 43); - - _arrunkObj1337[1]._arr4[0]._field36 = Common::Point(227, 96); - - _arrunkObj1337[1]._fieldB94 = Common::Point(283, 146); - _arrunkObj1337[1]._fieldB98 = Common::Point(283, 124); - _arrunkObj1337[1]._fieldB9C = Common::Point(283, 102); - _arrunkObj1337[1]._fieldBA0 = Common::Point(283, 80); - _arrunkObj1337[1]._fieldBA4 = 4; + _discardCard = nullptr; + _field3EF4 = nullptr; + _field3EF8 = nullptr; + + _gameBoardSide[2]._handCard[0]._stationPos = Common::Point(10, 174); + _gameBoardSide[2]._handCard[1]._stationPos = Common::Point(37, 174); + _gameBoardSide[2]._handCard[2]._stationPos = Common::Point(64, 174); + _gameBoardSide[2]._handCard[3]._stationPos = Common::Point(91, 174); + + _gameBoardSide[2]._outpostStation[0]._stationPos = Common::Point(119, 174); + _gameBoardSide[2]._outpostStation[1]._stationPos = Common::Point(119, 148); + _gameBoardSide[2]._outpostStation[2]._stationPos = Common::Point(119, 122); + _gameBoardSide[2]._outpostStation[3]._stationPos = Common::Point(145, 122); + _gameBoardSide[2]._outpostStation[4]._stationPos = Common::Point(171, 122); + _gameBoardSide[2]._outpostStation[5]._stationPos = Common::Point(171, 148); + _gameBoardSide[2]._outpostStation[6]._stationPos = Common::Point(171, 174); + _gameBoardSide[2]._outpostStation[7]._stationPos = Common::Point(145, 174); + + _gameBoardSide[2]._delayCard._stationPos = Common::Point(199, 174); + + _gameBoardSide[2]._emptyStationPos._stationPos = Common::Point(145, 148); + + _gameBoardSide[2]._card1Pos = Common::Point(10, 174); + _gameBoardSide[2]._card2Pos = Common::Point(37, 174); + _gameBoardSide[2]._card3Pos = Common::Point(64, 174); + _gameBoardSide[2]._card4Pos = Common::Point(91, 174); + _gameBoardSide[2]._frameNum = 2; + + _gameBoardSide[3]._handCard[0]._stationPos = Common::Point(14, 14); + _gameBoardSide[3]._handCard[1]._stationPos = Common::Point(14, 36); + _gameBoardSide[3]._handCard[2]._stationPos = Common::Point(14, 58); + _gameBoardSide[3]._handCard[3]._stationPos = Common::Point(14, 80); + + _gameBoardSide[3]._outpostStation[0]._stationPos = Common::Point(37, 66); + _gameBoardSide[3]._outpostStation[1]._stationPos = Common::Point(63, 66); + _gameBoardSide[3]._outpostStation[2]._stationPos = Common::Point(89, 66); + _gameBoardSide[3]._outpostStation[3]._stationPos = Common::Point(89, 92); + _gameBoardSide[3]._outpostStation[4]._stationPos = Common::Point(89, 118); + _gameBoardSide[3]._outpostStation[5]._stationPos = Common::Point(63, 118); + _gameBoardSide[3]._outpostStation[6]._stationPos = Common::Point(37, 118); + _gameBoardSide[3]._outpostStation[7]._stationPos = Common::Point(37, 92); + + _gameBoardSide[3]._delayCard._stationPos = Common::Point(37, 145); + + _gameBoardSide[3]._emptyStationPos._stationPos = Common::Point(63, 92); + + _gameBoardSide[3]._card1Pos = Common::Point(14, 14); + _gameBoardSide[3]._card2Pos = Common::Point(14, 36); + _gameBoardSide[3]._card3Pos = Common::Point(14, 58); + _gameBoardSide[3]._card4Pos = Common::Point(14, 80); + _gameBoardSide[3]._frameNum = 3; + + _gameBoardSide[0]._handCard[0]._stationPos = Common::Point(280, 5); + _gameBoardSide[0]._handCard[1]._stationPos = Common::Point(253, 5); + _gameBoardSide[0]._handCard[2]._stationPos = Common::Point(226, 5); + _gameBoardSide[0]._handCard[3]._stationPos = Common::Point(199, 5); + + _gameBoardSide[0]._outpostStation[0]._stationPos = Common::Point(171, 16); + _gameBoardSide[0]._outpostStation[1]._stationPos = Common::Point(171, 42); + _gameBoardSide[0]._outpostStation[2]._stationPos = Common::Point(171, 68); + _gameBoardSide[0]._outpostStation[3]._stationPos = Common::Point(145, 68); + _gameBoardSide[0]._outpostStation[4]._stationPos = Common::Point(119, 68); + _gameBoardSide[0]._outpostStation[5]._stationPos = Common::Point(119, 42); + _gameBoardSide[0]._outpostStation[6]._stationPos = Common::Point(119, 16); + _gameBoardSide[0]._outpostStation[7]._stationPos = Common::Point(145, 16); + + _gameBoardSide[0]._delayCard._stationPos = Common::Point(91, 16); + + _gameBoardSide[0]._emptyStationPos._stationPos = Common::Point(145, 42); + + _gameBoardSide[0]._card1Pos = Common::Point(280, 5); + _gameBoardSide[0]._card2Pos = Common::Point(253, 5); + _gameBoardSide[0]._card3Pos = Common::Point(226, 5); + _gameBoardSide[0]._card4Pos = Common::Point(199, 5); + _gameBoardSide[0]._frameNum = 2; + + _gameBoardSide[1]._handCard[0]._stationPos = Common::Point(283, 146); + _gameBoardSide[1]._handCard[1]._stationPos = Common::Point(283, 124); + _gameBoardSide[1]._handCard[2]._stationPos = Common::Point(283, 102); + _gameBoardSide[1]._handCard[3]._stationPos = Common::Point(283, 80); + + _gameBoardSide[1]._outpostStation[0]._stationPos = Common::Point(253, 122); + _gameBoardSide[1]._outpostStation[1]._stationPos = Common::Point(227, 122); + _gameBoardSide[1]._outpostStation[2]._stationPos = Common::Point(201, 122); + _gameBoardSide[1]._outpostStation[3]._stationPos = Common::Point(201, 96); + _gameBoardSide[1]._outpostStation[4]._stationPos = Common::Point(201, 70); + _gameBoardSide[1]._outpostStation[5]._stationPos = Common::Point(227, 70); + _gameBoardSide[1]._outpostStation[6]._stationPos = Common::Point(253, 70); + _gameBoardSide[1]._outpostStation[7]._stationPos = Common::Point(253, 96); + + _gameBoardSide[1]._delayCard._stationPos = Common::Point(253, 43); + + _gameBoardSide[1]._emptyStationPos._stationPos = Common::Point(227, 96); + + _gameBoardSide[1]._card1Pos = Common::Point(283, 146); + _gameBoardSide[1]._card2Pos = Common::Point(283, 124); + _gameBoardSide[1]._card3Pos = Common::Point(283, 102); + _gameBoardSide[1]._card4Pos = Common::Point(283, 80); + _gameBoardSide[1]._frameNum = 4; subPostInit(); } @@ -4472,13 +4482,19 @@ void Scene1337::process(Event &event) { } void Scene1337::dispatch() { - if (_field424C == 0) { - ++_field424E; - if (_field424E == 4) { - _field424C = 1; + if (_instructionsDisplayedFl == 0) { + ++_instructionsWaitCount; + if (_instructionsWaitCount == 4) { + _instructionsDisplayedFl = 1; suggestInstructions(); } } + + // The following code is in the original in sceneHandler::process(), + // which is terrible as it's checked in every scene of the game. + setCursorData(5, _cursorCurStrip, _cursorCurFrame); + // + Scene::dispatch(); } @@ -4489,24 +4505,24 @@ void Scene1337::actionDisplay(int resNum, int lineNum, int x, int y, int arg5, i SceneItem::display(resNum, lineNum, SET_X, x, SET_Y, y, SET_KEEP_ONSCREEN, 0, SET_WIDTH, width, SET_POS_MODE, -1, SET_TEXT_MODE, textMode, SET_FONT, fontNum, SET_FG_COLOR, colFG, SET_EXT_BGCOLOR, colBGExt, SET_EXT_FGCOLOR, colFGExt, LIST_END); } -void Scene1337::setAnimationInfo(unkObj1337sub1 *subObj) { +void Scene1337::setAnimationInfo(Card *subObj) { if (!subObj) return; - if (subObj->_field34 > 9) { - if (subObj->_field34 > 25) { - subObj->_object1.setStrip2(4); - subObj->_object1.setFrame(subObj->_field34 - 25); + if (subObj->_cardId > 9) { + if (subObj->_cardId > 25) { + subObj->_card.setStrip2(4); + subObj->_card.setFrame(subObj->_cardId - 25); } else { - subObj->_object1.setStrip2(3); - subObj->_object1.setFrame(subObj->_field34 - 9); + subObj->_card.setStrip2(3); + subObj->_card.setFrame(subObj->_cardId - 9); } } else { - subObj->_object1.setStrip2(2); - subObj->_object1.setFrame(subObj->_field34); + subObj->_card.setStrip2(2); + subObj->_card.setFrame(subObj->_cardId); } - subObj->_object1.show(); + subObj->_card.show(); R2_GLOBALS._sceneObjects->draw(); } @@ -4517,26 +4533,26 @@ void Scene1337::subC20E5() { void Scene1337::subC20F9() { switch (_field424A) { case -1: - ++_field423E; - if (_field423E == 3) - _field423E = 0; + ++_currentPlayerNumb; + if (_currentPlayerNumb == 3) + _currentPlayerNumb = 0; - if (_field4244 == 1) { - _object1.show(); - switch (_field423E) { + if (_field4244) { + _currentPlayerArrow.show(); + switch (_currentPlayerNumb) { case 0: - _object1.setStrip(3); + _currentPlayerArrow.setStrip(3); break; case 1: - _object1.setStrip(4); + _currentPlayerArrow.setStrip(4); break; case 2: subD1975(174, 107); - _object1.setStrip(1); + _currentPlayerArrow.setStrip(1); break; case 3: subC4CEC(); - _object1.setStrip(2); + _currentPlayerArrow.setStrip(2); break; default: break; @@ -4592,15 +4608,15 @@ void Scene1337::subC20F9() { } void Scene1337::subC2586() { - if (_field4244 != 0) - _object1.hide(); + if (_field4244) + _currentPlayerArrow.hide(); - switch (_field423E) { + switch (_currentPlayerNumb) { case 2: subC4CD2(); - if (_field4246 == 1) + if (_field4246) actionDisplay(1330, 114, 159, 10, 1, 200, 0, 7, 0, 154, 154); - _field4246 = 0; + _field4246 = false; // No break on purpose case 0: // No break on purpose @@ -4612,7 +4628,7 @@ void Scene1337::subC2586() { break; } - _field4244 = 1; + _field4244 = true; } @@ -4655,7 +4671,7 @@ bool Scene1337::subC2687(int arg1) { } int Scene1337::subC26CB(int arg1, int arg2) { - if ((_arrunkObj1337[arg1]._arr1[arg2]._field34 > 1) && (_arrunkObj1337[arg1]._arr1[arg2]._field34 <= 9)) { + if ((_gameBoardSide[arg1]._handCard[arg2]._cardId > 1) && (_gameBoardSide[arg1]._handCard[arg2]._cardId <= 9)) { return arg2; } @@ -4664,7 +4680,7 @@ int Scene1337::subC26CB(int arg1, int arg2) { int Scene1337::subC2719(int arg1) { for (int i = 0; i <= 3; i++) { - if (_arrunkObj1337[arg1]._arr1[i]._field34 == 1) + if (_gameBoardSide[arg1]._handCard[i]._cardId == 1) return i; } @@ -4673,7 +4689,7 @@ int Scene1337::subC2719(int arg1) { int Scene1337::subC274D(int arg1) { for (int i = 0; i <= 3; i++) { - if (_arrunkObj1337[arg1]._arr1[i]._field34 == 13) + if (_gameBoardSide[arg1]._handCard[i]._cardId == 13) return i; } @@ -4682,7 +4698,7 @@ int Scene1337::subC274D(int arg1) { int Scene1337::subC2781(int arg1) { for (int i = 0; i <= 3; i++) { - if (_arrunkObj1337[arg1]._arr1[i]._field34 == 25) + if (_gameBoardSide[arg1]._handCard[i]._cardId == 25) return i; } @@ -4735,7 +4751,7 @@ void Scene1337::subC2835(int arg1) { switch (arg1) { case 0: for (i = 0; i <= 3; i++) { - if (subC27F9(_arrunkObj1337[arg1]._arr1[i]._field34) != -1) { + if (subC27F9(_gameBoardSide[arg1]._handCard[i]._cardId) != -1) { found = true; break; } @@ -4745,7 +4761,7 @@ void Scene1337::subC2835(int arg1) { break; for (i = 0; i <= 3; i++) { - if (subC27B5(_arrunkObj1337[arg1]._arr1[i]._field34) != -1) { + if (subC27B5(_gameBoardSide[arg1]._handCard[i]._cardId) != -1) { found = true; break; } @@ -4755,7 +4771,7 @@ void Scene1337::subC2835(int arg1) { break; for (i = 0; i <= 3; i++) { - if ((_arrunkObj1337[arg1]._arr1[i]._field34 > 1) && (_arrunkObj1337[arg1]._arr1[i]._field34 <= 9)) { + if ((_gameBoardSide[arg1]._handCard[i]._cardId > 1) && (_gameBoardSide[arg1]._handCard[i]._cardId <= 9)) { found = true; break; } @@ -4765,7 +4781,7 @@ void Scene1337::subC2835(int arg1) { break; for (i = 0; i <= 3; i++) { - if ((_arrunkObj1337[arg1]._arr1[i]._field34 >= 26) && (_arrunkObj1337[arg1]._arr1[i]._field34 <= 33)) { + if ((_gameBoardSide[arg1]._handCard[i]._cardId >= 26) && (_gameBoardSide[arg1]._handCard[i]._cardId <= 33)) { found = true; break; } @@ -4775,7 +4791,7 @@ void Scene1337::subC2835(int arg1) { break; for (i = 0; i <= 3; i++) { - if (_arrunkObj1337[arg1]._arr1[i]._field34 == 1) { + if (_gameBoardSide[arg1]._handCard[i]._cardId == 1) { found = true; break; } @@ -4785,7 +4801,7 @@ void Scene1337::subC2835(int arg1) { break; for (i = 0; i <= 3; i++) { - if (_arrunkObj1337[arg1]._arr1[i]._field34 == 25) { + if (_gameBoardSide[arg1]._handCard[i]._cardId == 25) { found = true; break; } @@ -4795,7 +4811,7 @@ void Scene1337::subC2835(int arg1) { break; for (i = 0; i <= 3; i++) { - if (_arrunkObj1337[arg1]._arr1[i]._field34 == 13) { + if (_gameBoardSide[arg1]._handCard[i]._cardId == 13) { found = true; break; } @@ -4803,7 +4819,7 @@ void Scene1337::subC2835(int arg1) { break; case 1: for (i = 0; i <= 3; i++) { - if ((_arrunkObj1337[arg1]._arr1[i]._field34 >= 26) && (_arrunkObj1337[arg1]._arr1[i]._field34 <= 33)) { + if ((_gameBoardSide[arg1]._handCard[i]._cardId >= 26) && (_gameBoardSide[arg1]._handCard[i]._cardId <= 33)) { found = true; break; } @@ -4813,7 +4829,7 @@ void Scene1337::subC2835(int arg1) { break; for (i = 0; i <= 3; i++) { - if (_arrunkObj1337[arg1]._arr1[i]._field34 == 1) { + if (_gameBoardSide[arg1]._handCard[i]._cardId == 1) { found = true; break; } @@ -4823,7 +4839,7 @@ void Scene1337::subC2835(int arg1) { break; for (i = 0; i <= 3; i++) { - if ((_arrunkObj1337[arg1]._arr1[i]._field34 > 1) && (_arrunkObj1337[arg1]._arr1[i]._field34 <= 9)) { + if ((_gameBoardSide[arg1]._handCard[i]._cardId > 1) && (_gameBoardSide[arg1]._handCard[i]._cardId <= 9)) { found = true; break; } @@ -4833,7 +4849,7 @@ void Scene1337::subC2835(int arg1) { break; for (i = 0; i <= 3; i++) { - if (subC27F9(_arrunkObj1337[arg1]._arr1[i]._field34) != -1) { + if (subC27F9(_gameBoardSide[arg1]._handCard[i]._cardId) != -1) { found = true; break; } @@ -4843,7 +4859,7 @@ void Scene1337::subC2835(int arg1) { break; for (i = 0; i <= 3; i++) { - if (subC27B5(_arrunkObj1337[arg1]._arr1[i]._field34) != -1) { + if (subC27B5(_gameBoardSide[arg1]._handCard[i]._cardId) != -1) { found = true; break; } @@ -4853,7 +4869,7 @@ void Scene1337::subC2835(int arg1) { break; for (i = 0; i <= 3; i++) { - if (_arrunkObj1337[arg1]._arr1[i]._field34 == 25) { + if (_gameBoardSide[arg1]._handCard[i]._cardId == 25) { found = true; break; } @@ -4863,7 +4879,7 @@ void Scene1337::subC2835(int arg1) { break; for (i = 0; i <= 3; i++) { - if (_arrunkObj1337[arg1]._arr1[i]._field34 == 13) { + if (_gameBoardSide[arg1]._handCard[i]._cardId == 13) { found = true; break; } @@ -4874,14 +4890,14 @@ void Scene1337::subC2835(int arg1) { return; } - subC4A39(&_arrunkObj1337[arg1]._arr1[i]); + subC4A39(&_gameBoardSide[arg1]._handCard[i]); } -bool Scene1337::subC2BF8(unkObj1337sub1 *subObj1, Common::Point pt) { - if ((subObj1->_field36.x > pt.x) || (subObj1->_field36.x + 24 < pt.x)) +bool Scene1337::subC2BF8(Card *subObj1, Common::Point pt) { + if ((subObj1->_stationPos.x > pt.x) || (subObj1->_stationPos.x + 24 < pt.x)) return false; - if ((subObj1->_field36.y > pt.y) || (subObj1->_field36.y + 24 < pt.y)) + if ((subObj1->_stationPos.y > pt.y) || (subObj1->_stationPos.y + 24 < pt.y)) return false; return true; @@ -4890,8 +4906,8 @@ bool Scene1337::subC2BF8(unkObj1337sub1 *subObj1, Common::Point pt) { void Scene1337::subC2C2F() { bool found = true; - if (_arrunkObj1337[3]._arr3[0]._field34 != 0) { - switch (_arrunkObj1337[3]._arr3[0]._field34) { + if (_gameBoardSide[3]._delayCard._cardId != 0) { + switch (_gameBoardSide[3]._delayCard._cardId) { case 10: // No break on purpose case 12: @@ -4907,14 +4923,14 @@ void Scene1337::subC2C2F() { case 20: // No break on purpose case 21: - subC4A39(&_arrunkObj1337[3]._arr3[0]); + subC4A39(&_gameBoardSide[3]._delayCard); found = false; break; default: found = false; int i; for (i = 0; i <= 3; i++) { - if (subC3386(_arrunkObj1337[3]._arr3[0]._field34, _arrunkObj1337[3]._arr1[i]._field34)) { + if (subC3386(_gameBoardSide[3]._delayCard._cardId, _gameBoardSide[3]._handCard[i]._cardId)) { found = true; break; } @@ -4922,7 +4938,7 @@ void Scene1337::subC2C2F() { if (found) { found = false; - subC34A1(&_arrunkObj1337[3]._arr1[i], &_arrunkObj1337[3]._arr3[0]); + subC34A1(&_gameBoardSide[3]._handCard[i], &_gameBoardSide[3]._delayCard); } break; } @@ -4933,12 +4949,12 @@ void Scene1337::subC2C2F() { int randIndx = R2_GLOBALS._randomSource.getRandomNumber(3); - if (_arrunkObj1337[3]._arr1[randIndx]._field34 == 1) { + if (_gameBoardSide[3]._handCard[randIndx]._cardId == 1) { found = false; for (int i = 0; i <= 7; i++) { - if ((_arrunkObj1337[3]._arr2[i]._field34 == 0) && (!subC2687(_arrunkObj1337[3]._arr3[0]._field34))) { - subC340B(&_arrunkObj1337[3]._arr1[randIndx], &_arrunkObj1337[3]._arr2[i]); + if ((_gameBoardSide[3]._outpostStation[i]._cardId == 0) && (!subC2687(_gameBoardSide[3]._delayCard._cardId))) { + subC340B(&_gameBoardSide[3]._handCard[randIndx], &_gameBoardSide[3]._outpostStation[i]); found = true; break; } @@ -4947,11 +4963,11 @@ void Scene1337::subC2C2F() { if (found) { return; } - } else if (_arrunkObj1337[3]._arr1[randIndx]._field34 <= 9) { + } else if (_gameBoardSide[3]._handCard[randIndx]._cardId <= 9) { found = false; for (int i = 0; i <= 7; i++) { - if (_arrunkObj1337[3]._arr2[i]._field34 == _arrunkObj1337[3]._arr1[randIndx]._field34) { + if (_gameBoardSide[3]._outpostStation[i]._cardId == _gameBoardSide[3]._handCard[randIndx]._cardId) { found = true; break; } @@ -4959,18 +4975,18 @@ void Scene1337::subC2C2F() { if (!found) { for (int i = 0; i <= 7; i++) { - if ((_arrunkObj1337[3]._arr2[i]._field34 == 1) && (!subC2687(_arrunkObj1337[3]._arr3[0]._field34))) { + if ((_gameBoardSide[3]._outpostStation[i]._cardId == 1) && (!subC2687(_gameBoardSide[3]._delayCard._cardId))) { int tmpVal = 0; for (int j = 0; j <= 7; j++) { - if ((_arrunkObj1337[3]._arr2[j]._field34 > 1) && (_arrunkObj1337[3]._arr2[j]._field34 <= 9)) + if ((_gameBoardSide[3]._outpostStation[j]._cardId > 1) && (_gameBoardSide[3]._outpostStation[j]._cardId <= 9)) ++tmpVal; } if (tmpVal == 7) _field424A = 3; - subC33C0(&_arrunkObj1337[3]._arr1[randIndx], &_arrunkObj1337[3]._arr2[i]); + subC33C0(&_gameBoardSide[3]._handCard[randIndx], &_gameBoardSide[3]._outpostStation[i]); found = true; break; } @@ -4978,24 +4994,24 @@ void Scene1337::subC2C2F() { if (found) return; } - } else if (_arrunkObj1337[3]._arr1[randIndx]._field34 == 13) { + } else if (_gameBoardSide[3]._handCard[randIndx]._cardId == 13) { int tmpVal = subC331B(3); if (tmpVal != -1) { - subC358E(&_arrunkObj1337[3]._arr1[randIndx], tmpVal); + subC358E(&_gameBoardSide[3]._handCard[randIndx], tmpVal); return; } - } else if (_arrunkObj1337[3]._arr1[randIndx]._field34 == 25) { + } else if (_gameBoardSide[3]._handCard[randIndx]._cardId == 25) { int tmpVal = -1; found = false; int tmpRandIndx = R2_GLOBALS._randomSource.getRandomNumber(3); for (int i = 0; i <= 3; i++) { if ( (tmpRandIndx != 3) - && ( (_arrunkObj1337[tmpRandIndx]._arr1[0]._field34 != 0) - || (_arrunkObj1337[tmpRandIndx]._arr1[1]._field34 != 0) - || (_arrunkObj1337[tmpRandIndx]._arr1[2]._field34 != 0) - || (_arrunkObj1337[tmpRandIndx]._arr1[3]._field34 != 0) )) { + && ( (_gameBoardSide[tmpRandIndx]._handCard[0]._cardId != 0) + || (_gameBoardSide[tmpRandIndx]._handCard[1]._cardId != 0) + || (_gameBoardSide[tmpRandIndx]._handCard[2]._cardId != 0) + || (_gameBoardSide[tmpRandIndx]._handCard[3]._cardId != 0) )) { tmpVal = tmpRandIndx; break; } @@ -5006,11 +5022,11 @@ void Scene1337::subC2C2F() { } if (tmpVal != -1) { - subC318B(3, &_arrunkObj1337[3]._arr1[randIndx], tmpVal); + subC318B(3, &_gameBoardSide[3]._handCard[randIndx], tmpVal); return; } } else { - switch (_arrunkObj1337[3]._arr1[randIndx]._field34) { + switch (_gameBoardSide[3]._handCard[randIndx]._cardId) { case 10: // No break on purpose case 11: @@ -5043,7 +5059,7 @@ void Scene1337::subC2C2F() { // It's understandable for 'i', which helps making sure that tmpVal is used properly, // but it's suspect for j for (int j = 0; j <= 7; j++) { - if ((_arrunkObj1337[tmpRandIndx]._arr3[0]._field34 == 0) && (subC32B1(tmpRandIndx, _arrunkObj1337[3]._arr1[randIndx]._field34))) { + if ((_gameBoardSide[tmpRandIndx]._delayCard._cardId == 0) && (subC32B1(tmpRandIndx, _gameBoardSide[3]._handCard[randIndx]._cardId))) { tmpVal = j; } } @@ -5059,7 +5075,7 @@ void Scene1337::subC2C2F() { if (tmpVal != -1) { // Useless second identical check skipped - subC3456(&_arrunkObj1337[3]._arr1[randIndx], &_arrunkObj1337[tmpVal]._arr3[0]); + subC3456(&_gameBoardSide[3]._handCard[randIndx], &_gameBoardSide[tmpVal]._delayCard); return; } } @@ -5068,10 +5084,10 @@ void Scene1337::subC2C2F() { } } - subC4A39(&_arrunkObj1337[3]._arr1[randIndx]); + subC4A39(&_gameBoardSide[3]._handCard[randIndx]); } -void Scene1337::subC318B(int arg1, unkObj1337sub1 *subObj1, int arg3) { +void Scene1337::subC318B(int arg1, Card *subObj1, int arg3) { _field4240 = arg1; _field4242 = arg3; @@ -5079,13 +5095,13 @@ void Scene1337::subC318B(int arg1, unkObj1337sub1 *subObj1, int arg3) { for (;;) { randIndx = R2_GLOBALS._randomSource.getRandomNumber(3); - if (_arrunkObj1337[arg3]._arr1[randIndx]._field34 != 0) + if (_gameBoardSide[arg3]._handCard[randIndx]._cardId != 0) break; } - _field3EF0 = subObj1; - _field3EF4 = &_arrunkObj1337[arg3]._arr4[0]; - _field3EF8 = &_arrunkObj1337[arg3]._arr1[randIndx]; + _discardCard = subObj1; + _field3EF4 = &_gameBoardSide[arg3]._emptyStationPos; + _field3EF8 = &_gameBoardSide[arg3]._handCard[randIndx]; _item1.setAction(&_action11); } @@ -5127,9 +5143,9 @@ int Scene1337::subC3257(int arg1) { bool Scene1337::subC32B1(int arg1, int arg2) { for (int i = 0; i <= 7; i++) { - if (_arrunkObj1337[arg1]._arr2[i]._field34 != 0) { + if (_gameBoardSide[arg1]._outpostStation[i]._cardId != 0) { int tmpVal = subC3257(arg2); - if (tmpVal == _arrunkObj1337[arg1]._arr2[i]._field34) + if (tmpVal == _gameBoardSide[arg1]._outpostStation[i]._cardId) return false; } } @@ -5142,7 +5158,7 @@ int Scene1337::subC331B(int arg1) { for (int i = 0; i <= 3; i++) { if (randIndx != arg1) { for (int j = 0; j <= 7; j++) { - if (_arrunkObj1337[randIndx]._arr2[j]._field34 != 0) + if (_gameBoardSide[randIndx]._outpostStation[j]._cardId != 0) return randIndx; } } @@ -5177,76 +5193,76 @@ bool Scene1337::subC3386(int arg1, int arg2) { return false; } -void Scene1337::subC33C0(unkObj1337sub1 *subObj1, unkObj1337sub1 *subObj2) { +void Scene1337::subC33C0(Card *subObj1, Card *subObj2) { _field3EF4 = subObj2; - _field3EF0 = subObj1; + _discardCard = subObj1; _item1.setAction(&_action7); } int Scene1337::subC3E92(int arg1) { - if ( (_arrunkObj1337[arg1]._arr1[0]._field34 == 0) - && (_arrunkObj1337[arg1]._arr1[1]._field34 == 0) - && (_arrunkObj1337[arg1]._arr1[2]._field34 == 0) - && (_arrunkObj1337[arg1]._arr1[3]._field34 == 0)) + if ( (_gameBoardSide[arg1]._handCard[0]._cardId == 0) + && (_gameBoardSide[arg1]._handCard[1]._cardId == 0) + && (_gameBoardSide[arg1]._handCard[2]._cardId == 0) + && (_gameBoardSide[arg1]._handCard[3]._cardId == 0)) return -1; int randIndx; for (;;) { randIndx = R2_GLOBALS._randomSource.getRandomNumber(3); - if (_arrunkObj1337[arg1]._arr1[randIndx]._field34 == 0) + if (_gameBoardSide[arg1]._handCard[randIndx]._cardId == 0) break; } return randIndx; } -void Scene1337::subC340B(unkObj1337sub1 *subObj1, unkObj1337sub1 *subObj2) { - _field3EF0 = subObj1; +void Scene1337::subC340B(Card *subObj1, Card *subObj2) { + _discardCard = subObj1; _field3EF4 = subObj2; _item1.setAction(&_action6); } -void Scene1337::subC3456(unkObj1337sub1 *subObj1, unkObj1337sub1 *subObj2) { - _field3EF0 = subObj1; +void Scene1337::subC3456(Card *subObj1, Card *subObj2) { + _discardCard = subObj1; _field3EF4 = subObj2; _item1.setAction(&_action9); } -void Scene1337::subC34A1(unkObj1337sub1 *subObj1, unkObj1337sub1 *subObj2) { - _field3EF0 = subObj1; +void Scene1337::subC34A1(Card *subObj1, Card *subObj2) { + _discardCard = subObj1; _field3EF4 = subObj2; _item1.setAction(&_action8); } -Scene1337::unkObj1337sub1 *Scene1337::subC34EC(int arg1) { +Scene1337::Card *Scene1337::subC34EC(int arg1) { for (int i = 0; i <= 7; i++) { - if (_arrunkObj1337[arg1]._arr2[i]._field34 == 1) { - return &_arrunkObj1337[arg1]._arr2[i]; + if (_gameBoardSide[arg1]._outpostStation[i]._cardId == 1) { + return &_gameBoardSide[arg1]._outpostStation[i]; } } for (int i = 0; i <= 7; i++) { - if ((_arrunkObj1337[arg1]._arr2[i]._field34 != 0) && (_arrunkObj1337[arg1]._arr2[i]._field34 < 10)) { - return &_arrunkObj1337[arg1]._arr2[i]; + if ((_gameBoardSide[arg1]._outpostStation[i]._cardId != 0) && (_gameBoardSide[arg1]._outpostStation[i]._cardId < 10)) { + return &_gameBoardSide[arg1]._outpostStation[i]; } } return NULL; } -void Scene1337::subC358E(unkObj1337sub1 *subObj1, int arg2) { - _field3EF0 = subObj1; +void Scene1337::subC358E(Card *subObj1, int arg2) { + _discardCard = subObj1; _field3EF4 = subC34EC(arg2); - _field3EF8 = &_arrunkObj1337[arg2]._arr4[0]; + _field3EF8 = &_gameBoardSide[arg2]._emptyStationPos; _field4240 = arg2; _item1.setAction(&_action10); } -void Scene1337::subC4A39(unkObj1337sub1 *subObj) { - _field3EF0 = subObj; +void Scene1337::subC4A39(Card *subObj) { + _discardCard = subObj; _item1.setAction(&_action5); } @@ -5254,20 +5270,19 @@ void Scene1337::subC4A39(unkObj1337sub1 *subObj) { void Scene1337::subC4CD2() { if (R2_GLOBALS._v57709 > 0) { subD1917(); - subD1940(false); + subD1940(false); // _v5780C-- } } void Scene1337::subC4CEC() { - if (R2_GLOBALS._v57709 != 0) - return; - - subD18F5(); - subD1940(1); + if (R2_GLOBALS._v57709 == 0) { + subD18F5(); + subD1940(true); // _v5780C++ + } } -void Scene1337::subC51A0(unkObj1337sub1 *subObj1, unkObj1337sub1 *subObj2) { - _field3EF0 = subObj1; +void Scene1337::subC51A0(Card *subObj1, Card *subObj2) { + _discardCard = subObj1; _field3EF4 = subObj2; _item1.setAction(&_action13); @@ -5375,7 +5390,7 @@ void Scene1337::subPostInit() { R2_GLOBALS._v57709 = 0; R2_GLOBALS._v5780C = 0; subD183F(1, 0); - subD1940(true); + subD1940(true); // _v5780C++ subD18F5(); // loadScene(1330); @@ -5383,223 +5398,224 @@ void Scene1337::subPostInit() { R2_GLOBALS._scenePalette.addRotation(224, 235, 1); - _field3E28[0] = 1; - _field3E28[1] = 1; - _field3E28[2] = 1; - _field3E28[3] = 1; - _field3E28[4] = 1; - _field3E28[5] = 1; - _field3E28[6] = 1; - _field3E28[7] = 1; - _field3E28[8] = 26; - _field3E28[9] = 2; - _field3E28[10] = 2; - _field3E28[11] = 2; - _field3E28[12] = 2; - _field3E28[13] = 2; - _field3E28[14] = 26; - _field3E28[15] = 3; - _field3E28[16] = 3; - _field3E28[17] = 3; - _field3E28[18] = 3; - _field3E28[19] = 3; - _field3E28[20] = 28; - _field3E28[21] = 4; - _field3E28[22] = 4; - _field3E28[23] = 4; - _field3E28[24] = 4; - _field3E28[25] = 4; - _field3E28[26] = 28; - _field3E28[27] = 5; - _field3E28[28] = 5; - _field3E28[29] = 5; - _field3E28[30] = 5; - _field3E28[31] = 5; - _field3E28[32] = 30; - _field3E28[33] = 6; - _field3E28[34] = 6; - _field3E28[35] = 6; - _field3E28[36] = 6; - _field3E28[37] = 6; - _field3E28[38] = 30; - _field3E28[39] = 7; - _field3E28[40] = 7; - _field3E28[41] = 7; - _field3E28[42] = 7; - _field3E28[43] = 7; - _field3E28[44] = 32; - _field3E28[45] = 8; - _field3E28[46] = 8; - _field3E28[47] = 8; - _field3E28[48] = 8; - _field3E28[49] = 8; - _field3E28[50] = 32; - _field3E28[51] = 9; - _field3E28[52] = 9; - _field3E28[53] = 9; - _field3E28[54] = 9; - _field3E28[55] = 9; - _field3E28[56] = 10; - _field3E28[57] = 11; - _field3E28[58] = 12; - _field3E28[59] = 13; - _field3E28[60] = 13; - _field3E28[61] = 14; - _field3E28[62] = 15; - _field3E28[63] = 16; - _field3E28[64] = 17; - _field3E28[65] = 18; - _field3E28[66] = 19; - _field3E28[67] = 20; - _field3E28[68] = 21; - _field3E28[69] = 26; - _field3E28[70] = 28; - _field3E28[71] = 24; - _field3E28[72] = 25; - _field3E28[73] = 25; - _field3E28[74] = 25; - _field3E28[75] = 25; - _field3E28[76] = 26; - _field3E28[77] = 26; - _field3E28[78] = 26; - _field3E28[79] = 27; - _field3E28[80] = 27; - _field3E28[81] = 28; - _field3E28[82] = 28; - _field3E28[83] = 28; - _field3E28[84] = 29; - _field3E28[85] = 29; - _field3E28[86] = 29; - _field3E28[87] = 30; - _field3E28[88] = 30; - _field3E28[89] = 30; - _field3E28[90] = 30; - _field3E28[91] = 32; - _field3E28[92] = 1; - _field3E28[93] = 32; - _field3E28[94] = 32; - _field3E28[95] = 32; - _field3E28[96] = 1; - _field3E28[97] = 1; - _field3E28[98] = 1; - _field3E28[99] = 0; - - _field3E24 = 98; - _field3E26 = 98; - - _item7._field34 = 0; - _item7._field36 = Common::Point(128, 95); - - _item8._field34 = 0; - _item8._field36 = Common::Point(162, 95); - - _item6._field34 = 0; - - _item2._object1.postInit(); - _item2._object1.setVisage(1332); - _item2._object1.setStrip(5); - _item2._object1.setFrame(1); - _item2._object1._moveDiff = Common::Point(10, 10); - _item2._object1.fixPriority(400); - _item2._object1.setPosition(Common::Point(128, 95), 0); - _item2._object1.animate(ANIM_MODE_2, NULL); - _item2._object1.hide(); - - _object1.postInit(); - _object1.setVisage(1334); - _object1.setStrip(1); - _object1.setFrame(1); - _object1._numFrames = 12; - _object1.fixPriority(500); - _object1.setPosition(Common::Point(174, 107), 0); - _object1.animate(ANIM_MODE_2, NULL); - _object1.hide(); - - _field4244 = 1; - _field4246 = 0; - _field4248 = 0; + _availableCardsPile[0] = 1; + _availableCardsPile[1] = 1; + _availableCardsPile[2] = 1; + _availableCardsPile[3] = 1; + _availableCardsPile[4] = 1; + _availableCardsPile[5] = 1; + _availableCardsPile[6] = 1; + _availableCardsPile[7] = 1; + _availableCardsPile[8] = 26; + _availableCardsPile[9] = 2; + _availableCardsPile[10] = 2; + _availableCardsPile[11] = 2; + _availableCardsPile[12] = 2; + _availableCardsPile[13] = 2; + _availableCardsPile[14] = 26; + _availableCardsPile[15] = 3; + _availableCardsPile[16] = 3; + _availableCardsPile[17] = 3; + _availableCardsPile[18] = 3; + _availableCardsPile[19] = 3; + _availableCardsPile[20] = 28; + _availableCardsPile[21] = 4; + _availableCardsPile[22] = 4; + _availableCardsPile[23] = 4; + _availableCardsPile[24] = 4; + _availableCardsPile[25] = 4; + _availableCardsPile[26] = 28; + _availableCardsPile[27] = 5; + _availableCardsPile[28] = 5; + _availableCardsPile[29] = 5; + _availableCardsPile[30] = 5; + _availableCardsPile[31] = 5; + _availableCardsPile[32] = 30; + _availableCardsPile[33] = 6; + _availableCardsPile[34] = 6; + _availableCardsPile[35] = 6; + _availableCardsPile[36] = 6; + _availableCardsPile[37] = 6; + _availableCardsPile[38] = 30; + _availableCardsPile[39] = 7; + _availableCardsPile[40] = 7; + _availableCardsPile[41] = 7; + _availableCardsPile[42] = 7; + _availableCardsPile[43] = 7; + _availableCardsPile[44] = 32; + _availableCardsPile[45] = 8; + _availableCardsPile[46] = 8; + _availableCardsPile[47] = 8; + _availableCardsPile[48] = 8; + _availableCardsPile[49] = 8; + _availableCardsPile[50] = 32; + _availableCardsPile[51] = 9; + _availableCardsPile[52] = 9; + _availableCardsPile[53] = 9; + _availableCardsPile[54] = 9; + _availableCardsPile[55] = 9; + _availableCardsPile[56] = 10; + _availableCardsPile[57] = 11; + _availableCardsPile[58] = 12; + _availableCardsPile[59] = 13; + _availableCardsPile[60] = 13; + _availableCardsPile[61] = 14; + _availableCardsPile[62] = 15; + _availableCardsPile[63] = 16; + _availableCardsPile[64] = 17; + _availableCardsPile[65] = 18; + _availableCardsPile[66] = 19; + _availableCardsPile[67] = 20; + _availableCardsPile[68] = 21; + _availableCardsPile[69] = 26; + _availableCardsPile[70] = 28; + _availableCardsPile[71] = 24; + _availableCardsPile[72] = 25; + _availableCardsPile[73] = 25; + _availableCardsPile[74] = 25; + _availableCardsPile[75] = 25; + _availableCardsPile[76] = 26; + _availableCardsPile[77] = 26; + _availableCardsPile[78] = 26; + _availableCardsPile[79] = 27; + _availableCardsPile[80] = 27; + _availableCardsPile[81] = 28; + _availableCardsPile[82] = 28; + _availableCardsPile[83] = 28; + _availableCardsPile[84] = 29; + _availableCardsPile[85] = 29; + _availableCardsPile[86] = 29; + _availableCardsPile[87] = 30; + _availableCardsPile[88] = 30; + _availableCardsPile[89] = 30; + _availableCardsPile[90] = 30; + _availableCardsPile[91] = 32; + _availableCardsPile[92] = 1; + _availableCardsPile[93] = 32; + _availableCardsPile[94] = 32; + _availableCardsPile[95] = 32; + _availableCardsPile[96] = 1; + _availableCardsPile[97] = 1; + _availableCardsPile[98] = 1; + _availableCardsPile[99] = 0; + + _cardsAvailableNumb = 98; + _currentDiscardIndex = 98; // CHECKME: Would make more sense at pos 99 + + _discardPile._cardId = 0; + _discardPile._stationPos = Common::Point(128, 95); + + _stockPile._cardId = 0; + _stockPile._stationPos = Common::Point(162, 95); + + _item6._cardId = 0; + + _animatedCard._card.postInit(); + _animatedCard._card.setVisage(1332); + _animatedCard._card.setStrip(5); + _animatedCard._card.setFrame(1); + _animatedCard._card._moveDiff = Common::Point(10, 10); + _animatedCard._card.fixPriority(400); + _animatedCard._card.setPosition(Common::Point(128, 95), 0); + _animatedCard._card.animate(ANIM_MODE_2, NULL); + _animatedCard._card.hide(); + + _currentPlayerArrow.postInit(); + _currentPlayerArrow.setVisage(1334); + _currentPlayerArrow.setStrip(1); + _currentPlayerArrow.setFrame(1); + _currentPlayerArrow._numFrames = 12; + _currentPlayerArrow.fixPriority(500); + _currentPlayerArrow.setPosition(Common::Point(174, 107), 0); + _currentPlayerArrow.animate(ANIM_MODE_2, NULL); + _currentPlayerArrow.hide(); + + _field4244 = true; + _field4246 = false; _field424A = -1; - _background1.setup2(9531, 1, 1, 249, 168, 155, 0); + _background1.setup2(9531, 1, 1, 249, 168, 155, EFFECT_NONE); _autoplay = false; - _field424C = 0; - _field424E = 0; + _instructionsDisplayedFl = 0; + _instructionsWaitCount = 0; } void Scene1337::suggestInstructions() { if (R2_GLOBALS._v57709 > 0) subD1917(); + if (MessageDialog::show(NEED_INSTRUCTIONS, NO_MSG, YES_MSG) == 0) { if (R2_GLOBALS._v57709 == 0) subD18F5(); - subCCF26(); + dealCards(); } else { if (R2_GLOBALS._v57709 == 0) subD18F5(); - subCB59B(); + displayInstructions(); } } -void Scene1337::subCB59B() { +void Scene1337::displayInstructions() { _item1.setAction(&_action1); } void Scene1337::shuffleCards() { R2_GLOBALS._sceneObjects->draw(); + // Remove holes in card pile for (int i = 0; i <= 98; i++) { - if (_field3E28[i] == 0) { + if (_availableCardsPile[i] == 0) { for (int j = i + 1; j <= 98; j ++) { - if (_field3E28[j] != 0) { - _field3E28[i] = _field3E28[j]; - _field3E28[j] = 0; + if (_availableCardsPile[j] != 0) { + _availableCardsPile[i] = _availableCardsPile[j]; + _availableCardsPile[j] = 0; break; } } } } + // Compute the number of available cards for (int i = 0; i <= 99; i ++) { - if (_field3E28[i] == 0) { - _field3E24 = i - 1; - _field3E26 = 98; + if (_availableCardsPile[i] == 0) { + // CHECKME: This will fail if i == 0, which shouldn't happen + // as we don't shuffle cards when no card is available. + _cardsAvailableNumb = i - 1; + _currentDiscardIndex = 98; // CHECKME: Would make more sense at pos 99 break; } } - // tmpVal is never modified in the original. It looks weird but it works: at the end, the cards are suffled! - int tmpVal = 0; - int randIndx; - int swap; for (int i = 0; i < 2000; i ++) { - randIndx = R2_GLOBALS._randomSource.getRandomNumber(_field3E24); - swap = _field3E28[tmpVal]; - _field3E28[tmpVal] = _field3E28[randIndx]; - _field3E28[randIndx] = swap; + int randIndx = R2_GLOBALS._randomSource.getRandomNumber(_cardsAvailableNumb); + int swap = _availableCardsPile[0]; + _availableCardsPile[0] = _availableCardsPile[randIndx]; + _availableCardsPile[randIndx] = swap; } - _field423C = 0; - _item2._object1.setAction(&_action2); + _shuffleEndedFl = false; - while(_field423C == 0) { + // Shuffle cards + _animatedCard._card.setAction(&_action2); + + while(!_shuffleEndedFl && !g_vm->shouldQuit()) { + g_globals->_sceneObjects->recurse(SceneHandler::dispatchObject); g_globals->_scenePalette.signalListeners(); R2_GLOBALS._sceneObjects->draw(); - warning("TODO: recurse on draw() and on signalListeners()?"); g_globals->_events.delay(g_globals->_sceneHandler->_delayTicks); - - // Hack to avoid eternal loop - // To be removed when the recurse is working properly - _field423C = 1; } } -void Scene1337::subCCF26() { - _item2._object1._moveDiff = Common::Point(30, 30); +void Scene1337::dealCards() { + _animatedCard._card._moveDiff = Common::Point(30, 30); shuffleCards(); + + // Deal cards _item1.setAction(&_action3); } void Scene1337::subCD193() { + // Display menu with "Auto Play", "New Game", "Quit" and "Continue" warning("STUBBED: subCD193()"); } @@ -5610,10 +5626,10 @@ void Scene1337::subCDB90(int arg1, Common::Point pt) { if (arg1 == 3) { int i; for (i = 0; i <= 7; i++) { - if ( (subC2BF8(&_arrunkObj1337[2]._arr2[i], pt)) - || (subC2BF8(&_arrunkObj1337[0]._arr2[i], pt)) - || (subC2BF8(&_arrunkObj1337[1]._arr2[i], pt)) - || (subC2BF8(&_arrunkObj1337[3]._arr2[i], pt)) ) { + if ( (subC2BF8(&_gameBoardSide[2]._outpostStation[i], pt)) + || (subC2BF8(&_gameBoardSide[0]._outpostStation[i], pt)) + || (subC2BF8(&_gameBoardSide[1]._outpostStation[i], pt)) + || (subC2BF8(&_gameBoardSide[3]._outpostStation[i], pt)) ) { found = true; break; } @@ -5622,26 +5638,26 @@ void Scene1337::subCDB90(int arg1, Common::Point pt) { if (found) { switch (curReg) { case 5: - if (_arrunkObj1337[2]._arr2[i]._field34 != 0) - displayDialog(_arrunkObj1337[2]._arr2[i]._field34); + if (_gameBoardSide[2]._outpostStation[i]._cardId != 0) + displayDialog(_gameBoardSide[2]._outpostStation[i]._cardId); else actionDisplay(1330, 20, 159, 10, 1, 200, 0, 7, 0, 154, 154); break; case 10: - if (_arrunkObj1337[3]._arr2[i]._field34 != 0) - displayDialog(_arrunkObj1337[3]._arr2[i]._field34); + if (_gameBoardSide[3]._outpostStation[i]._cardId != 0) + displayDialog(_gameBoardSide[3]._outpostStation[i]._cardId); else actionDisplay(1330, 22, 159, 10, 1, 200, 0, 7, 0, 154, 154); break; case 15: - if (_arrunkObj1337[0]._arr2[i]._field34 != 0) - displayDialog(_arrunkObj1337[0]._arr2[i]._field34); + if (_gameBoardSide[0]._outpostStation[i]._cardId != 0) + displayDialog(_gameBoardSide[0]._outpostStation[i]._cardId); else actionDisplay(1330, 21, 159, 10, 1, 200, 0, 7, 0, 154, 154); break; case 20: - if (_arrunkObj1337[1]._arr2[i]._field34 != 0) - displayDialog(_arrunkObj1337[1]._arr2[i]._field34); + if (_gameBoardSide[1]._outpostStation[i]._cardId != 0) + displayDialog(_gameBoardSide[1]._outpostStation[i]._cardId); else actionDisplay(1330, 23, 159, 10, 1, 200, 0, 7, 0, 154, 154); break; @@ -5649,36 +5665,36 @@ void Scene1337::subCDB90(int arg1, Common::Point pt) { break; } } else { - if ( (subC2BF8(&_arrunkObj1337[2]._arr3[0], pt)) - || (subC2BF8(&_arrunkObj1337[0]._arr3[0], pt)) - || (subC2BF8(&_arrunkObj1337[1]._arr3[0], pt)) - || (subC2BF8(&_arrunkObj1337[3]._arr3[0], pt)) ) { + if ( (subC2BF8(&_gameBoardSide[2]._delayCard, pt)) + || (subC2BF8(&_gameBoardSide[0]._delayCard, pt)) + || (subC2BF8(&_gameBoardSide[1]._delayCard, pt)) + || (subC2BF8(&_gameBoardSide[3]._delayCard, pt)) ) { found = true; } if (found) { switch (curReg) { case 5: - if (_arrunkObj1337[2]._arr3[0]._field34 != 0) - displayDialog(_arrunkObj1337[2]._arr3[0]._field34); + if (_gameBoardSide[2]._delayCard._cardId != 0) + displayDialog(_gameBoardSide[2]._delayCard._cardId); else actionDisplay(1330, 10, 159, 10, 1, 200, 0, 7, 0, 154, 154); break; case 10: - if (_arrunkObj1337[3]._arr3[0]._field34 != 0) - displayDialog(_arrunkObj1337[3]._arr3[0]._field34); + if (_gameBoardSide[3]._delayCard._cardId != 0) + displayDialog(_gameBoardSide[3]._delayCard._cardId); else actionDisplay(1330, 16, 159, 10, 1, 200, 0, 7, 0, 154, 154); break; case 15: - if (_arrunkObj1337[0]._arr3[0]._field34 != 0) - displayDialog(_arrunkObj1337[3]._arr3[0]._field34); + if (_gameBoardSide[0]._delayCard._cardId != 0) + displayDialog(_gameBoardSide[3]._delayCard._cardId); else actionDisplay(1330, 13, 159, 10, 1, 200, 0, 7, 0, 154, 154); break; case 20: - if (_arrunkObj1337[1]._arr3[0]._field34 != 0) - displayDialog(_arrunkObj1337[1]._arr3[0]._field34); + if (_gameBoardSide[1]._delayCard._cardId != 0) + displayDialog(_gameBoardSide[1]._delayCard._cardId); else actionDisplay(1330, 18, 159, 10, 1, 200, 0, 7, 0, 154, 154); break; @@ -5686,29 +5702,29 @@ void Scene1337::subCDB90(int arg1, Common::Point pt) { break; } } else { - if (subC2BF8(&_item7, pt)) { - if (_item7._field34 != 0) - displayDialog(_item7._field34); + if (subC2BF8(&_discardPile, pt)) { + if (_discardPile._cardId != 0) + displayDialog(_discardPile._cardId); else actionDisplay(1330, 7, 159, 10, 1, 200, 0, 7, 0, 154, 154); } else if (_background1._bounds.contains(pt)) { actionDisplay(1330, 43, 159, 10, 1, 200, 0, 7, 0, 154, 154); - } else if (subC2BF8(&_item8, pt)) { + } else if (subC2BF8(&_stockPile, pt)) { actionDisplay(1330, 4, 159, 10, 1, 200, 0, 7, 0, 154, 154); - } else if ( (subC2BF8(&_arrunkObj1337[2]._arr4[0], pt)) - || (subC2BF8(&_arrunkObj1337[3]._arr4[0], pt)) - || (subC2BF8(&_arrunkObj1337[0]._arr4[0], pt)) - || (subC2BF8(&_arrunkObj1337[1]._arr4[0], pt)) ) { + } else if ( (subC2BF8(&_gameBoardSide[2]._emptyStationPos, pt)) + || (subC2BF8(&_gameBoardSide[3]._emptyStationPos, pt)) + || (subC2BF8(&_gameBoardSide[0]._emptyStationPos, pt)) + || (subC2BF8(&_gameBoardSide[1]._emptyStationPos, pt)) ) { actionDisplay(1330, 32, 159, 10, 1, 200, 0, 7, 0, 154, 154); } else { - if (subC2BF8(&_arrunkObj1337[2]._arr1[0], pt)) - displayDialog(_arrunkObj1337[2]._arr1[0]._field34); - else if (subC2BF8(&_arrunkObj1337[2]._arr1[1], pt)) - displayDialog(_arrunkObj1337[2]._arr1[1]._field34); - else if (subC2BF8(&_arrunkObj1337[2]._arr1[2], pt)) - displayDialog(_arrunkObj1337[2]._arr1[2]._field34); - else if (subC2BF8(&_arrunkObj1337[2]._arr1[3], pt)) - displayDialog(_arrunkObj1337[2]._arr1[3]._field34); + if (subC2BF8(&_gameBoardSide[2]._handCard[0], pt)) + displayDialog(_gameBoardSide[2]._handCard[0]._cardId); + else if (subC2BF8(&_gameBoardSide[2]._handCard[1], pt)) + displayDialog(_gameBoardSide[2]._handCard[1]._cardId); + else if (subC2BF8(&_gameBoardSide[2]._handCard[2], pt)) + displayDialog(_gameBoardSide[2]._handCard[2]._cardId); + else if (subC2BF8(&_gameBoardSide[2]._handCard[3], pt)) + displayDialog(_gameBoardSide[2]._handCard[3]._cardId); else if ((curReg >= 6) && (curReg <= 9)) actionDisplay(1330, 29, 159, 10, 1, 200, 0, 7, 0, 154, 154); else if ((curReg >= 11) && (curReg <= 14)) @@ -5748,8 +5764,8 @@ void Scene1337::subCDB90(int arg1, Common::Point pt) { return; for (int i = 0; i <= 7; i++) { - if (subC2BF8(&_arrunkObj1337[2]._arr2[i], pt)) { - switch (_arrunkObj1337[2]._arr2[i]._field34) { + if (subC2BF8(&_gameBoardSide[2]._outpostStation[i], pt)) { + switch (_gameBoardSide[2]._outpostStation[i]._cardId) { case 0: actionDisplay(1330, 11, 159, 10, 1, 200, 0, 7, 0, 154, 154); break; @@ -5762,8 +5778,8 @@ void Scene1337::subCDB90(int arg1, Common::Point pt) { } found = true; break; - } else if (subC2BF8(&_arrunkObj1337[0]._arr2[i], pt)) { - switch (_arrunkObj1337[0]._arr2[i]._field34) { + } else if (subC2BF8(&_gameBoardSide[0]._outpostStation[i], pt)) { + switch (_gameBoardSide[0]._outpostStation[i]._cardId) { case 0: actionDisplay(1330, 11, 159, 10, 1, 200, 0, 7, 0, 154, 154); break; @@ -5773,8 +5789,8 @@ void Scene1337::subCDB90(int arg1, Common::Point pt) { } found = true; break; - } else if (subC2BF8(&_arrunkObj1337[1]._arr2[i], pt)) { - switch (_arrunkObj1337[1]._arr2[i]._field34) { + } else if (subC2BF8(&_gameBoardSide[1]._outpostStation[i], pt)) { + switch (_gameBoardSide[1]._outpostStation[i]._cardId) { case 0: actionDisplay(1330, 146, 300, 99, 1, 136, 0, 7, 0, 117, 117); break; @@ -5784,8 +5800,8 @@ void Scene1337::subCDB90(int arg1, Common::Point pt) { } found = true; break; - } else if (subC2BF8(&_arrunkObj1337[3]._arr2[i], pt)) { - switch (_arrunkObj1337[3]._arr2[i]._field34) { + } else if (subC2BF8(&_gameBoardSide[3]._outpostStation[i], pt)) { + switch (_gameBoardSide[3]._outpostStation[i]._cardId) { case 0: actionDisplay(1330, 147, 20, 99, 1, 136, 0, 7, 0, 172, 172); break; @@ -5798,8 +5814,8 @@ void Scene1337::subCDB90(int arg1, Common::Point pt) { } } - if (subC2BF8(&_arrunkObj1337[2]._arr3[0], pt)) { - if (_arrunkObj1337[0]._arr3[0]._field34 != 0) { + if (subC2BF8(&_gameBoardSide[2]._delayCard, pt)) { + if (_gameBoardSide[0]._delayCard._cardId != 0) { actionDisplay(1330, 39, 159, 10, 1, 200, 0, 7, 0, 154, 154); } else { actionDisplay(1330, 11, 159, 10, 1, 200, 0, 7, 0, 154, 154); @@ -5807,8 +5823,8 @@ void Scene1337::subCDB90(int arg1, Common::Point pt) { found = true; } - if (subC2BF8(&_arrunkObj1337[3]._arr3[0], pt)) { - if (_arrunkObj1337[3]._arr3[0]._field34 != 0) { + if (subC2BF8(&_gameBoardSide[3]._delayCard, pt)) { + if (_gameBoardSide[3]._delayCard._cardId != 0) { actionDisplay(1330, 145, 20, 99, 1, 136, 0, 7, 0, 172, 172); } else { actionDisplay(1330, 147, 20, 99, 1, 136, 0, 7, 0, 172, 172); @@ -5816,8 +5832,8 @@ void Scene1337::subCDB90(int arg1, Common::Point pt) { found = true; } - if (subC2BF8(&_arrunkObj1337[1]._arr3[0], pt)) { - if (_arrunkObj1337[1]._arr3[0]._field34 != 0) { + if (subC2BF8(&_gameBoardSide[1]._delayCard, pt)) { + if (_gameBoardSide[1]._delayCard._cardId != 0) { actionDisplay(1330, 144, 300, 99, 1, 136, 0, 7, 0, 117, 117); } else { actionDisplay(1330, 146, 300, 99, 1, 136, 0, 7, 0, 117, 117); @@ -5825,8 +5841,8 @@ void Scene1337::subCDB90(int arg1, Common::Point pt) { found = true; } - if (subC2BF8(&_arrunkObj1337[0]._arr3[0], pt)) { - if (_arrunkObj1337[0]._arr3[0]._field34 != 0) { + if (subC2BF8(&_gameBoardSide[0]._delayCard, pt)) { + if (_gameBoardSide[0]._delayCard._cardId != 0) { actionDisplay(1330, 1, 159, 10, 1, 200, 0, 7, 0, 154, 154); } else { actionDisplay(1330, 11, 159, 10, 1, 200, 0, 7, 0, 154, 154); @@ -5834,17 +5850,17 @@ void Scene1337::subCDB90(int arg1, Common::Point pt) { found = true; } - if (subC2BF8(&_arrunkObj1337[3]._arr4[0], pt)) { + if (subC2BF8(&_gameBoardSide[3]._emptyStationPos, pt)) { actionDisplay(1330, 147, 20, 99, 1, 136, 0, 7, 0, 172, 172); found = true; } - if (subC2BF8(&_arrunkObj1337[1]._arr4[0], pt)) { + if (subC2BF8(&_gameBoardSide[1]._emptyStationPos, pt)) { actionDisplay(1330, 146, 300, 99, 1, 136, 0, 7, 0, 117, 117); found = true; } - if (subC2BF8(&_arrunkObj1337[0]._arr4[0], pt)) { + if (subC2BF8(&_gameBoardSide[0]._emptyStationPos, pt)) { actionDisplay(1330, 11, 159, 10, 1, 200, 0, 7, 0, 154, 154); found = true; } @@ -5857,9 +5873,9 @@ void Scene1337::subCDB90(int arg1, Common::Point pt) { return; } - if (subC2BF8(&_item7, pt)) + if (subC2BF8(&_discardPile, pt)) actionDisplay(1330, 9, 159, 10, 1, 200, 0, 7, 0, 154, 154); - else if (subC2BF8(&_item8, pt)) + else if (subC2BF8(&_stockPile, pt)) actionDisplay(1330, 5, 159, 10, 1, 200, 0, 7, 0, 154, 154); else { switch (curReg) { @@ -5911,8 +5927,8 @@ void Scene1337::subCF31D() { bool found; int count; - if (this->_arrunkObj1337[1]._arr3[0]._field34 != 0) { - switch (_arrunkObj1337[1]._arr3[0]._field34) { + if (this->_gameBoardSide[1]._delayCard._cardId != 0) { + switch (_gameBoardSide[1]._delayCard._cardId) { case 10: // No break on purpose case 12: @@ -5929,13 +5945,13 @@ void Scene1337::subCF31D() { // No break on purpose case 21: tmpVal = 0; - subC4A39(&_arrunkObj1337[1]._arr3[0]); + subC4A39(&_gameBoardSide[1]._delayCard); break; default: found = false; int i; for (i = 0; i <= 3; i++) { - if (subC3386(_arrunkObj1337[1]._arr3[0]._field34, _arrunkObj1337[1]._arr1[i]._field34)) { + if (subC3386(_gameBoardSide[1]._delayCard._cardId, _gameBoardSide[1]._handCard[i]._cardId)) { found = true; break; } @@ -5943,7 +5959,7 @@ void Scene1337::subCF31D() { if (found) { tmpVal = 0; - subC34A1(&_arrunkObj1337[1]._arr1[i], &_arrunkObj1337[1]._arr3[0]); + subC34A1(&_gameBoardSide[1]._handCard[i], &_gameBoardSide[1]._delayCard); } } } @@ -5959,7 +5975,7 @@ void Scene1337::subCF31D() { tmpVal = 0; for (int j = 0; j <= 7; j++) { - if (_arrunkObj1337[1]._arr2[j]._field34 == _arrunkObj1337[1]._arr1[tmpIndx]._field34) { + if (_gameBoardSide[1]._outpostStation[j]._cardId == _gameBoardSide[1]._handCard[tmpIndx]._cardId) { tmpVal = 1; break; } @@ -5969,18 +5985,18 @@ void Scene1337::subCF31D() { break; for (int j = 0; j <= 7; j++) { - if (_arrunkObj1337[1]._arr2[j]._field34 == 1) { - if (!subC2687(_arrunkObj1337[1]._arr3[0]._field34)) { + if (_gameBoardSide[1]._outpostStation[j]._cardId == 1) { + if (!subC2687(_gameBoardSide[1]._delayCard._cardId)) { count = 0; for (int k = 0; k <= 7; k++) { - if ((_arrunkObj1337[1]._arr2[k]._field34 > 1) && (_arrunkObj1337[1]._arr2[k]._field34 <= 9)) + if ((_gameBoardSide[1]._outpostStation[k]._cardId > 1) && (_gameBoardSide[1]._outpostStation[k]._cardId <= 9)) ++count; } if (count == 7) _field424A = 1; - subC33C0(&_arrunkObj1337[1]._arr1[tmpIndx], &_arrunkObj1337[1]._arr2[j]); + subC33C0(&_gameBoardSide[1]._handCard[tmpIndx], &_gameBoardSide[1]._outpostStation[j]); found = true; break; } @@ -5994,8 +6010,8 @@ void Scene1337::subCF31D() { tmpVal = subC2719(1); if (tmpVal != -1) { for (int i = 0; i <= 7; i++) { - if ((_arrunkObj1337[1]._arr2[i]._field34 == 0) && (!subC2687(_arrunkObj1337[1]._arr3[0]._field34))) { - subC340B(&_arrunkObj1337[1]._arr1[tmpVal], &_arrunkObj1337[1]._arr2[i]); + if ((_gameBoardSide[1]._outpostStation[i]._cardId == 0) && (!subC2687(_gameBoardSide[1]._delayCard._cardId))) { + subC340B(&_gameBoardSide[1]._handCard[tmpVal], &_gameBoardSide[1]._outpostStation[i]); found = true; break; } @@ -6009,7 +6025,7 @@ void Scene1337::subCF31D() { int tmpVal2 = subC331B(1); if ((tmpVal != -1) && ( tmpVal2 != -1)) { - subC358E(&_arrunkObj1337[1]._arr1[tmpVal], tmpVal2); + subC358E(&_gameBoardSide[1]._handCard[tmpVal], tmpVal2); found = true; } @@ -6022,10 +6038,10 @@ void Scene1337::subCF31D() { int rndVal = R2_GLOBALS._randomSource.getRandomNumber(3); for (int i = 0; i <= 3; i++) { if (rndVal != 1) { - if ( (_arrunkObj1337[rndVal]._arr1[0]._field34 != 0) - || (_arrunkObj1337[rndVal]._arr1[1]._field34 != 0) - || (_arrunkObj1337[rndVal]._arr1[2]._field34 != 0) - || (_arrunkObj1337[rndVal]._arr1[3]._field34 == 0)) { + if ( (_gameBoardSide[rndVal]._handCard[0]._cardId != 0) + || (_gameBoardSide[rndVal]._handCard[1]._cardId != 0) + || (_gameBoardSide[rndVal]._handCard[2]._cardId != 0) + || (_gameBoardSide[rndVal]._handCard[3]._cardId == 0)) { count = rndVal; break; } @@ -6037,7 +6053,7 @@ void Scene1337::subCF31D() { } if (count != -1) { - subC318B(1, &_arrunkObj1337[1]._arr1[tmpVal], count); + subC318B(1, &_gameBoardSide[1]._handCard[tmpVal], count); found = true; } } @@ -6048,7 +6064,7 @@ void Scene1337::subCF31D() { count = -1; int i; for (i = 0; i <= 3; i++) { - tmpVal = subC27B5(_arrunkObj1337[1]._arr1[i]._field34); + tmpVal = subC27B5(_gameBoardSide[1]._handCard[i]._cardId); if (tmpVal != -1) { int rndVal = R2_GLOBALS._randomSource.getRandomNumber(3); @@ -6058,7 +6074,7 @@ void Scene1337::subCF31D() { for (int k = 0; k <= 7; k++) { // CHECKME: 'k' is not used in that loop. // It looks suspicious. - if ((_arrunkObj1337[tmpVal]._arr3[0]._field34 == 0) && (subC32B1(tmpVal, _arrunkObj1337[1]._arr1[i]._field34))) { + if ((_gameBoardSide[tmpVal]._delayCard._cardId == 0) && (subC32B1(tmpVal, _gameBoardSide[1]._handCard[i]._cardId))) { count = tmpVal; break; } @@ -6081,18 +6097,18 @@ void Scene1337::subCF31D() { } if (found) - subC3456(&_arrunkObj1337[1]._arr1[i], &_arrunkObj1337[count]._arr3[0]); + subC3456(&_gameBoardSide[1]._handCard[i], &_gameBoardSide[count]._delayCard); else { int j; for (j = 0; j <= 3; j++) { - if (subC27F9(_arrunkObj1337[1]._arr1[j]._field34) != -1) { + if (subC27F9(_gameBoardSide[1]._handCard[j]._cardId) != -1) { count = -1; int rndVal = R2_GLOBALS._randomSource.getRandomNumber(3); for (int l = 0; l <= 3; l++) { if (rndVal != 1) { for (int m = 0; m <= 7; m++) { // 'm' is not used in that loop. It looks suspicious. - if ((_arrunkObj1337[rndVal]._arr3[0]._field34 == 0) && (_arrunkObj1337[1]._arr1[j]._field34 == 1)) { + if ((_gameBoardSide[rndVal]._delayCard._cardId == 0) && (_gameBoardSide[1]._handCard[j]._cardId == 1)) { count = rndVal; break; } @@ -6113,7 +6129,7 @@ void Scene1337::subCF31D() { } if (found) - subC3456(&_arrunkObj1337[1]._arr1[j], &_arrunkObj1337[count]._arr3[0]); + subC3456(&_gameBoardSide[1]._handCard[j], &_gameBoardSide[count]._delayCard); else subC2835(1); } @@ -6123,8 +6139,8 @@ void Scene1337::subCF31D() { void Scene1337::subCF979() { bool found = true; - if (_arrunkObj1337[0]._arr3[0]._field34 != 0) { - switch (_arrunkObj1337[0]._arr3[0]._field34) { + if (_gameBoardSide[0]._delayCard._cardId != 0) { + switch (_gameBoardSide[0]._delayCard._cardId) { case 10: //No break on purpose case 12: @@ -6140,7 +6156,7 @@ void Scene1337::subCF979() { case 20: //No break on purpose case 21: - subC4A39(&_arrunkObj1337[0]._arr3[0]); + subC4A39(&_gameBoardSide[0]._delayCard); found = false; break; default: @@ -6148,7 +6164,7 @@ void Scene1337::subCF979() { found = false; for (i = 0; i <= 3; i++) { - if (subC3386(_arrunkObj1337[0]._arr3[0]._field34, _arrunkObj1337[0]._arr1[i]._field34)) { + if (subC3386(_gameBoardSide[0]._delayCard._cardId, _gameBoardSide[0]._handCard[i]._cardId)) { found = true; break; } @@ -6156,7 +6172,7 @@ void Scene1337::subCF979() { if (found) { found = false; - subC34A1(&_arrunkObj1337[0]._arr1[i], &_arrunkObj1337[0]._arr3[0]); + subC34A1(&_gameBoardSide[0]._handCard[i], &_gameBoardSide[0]._delayCard); } break; } @@ -6173,7 +6189,7 @@ void Scene1337::subCF979() { if (tmpVal != -1) { bool flag = false; for (int j = 0; j <= 7; j++) { - if (_arrunkObj1337[0]._arr2[j]._field34 == _arrunkObj1337[0]._arr1[tmpVal]._field34) { + if (_gameBoardSide[0]._outpostStation[j]._cardId == _gameBoardSide[0]._handCard[tmpVal]._cardId) { flag = true; break; } @@ -6181,10 +6197,10 @@ void Scene1337::subCF979() { if (!flag) { for (int j = 0; j <= 7; j++) { - if ((_arrunkObj1337[0]._arr2[j]._field34 == 1) && (!subC2687(_arrunkObj1337[0]._arr3[0]._field34))) { + if ((_gameBoardSide[0]._outpostStation[j]._cardId == 1) && (!subC2687(_gameBoardSide[0]._delayCard._cardId))) { int count = 0; for (int k = 0; k <= 7; k++) { - if ((_arrunkObj1337[0]._arr2[k]._field34 > 1) && (_arrunkObj1337[0]._arr2[k]._field34 <= 9)) { + if ((_gameBoardSide[0]._outpostStation[k]._cardId > 1) && (_gameBoardSide[0]._outpostStation[k]._cardId <= 9)) { ++count; } } @@ -6192,7 +6208,7 @@ void Scene1337::subCF979() { if (count == 7) _field424A = 0; - subC33C0(&_arrunkObj1337[0]._arr1[tmpVal], &_arrunkObj1337[0]._arr2[j]); + subC33C0(&_gameBoardSide[0]._handCard[tmpVal], &_gameBoardSide[0]._outpostStation[j]); found = true; } } @@ -6211,8 +6227,8 @@ void Scene1337::subCF979() { if (tmpVal != -1) { for (int i = 0; i <= 7; i++) { - if ((_arrunkObj1337[0]._arr2[i]._field34 == 0) && (!subC2687(_arrunkObj1337[0]._arr3[0]._field34))) { - subC340B(&_arrunkObj1337[0]._arr1[tmpVal], &_arrunkObj1337[0]._arr2[i]); + if ((_gameBoardSide[0]._outpostStation[i]._cardId == 0) && (!subC2687(_gameBoardSide[0]._delayCard._cardId))) { + subC340B(&_gameBoardSide[0]._handCard[tmpVal], &_gameBoardSide[0]._outpostStation[i]); found = true; break; } @@ -6225,8 +6241,8 @@ void Scene1337::subCF979() { tmpVal = subC274D(0); if (tmpVal != -1) { for (int i = 0; i <= 7; i++) { - if (_arrunkObj1337[2]._arr2[i]._field34 != 0) { - subC358E(&_arrunkObj1337[0]._arr1[tmpVal], 2); + if (_gameBoardSide[2]._outpostStation[i]._cardId != 0) { + subC358E(&_gameBoardSide[0]._handCard[tmpVal], 2); found = true; break; } @@ -6238,11 +6254,11 @@ void Scene1337::subCF979() { tmpVal = subC2781(0); if (tmpVal != -1) { - if ( (_arrunkObj1337[2]._arr1[0]._field34 != 0) - || (_arrunkObj1337[2]._arr1[1]._field34 != 0) - || (_arrunkObj1337[2]._arr1[2]._field34 != 0) - || (_arrunkObj1337[2]._arr1[3]._field34 != 0) ) { - subC318B(0, &_arrunkObj1337[0]._arr1[tmpVal], 2); + if ( (_gameBoardSide[2]._handCard[0]._cardId != 0) + || (_gameBoardSide[2]._handCard[1]._cardId != 0) + || (_gameBoardSide[2]._handCard[2]._cardId != 0) + || (_gameBoardSide[2]._handCard[3]._cardId != 0) ) { + subC318B(0, &_gameBoardSide[0]._handCard[tmpVal], 2); found = true; } } @@ -6251,11 +6267,11 @@ void Scene1337::subCF979() { return; for (int i = 0; i <= 3; i++) { - if (subC27B5(_arrunkObj1337[0]._arr1[i]._field34) != -1) { + if (subC27B5(_gameBoardSide[0]._handCard[i]._cardId) != -1) { // The variable 'j' is not used in the inner code of the loop. It's suspect for (int j = 0; j <= 7; j++) { - if ((_arrunkObj1337[2]._arr3[0]._field34 == 0) && (subC32B1(2, _arrunkObj1337[0]._arr1[i]._field34))) { - subC3456(&_arrunkObj1337[0]._arr1[i], &_arrunkObj1337[2]._arr3[0]); + if ((_gameBoardSide[2]._delayCard._cardId == 0) && (subC32B1(2, _gameBoardSide[0]._handCard[i]._cardId))) { + subC3456(&_gameBoardSide[0]._handCard[i], &_gameBoardSide[2]._delayCard); found = true; break; } @@ -6270,11 +6286,11 @@ void Scene1337::subCF979() { return; for (int i = 0; i <= 3; i++) { - if (subC27F9(_arrunkObj1337[0]._arr1[i]._field34) != -1) { + if (subC27F9(_gameBoardSide[0]._handCard[i]._cardId) != -1) { // The variable 'j' is not used in the inner code of the loop. It's suspect for (int j = 0; j <= 7; j++) { - if ((_arrunkObj1337[2]._arr3[0]._field34 == 0) && (subC32B1(2, _arrunkObj1337[0]._arr1[i]._field34))) { - subC3456(&_arrunkObj1337[0]._arr1[i], &_arrunkObj1337[2]._arr3[0]); + if ((_gameBoardSide[2]._delayCard._cardId == 0) && (subC32B1(2, _gameBoardSide[0]._handCard[i]._cardId))) { + subC3456(&_gameBoardSide[0]._handCard[i], &_gameBoardSide[2]._delayCard); found = true; } } @@ -6291,7 +6307,7 @@ void Scene1337::subCF979() { int tmpVal2 = subC331B(0); if ((tmpVal != -1) && (tmpVal2 != -1)) { - subC358E(&_arrunkObj1337[0]._arr1[tmpVal], tmpVal2); + subC358E(&_gameBoardSide[0]._handCard[tmpVal], tmpVal2); found = true; } @@ -6300,11 +6316,11 @@ void Scene1337::subCF979() { tmpVal = subC2781(0); if (tmpVal != -1) { - if ( (_arrunkObj1337[1]._arr1[0]._field34 != 0) - || (_arrunkObj1337[1]._arr1[1]._field34 != 0) - || (_arrunkObj1337[1]._arr1[2]._field34 != 0) - || (_arrunkObj1337[1]._arr1[3]._field34 != 0) ) { - subC318B(0, &_arrunkObj1337[0]._arr1[tmpVal], 1); + if ( (_gameBoardSide[1]._handCard[0]._cardId != 0) + || (_gameBoardSide[1]._handCard[1]._cardId != 0) + || (_gameBoardSide[1]._handCard[2]._cardId != 0) + || (_gameBoardSide[1]._handCard[3]._cardId != 0) ) { + subC318B(0, &_gameBoardSide[0]._handCard[tmpVal], 1); found = true; } } @@ -6313,12 +6329,12 @@ void Scene1337::subCF979() { return; for (int i = 0; i <= 3; i++) { - tmpVal = subC27F9(_arrunkObj1337[0]._arr1[i]._field34); + tmpVal = subC27F9(_gameBoardSide[0]._handCard[i]._cardId); if (tmpVal != -1) { // The variable 'j' is not used in the inner code of the loop. It's suspect. for (int j = 0; j <= 7; j++) { - if ((_arrunkObj1337[1]._arr3[0]._field34 == 0) && (subC32B1(1, _arrunkObj1337[0]._arr1[i]._field34))) { - subC3456(&_arrunkObj1337[0]._arr1[i], &_arrunkObj1337[1]._arr3[0]); + if ((_gameBoardSide[1]._delayCard._cardId == 0) && (subC32B1(1, _gameBoardSide[0]._handCard[i]._cardId))) { + subC3456(&_gameBoardSide[0]._handCard[i], &_gameBoardSide[1]._delayCard); found = true; } } @@ -6326,8 +6342,8 @@ void Scene1337::subCF979() { if (!found) { // The variable 'j' is not used in the inner code of the loop. It's suspect. for (int j = 0; j <= 7; j++) { - if ((_arrunkObj1337[3]._arr3[0]._field34 == 0) && (subC32B1(3, _arrunkObj1337[0]._arr1[i]._field34))) { - subC3456(&_arrunkObj1337[0]._arr1[i], &_arrunkObj1337[3]._arr3[0]); + if ((_gameBoardSide[3]._delayCard._cardId == 0) && (subC32B1(3, _gameBoardSide[0]._handCard[i]._cardId))) { + subC3456(&_gameBoardSide[0]._handCard[i], &_gameBoardSide[3]._delayCard); found = true; } } @@ -6342,12 +6358,12 @@ void Scene1337::subCF979() { return; for (int i = 0; i <= 3; i++) { - tmpVal = subC27B5(_arrunkObj1337[0]._arr1[i]._field34); + tmpVal = subC27B5(_gameBoardSide[0]._handCard[i]._cardId); if (tmpVal != -1) { // The variable 'j' is not used in the inner code of the loop. It's suspect. for (int j = 0; j <= 7; j++) { - if ((_arrunkObj1337[1]._arr3[0]._field34 == 0) && (subC32B1(1, _arrunkObj1337[0]._arr1[i]._field34))) { - subC3456(&_arrunkObj1337[0]._arr1[i], &_arrunkObj1337[1]._arr3[0]); + if ((_gameBoardSide[1]._delayCard._cardId == 0) && (subC32B1(1, _gameBoardSide[0]._handCard[i]._cardId))) { + subC3456(&_gameBoardSide[0]._handCard[i], &_gameBoardSide[1]._delayCard); found = true; } } @@ -6355,8 +6371,8 @@ void Scene1337::subCF979() { if (!found) { // The variable 'j' is not used in the inner code of the loop. It's suspect. for (int j = 0; j <= 7; j++) { - if ((_arrunkObj1337[3]._arr3[0]._field34 == 0) && (subC32B1(3, _arrunkObj1337[0]._arr1[i]._field34))) { - subC3456(&_arrunkObj1337[0]._arr1[i], &_arrunkObj1337[3]._arr3[0]); + if ((_gameBoardSide[3]._delayCard._cardId == 0) && (subC32B1(3, _gameBoardSide[0]._handCard[i]._cardId))) { + subC3456(&_gameBoardSide[0]._handCard[i], &_gameBoardSide[3]._delayCard); found = true; } } @@ -6378,83 +6394,83 @@ void Scene1337::subD026D() { } void Scene1337::subD0281() { - if (subC27F9(this->_arrunkObj1337[2]._arr3[0]._field34) == -1) + if (subC27F9(this->_gameBoardSide[2]._delayCard._cardId) == -1) _unkFctPtr412 = &Scene1337::subD026D; else - subC4A39(&_arrunkObj1337[2]._arr3[0]); + subC4A39(&_gameBoardSide[2]._delayCard); } void Scene1337::subD02CA() { - _item6._field36 = g_globals->_events._mousePos; + _item6._stationPos = g_globals->_events._mousePos; if (R2_GLOBALS._v57810 == 200) { - int di; - for (di = 0; di < 4; di++) { - if ((subC2BF8(&_arrunkObj1337[2]._arr1[di], _item6._field36) != 0) && (_arrunkObj1337[2]._arr1[di]._field34 != 0)) { - _item6._field34 = _arrunkObj1337[2]._arr1[di]._field34; - _item6._field36 = _arrunkObj1337[2]._arr1[di]._field36; - // _item6._actorName = _arrunkObj1337[2]._arr1[di]._actorName; - _item6._fieldE = _arrunkObj1337[2]._arr1[di]._fieldE; - _item6._field10 = _arrunkObj1337[2]._arr1[di]._field10; - warning("_item6._field12 = _arrunkObj1337[2]._arr1[di]._field12;"); - warning("_item6._field14 = _arrunkObj1337[2]._arr1[di]._field14;"); - warning("_item6._field16 = _arrunkObj1337[2]._arr1[di]._field16;"); - _item6._sceneRegionId = _arrunkObj1337[2]._arr1[di]._sceneRegionId; - _item6._position = _arrunkObj1337[2]._arr1[di]._position; - _item6._yDiff = _arrunkObj1337[2]._arr1[di]._yDiff; - _item6._bounds = _arrunkObj1337[2]._arr1[di]._bounds; - _item6._resNum = _arrunkObj1337[2]._arr1[di]._resNum; - _item6._lookLineNum = _arrunkObj1337[2]._arr1[di]._lookLineNum; - _item6._talkLineNum = _arrunkObj1337[2]._arr1[di]._talkLineNum; - _item6._useLineNum = _arrunkObj1337[2]._arr1[di]._useLineNum; - _item6._action = _arrunkObj1337[2]._arr1[di]._action; - warning("_item6._field0 = _arrunkObj1337[2]._arr1[di]._field0;"); - _item6._object1._updateStartFrame = _arrunkObj1337[2]._arr1[di]._object1._updateStartFrame; - _item6._object1._walkStartFrame = _arrunkObj1337[2]._arr1[di]._object1._walkStartFrame; + int i; + for (i = 0; i < 4; i++) { + if ((subC2BF8(&_gameBoardSide[2]._handCard[i], _item6._stationPos) != 0) && (_gameBoardSide[2]._handCard[i]._cardId != 0)) { + _item6._cardId = _gameBoardSide[2]._handCard[i]._cardId; + _item6._stationPos = _gameBoardSide[2]._handCard[i]._stationPos; + // _item6._actorName = _gameBoardSide[2]._handCard[di]._actorName; + _item6._fieldE = _gameBoardSide[2]._handCard[i]._fieldE; + _item6._field10 = _gameBoardSide[2]._handCard[i]._field10; + warning("_item6._field12 = _gameBoardSide[2]._handCard[di]._field12;"); + warning("_item6._field14 = _gameBoardSide[2]._handCard[di]._field14;"); + warning("_item6._field16 = _gameBoardSide[2]._handCard[di]._field16;"); + _item6._sceneRegionId = _gameBoardSide[2]._handCard[i]._sceneRegionId; + _item6._position = _gameBoardSide[2]._handCard[i]._position; + _item6._yDiff = _gameBoardSide[2]._handCard[i]._yDiff; + _item6._bounds = _gameBoardSide[2]._handCard[i]._bounds; + _item6._resNum = _gameBoardSide[2]._handCard[i]._resNum; + _item6._lookLineNum = _gameBoardSide[2]._handCard[i]._lookLineNum; + _item6._talkLineNum = _gameBoardSide[2]._handCard[i]._talkLineNum; + _item6._useLineNum = _gameBoardSide[2]._handCard[i]._useLineNum; + _item6._action = _gameBoardSide[2]._handCard[i]._action; + warning("_item6._field0 = _gameBoardSide[2]._handCard[di]._field0;"); + _item6._card._updateStartFrame = _gameBoardSide[2]._handCard[i]._card._updateStartFrame; + _item6._card._walkStartFrame = _gameBoardSide[2]._handCard[i]._card._walkStartFrame; // _field2E is named _field3C in R2R - _item6._object1._field2E = _arrunkObj1337[2]._arr1[di]._object1._field2E; - _item6._object1._percent = _arrunkObj1337[2]._arr1[di]._object1._percent; - _item6._object1._priority = _arrunkObj1337[2]._arr1[di]._object1._priority; - _item6._object1._angle = _arrunkObj1337[2]._arr1[di]._object1._angle; - _item6._object1._flags = _arrunkObj1337[2]._arr1[di]._object1._flags; - _item6._object1._xe = _arrunkObj1337[2]._arr1[di]._object1._xe; - _item6._object1._xs = _arrunkObj1337[2]._arr1[di]._object1._xs; - _item6._object1._paneRects[0] = _arrunkObj1337[2]._arr1[di]._object1._paneRects[0]; - _item6._object1._paneRects[1] = _arrunkObj1337[2]._arr1[di]._object1._paneRects[1]; - _item6._object1._visage = _arrunkObj1337[2]._arr1[di]._object1._visage; - _item6._object1._objectWrapper = _arrunkObj1337[2]._arr1[di]._object1._objectWrapper; - _item6._object1._strip = _arrunkObj1337[2]._arr1[di]._object1._strip; - _item6._object1._animateMode = _arrunkObj1337[2]._arr1[di]._object1._animateMode; - _item6._object1._frame = _arrunkObj1337[2]._arr1[di]._object1._frame; - _item6._object1._endFrame = _arrunkObj1337[2]._arr1[di]._object1._endFrame; + _item6._card._field2E = _gameBoardSide[2]._handCard[i]._card._field2E; + _item6._card._percent = _gameBoardSide[2]._handCard[i]._card._percent; + _item6._card._priority = _gameBoardSide[2]._handCard[i]._card._priority; + _item6._card._angle = _gameBoardSide[2]._handCard[i]._card._angle; + _item6._card._flags = _gameBoardSide[2]._handCard[i]._card._flags; + _item6._card._xe = _gameBoardSide[2]._handCard[i]._card._xe; + _item6._card._xs = _gameBoardSide[2]._handCard[i]._card._xs; + _item6._card._paneRects[0] = _gameBoardSide[2]._handCard[i]._card._paneRects[0]; + _item6._card._paneRects[1] = _gameBoardSide[2]._handCard[i]._card._paneRects[1]; + _item6._card._visage = _gameBoardSide[2]._handCard[i]._card._visage; + _item6._card._objectWrapper = _gameBoardSide[2]._handCard[i]._card._objectWrapper; + _item6._card._strip = _gameBoardSide[2]._handCard[i]._card._strip; + _item6._card._animateMode = _gameBoardSide[2]._handCard[i]._card._animateMode; + _item6._card._frame = _gameBoardSide[2]._handCard[i]._card._frame; + _item6._card._endFrame = _gameBoardSide[2]._handCard[i]._card._endFrame; // _field68 is named _field76 in R2R - _item6._object1._field68 = _arrunkObj1337[2]._arr1[di]._object1._field68; - _item6._object1._frameChange = _arrunkObj1337[2]._arr1[di]._object1._frameChange; - _item6._object1._numFrames = _arrunkObj1337[2]._arr1[di]._object1._numFrames; - _item6._object1._regionIndex = _arrunkObj1337[2]._arr1[di]._object1._regionIndex; - _item6._object1._mover = _arrunkObj1337[2]._arr1[di]._object1._mover; - _item6._object1._moveDiff = _arrunkObj1337[2]._arr1[di]._object1._moveDiff; - _item6._object1._moveRate = _arrunkObj1337[2]._arr1[di]._object1._moveRate; - _item6._object1._field8A = _arrunkObj1337[2]._arr1[di]._object1._field8A; - _item6._object1._endAction = _arrunkObj1337[2]._arr1[di]._object1._endAction; - _item6._object1._regionBitList = _arrunkObj1337[2]._arr1[di]._object1._regionBitList; - // _item6._object1._actorName = _arrunkObj1337[2]._arr1[di]._object1._actorName; - _item6._object1._fieldE = _arrunkObj1337[2]._arr1[di]._object1._fieldE; - _item6._object1._field10 = _arrunkObj1337[2]._arr1[di]._object1._field10; - warning("_item6._object1._field12 = _arrunkObj1337[2]._arr1[di]._object1._field12;"); - warning("_item6._object1._field14 = _arrunkObj1337[2]._arr1[di]._object1._field14;"); - warning("_item6._object1._field16 = _arrunkObj1337[2]._arr1[di]._object1._field16;"); - _item6._object1 = _arrunkObj1337[2]._arr1[di]._object1; - } - } - - if (di == 4) { - subCDB90(1, _item6._field36); + _item6._card._field68 = _gameBoardSide[2]._handCard[i]._card._field68; + _item6._card._frameChange = _gameBoardSide[2]._handCard[i]._card._frameChange; + _item6._card._numFrames = _gameBoardSide[2]._handCard[i]._card._numFrames; + _item6._card._regionIndex = _gameBoardSide[2]._handCard[i]._card._regionIndex; + _item6._card._mover = _gameBoardSide[2]._handCard[i]._card._mover; + _item6._card._moveDiff = _gameBoardSide[2]._handCard[i]._card._moveDiff; + _item6._card._moveRate = _gameBoardSide[2]._handCard[i]._card._moveRate; + _item6._card._actorDestPos = _gameBoardSide[2]._handCard[i]._card._actorDestPos; + _item6._card._endAction = _gameBoardSide[2]._handCard[i]._card._endAction; + _item6._card._regionBitList = _gameBoardSide[2]._handCard[i]._card._regionBitList; + // _item6._object1._actorName = _gameBoardSide[2]._handCard[di]._object1._actorName; + _item6._card._fieldE = _gameBoardSide[2]._handCard[i]._card._fieldE; + _item6._card._field10 = _gameBoardSide[2]._handCard[i]._card._field10; + warning("_item6._object1._field12 = _gameBoardSide[2]._handCard[di]._object1._field12;"); + warning("_item6._object1._field14 = _gameBoardSide[2]._handCard[di]._object1._field14;"); + warning("_item6._object1._field16 = _gameBoardSide[2]._handCard[di]._object1._field16;"); + _item6._card = _gameBoardSide[2]._handCard[i]._card; + } + } + + if (i == 4) { + subCDB90(1, _item6._stationPos); subD0281(); return; } } else if (R2_GLOBALS._v57810 == 300) { - subCDB90(3, _item6._field36); + subCDB90(3, _item6._stationPos); subD0281(); return; } else { @@ -6464,7 +6480,7 @@ void Scene1337::subD02CA() { } // That continues the block when R2_GLOBALS._v57810 == 200 and di != 4 - subD18B5(1332, _item6._object1._strip, _item6._object1._frame); + setCursorData(1332, _item6._card._strip, _item6._card._frame); R2_GLOBALS._sceneObjects->draw(); Event event; bool found = false; @@ -6472,23 +6488,23 @@ void Scene1337::subD02CA() { for (;;) { if ( ((g_globals->_events.getEvent(event, EVENT_BUTTON_DOWN)) && (event.btnState == BTNSHIFT_RIGHT)) || (g_globals->_events.getEvent(event, EVENT_KEYPRESS)) ){ - _item6._field36 = g_globals->_events._mousePos; + _item6._stationPos = g_globals->_events._mousePos; found_di = false; for (int i = 0; i <= 3; i ++) { - if (subC2BF8(&_arrunkObj1337[2]._arr1[i], Common::Point(_item6._field36.x + 12, _item6._field36.y + 12)) != 0) { - if (_arrunkObj1337[2]._arr1[i]._field34 == 0) { - _arrunkObj1337[2]._arr1[i]._field34 = _item6._field34; - _arrunkObj1337[2]._arr1[i]._object1.postInit(); - _arrunkObj1337[2]._arr1[i]._object1.hide(); - _arrunkObj1337[2]._arr1[i]._object1.setVisage(1332); - _arrunkObj1337[2]._arr1[i]._object1.setPosition(_arrunkObj1337[2]._arr1[i]._field36, 0); - _arrunkObj1337[2]._arr1[i]._object1.fixPriority(170); - setAnimationInfo(&_arrunkObj1337[2]._arr1[i]); - subD18B5(5, 1, 4); + if (subC2BF8(&_gameBoardSide[2]._handCard[i], Common::Point(_item6._stationPos.x + 12, _item6._stationPos.y + 12)) != 0) { + if (_gameBoardSide[2]._handCard[i]._cardId == 0) { + _gameBoardSide[2]._handCard[i]._cardId = _item6._cardId; + _gameBoardSide[2]._handCard[i]._card.postInit(); + _gameBoardSide[2]._handCard[i]._card.hide(); + _gameBoardSide[2]._handCard[i]._card.setVisage(1332); + _gameBoardSide[2]._handCard[i]._card.setPosition(_gameBoardSide[2]._handCard[i]._stationPos, 0); + _gameBoardSide[2]._handCard[i]._card.fixPriority(170); + setAnimationInfo(&_gameBoardSide[2]._handCard[i]); + setCursorData(5, 1, 4); found = true; - _field423E--; - _field4244 = 0; + _currentPlayerNumb--; + _field4244 = false; subC20F9(); } else { actionDisplay(1330, 127, 159, 10, 1, 200, 0, 7, 0, 154, 154); @@ -6499,68 +6515,68 @@ void Scene1337::subD02CA() { } if ((!found) && (!found_di)) { - if (subC2BF8(&_item7, Common::Point(_item6._field36.x + 12, _item6._field36.y + 12)) != 0) { + if (subC2BF8(&_discardPile, Common::Point(_item6._stationPos.x + 12, _item6._stationPos.y + 12)) != 0) { subC4A39(&_item6); } else if (!found) { bool foundVar4; int i; - if (_item6._field34 == 1) { + if (_item6._cardId == 1) { foundVar4 = false; for (i = 0; i <= 7; i++) { - if (subC2BF8(&_arrunkObj1337[2]._arr2[i], Common::Point(_item6._field36.x + 12, _item6._field36.y + 12)) != 0) { + if (subC2BF8(&_gameBoardSide[2]._outpostStation[i], Common::Point(_item6._stationPos.x + 12, _item6._stationPos.y + 12)) != 0) { foundVar4 = true; break; } } - if ((foundVar4) && (_arrunkObj1337[2]._arr2[i]._field34 == 0)) { - if (subC27B5(_arrunkObj1337[2]._arr3[0]._field34) != -1) { + if ((foundVar4) && (_gameBoardSide[2]._outpostStation[i]._cardId == 0)) { + if (subC27B5(_gameBoardSide[2]._delayCard._cardId) != -1) { actionDisplay(1330, 55, 159, 10, 1, 200, 0, 7, 0, 154, 154); } else { - subC340B(&_item6, &_arrunkObj1337[2]._arr2[i]); + subC340B(&_item6, &_gameBoardSide[2]._outpostStation[i]); return; } } else { actionDisplay(1330, 56, 159, 10, 1, 200, 0, 7, 0, 154, 154); } - } else if (_item6._field34 <= 9) { + } else if (_item6._cardId <= 9) { foundVar4 = false; for (i = 0; i <= 7; i++) { - if (subC2BF8(&_arrunkObj1337[2]._arr2[i], Common::Point(_item6._field36.x + 12, _item6._field36.y + 12)) != 0) { + if (subC2BF8(&_gameBoardSide[2]._outpostStation[i], Common::Point(_item6._stationPos.x + 12, _item6._stationPos.y + 12)) != 0) { foundVar4 = true; break; } } - if ((foundVar4) && (_arrunkObj1337[2]._arr2[i]._field34 == 1)) { + if ((foundVar4) && (_gameBoardSide[2]._outpostStation[i]._cardId == 1)) { foundVar4 = false; int j; for (j = 0; j <= 7; j++) { - if (_item6._field34 == _arrunkObj1337[2]._arr2[j]._field34) { + if (_item6._cardId == _gameBoardSide[2]._outpostStation[j]._cardId) { foundVar4 = true; break; } } if (foundVar4) { actionDisplay(1330, 34, 159, 10, 1, 200, 0, 7, 0, 154, 154); - } else if (subC27B5(_arrunkObj1337[2]._arr3[0]._field34) != -1) { + } else if (subC27B5(_gameBoardSide[2]._delayCard._cardId) != -1) { actionDisplay(1330, 35, 159, 10, 1, 200, 0, 7, 0, 154, 154); } else { if (j == 7) _field424A = 2; - subC33C0(&_item6, &_arrunkObj1337[2]._arr2[i]); + subC33C0(&_item6, &_gameBoardSide[2]._outpostStation[i]); return; } } else { actionDisplay(1330, 37, 159, 10, 1, 200, 0, 7, 0, 154, 154); } } else { - if ((_item6._field34 == 26) || (_item6._field34 == 30) ||(_item6._field34 == 32) || (_item6._field34 == 28)) { - if (subC2BF8(&_arrunkObj1337[2]._arr3[0], Common::Point(_item6._field36.x + 12, _item6._field36.y + 12)) != 0) { + if ((_item6._cardId == 26) || (_item6._cardId == 30) ||(_item6._cardId == 32) || (_item6._cardId == 28)) { + if (subC2BF8(&_gameBoardSide[2]._delayCard, Common::Point(_item6._stationPos.x + 12, _item6._stationPos.y + 12)) != 0) { actionDisplay(1330, 42, 159, 10, 1, 200, 0, 7, 0, 154, 154); - } else if (!subC3386(_arrunkObj1337[2]._arr3[0]._field34, _item6._field34)) { - if (_arrunkObj1337[2]._arr3[0]._field34 != 0) { - switch (_arrunkObj1337[2]._arr3[0]._field34) { + } else if (!subC3386(_gameBoardSide[2]._delayCard._cardId, _item6._cardId)) { + if (_gameBoardSide[2]._delayCard._cardId != 0) { + switch (_gameBoardSide[2]._delayCard._cardId) { case 11: actionDisplay(1330, 68, 159, 10, 1, 200, 0, 7, 0, 154, 154); break; @@ -6580,15 +6596,15 @@ void Scene1337::subD02CA() { actionDisplay(1330, 41, 159, 10, 1, 200, 0, 7, 0, 154, 154); } } else { - subC34A1(&_item6, &_arrunkObj1337[2]._arr3[0]); + subC34A1(&_item6, &_gameBoardSide[2]._delayCard); return; } } else { - if ((subC27F9(_item6._field34) == -1) && (subC27B5(_item6._field34) == -1)) { - if (_item6._field34 == 13) { - if (subC2BF8(&_arrunkObj1337[0]._arr4[0], Common::Point(_item6._field36.x + 12, _item6._field36.y + 12)) != 0) { + if ((subC27F9(_item6._cardId) == -1) && (subC27B5(_item6._cardId) == -1)) { + if (_item6._cardId == 13) { + if (subC2BF8(&_gameBoardSide[0]._emptyStationPos, Common::Point(_item6._stationPos.x + 12, _item6._stationPos.y + 12)) != 0) { for (int k = 0; k <= 7; k++) { - if (_arrunkObj1337[0]._arr2[k]._field34 != 0) { + if (_gameBoardSide[0]._outpostStation[k]._cardId != 0) { found = true; subC358E(&_item6, 0); } @@ -6596,18 +6612,18 @@ void Scene1337::subD02CA() { if (!found) actionDisplay(1330, 74, 159, 10, 1, 200, 0, 7, 0, 154, 154); - } else if (subC2BF8(&_arrunkObj1337[3]._arr4[0], Common::Point(_item6._field36.x + 12, _item6._field36.y + 12)) != 0) { + } else if (subC2BF8(&_gameBoardSide[3]._emptyStationPos, Common::Point(_item6._stationPos.x + 12, _item6._stationPos.y + 12)) != 0) { for (int k = 0; k <= 7; k++) { - if (_arrunkObj1337[3]._arr2[k]._field34 != 0) { + if (_gameBoardSide[3]._outpostStation[k]._cardId != 0) { found = true; subC358E(&_item6, 3); } } if (!found) actionDisplay(1330, 74, 159, 10, 1, 200, 0, 7, 0, 154, 154); - } else if (subC2BF8(&_arrunkObj1337[1]._arr4[0], Common::Point(_item6._field36.x + 12, _item6._field36.y + 12)) != 0) { + } else if (subC2BF8(&_gameBoardSide[1]._emptyStationPos, Common::Point(_item6._stationPos.x + 12, _item6._stationPos.y + 12)) != 0) { for (int k = 0; k <= 7; k++) { - if (_arrunkObj1337[1]._arr2[k]._field34 == 0) { + if (_gameBoardSide[1]._outpostStation[k]._cardId == 0) { found = true; subC358E(&_item6, 1); } @@ -6617,48 +6633,48 @@ void Scene1337::subD02CA() { } else { actionDisplay(1330, 128, 159, 10, 1, 200, 0, 7, 0, 154, 154); } - } else if (_item6._field34 == 25) { + } else if (_item6._cardId == 25) { int k; - if (subC2BF8(&_arrunkObj1337[0]._arr4[0], Common::Point(_item6._field36.x + 12, _item6._field36.y + 12)) != 0) { - if ( (_arrunkObj1337[0]._arr1[0]._field34 != 0) - || (_arrunkObj1337[0]._arr1[1]._field34 != 0) - || (_arrunkObj1337[0]._arr1[2]._field34 != 0) - || (_arrunkObj1337[0]._arr1[3]._field34 != 0) ) { + if (subC2BF8(&_gameBoardSide[0]._emptyStationPos, Common::Point(_item6._stationPos.x + 12, _item6._stationPos.y + 12)) != 0) { + if ( (_gameBoardSide[0]._handCard[0]._cardId != 0) + || (_gameBoardSide[0]._handCard[1]._cardId != 0) + || (_gameBoardSide[0]._handCard[2]._cardId != 0) + || (_gameBoardSide[0]._handCard[3]._cardId != 0) ) { for (k = 0; k <= 3; k++){ - if (_arrunkObj1337[2]._arr1[k]._field34 == 0) + if (_gameBoardSide[2]._handCard[k]._cardId == 0) break; } - subC318B(2, &_arrunkObj1337[2]._arr1[k], 0); + subC318B(2, &_gameBoardSide[2]._handCard[k], 0); return; } else { actionDisplay(1330, 99, 159, 10, 1, 200, 0, 7, 0, 154, 154); } - } else if (subC2BF8(&_arrunkObj1337[1]._arr4[0], Common::Point(_item6._field36.x + 12, _item6._field36.y + 12)) != 0) { - if ( (_arrunkObj1337[1]._arr1[0]._field34 != 0) - || (_arrunkObj1337[1]._arr1[1]._field34 != 0) - || (_arrunkObj1337[1]._arr1[2]._field34 != 0) - || (_arrunkObj1337[1]._arr1[3]._field34 != 0) ) { + } else if (subC2BF8(&_gameBoardSide[1]._emptyStationPos, Common::Point(_item6._stationPos.x + 12, _item6._stationPos.y + 12)) != 0) { + if ( (_gameBoardSide[1]._handCard[0]._cardId != 0) + || (_gameBoardSide[1]._handCard[1]._cardId != 0) + || (_gameBoardSide[1]._handCard[2]._cardId != 0) + || (_gameBoardSide[1]._handCard[3]._cardId != 0) ) { for (k = 0; k <= 3; k++){ - if (_arrunkObj1337[2]._arr1[k]._field34 == 0) + if (_gameBoardSide[2]._handCard[k]._cardId == 0) break; } - subC318B(2, &_arrunkObj1337[2]._arr1[k], 1); + subC318B(2, &_gameBoardSide[2]._handCard[k], 1); return; } else { actionDisplay(1330, 99, 159, 10, 1, 200, 0, 7, 0, 154, 154); } } - if (subC2BF8(&_arrunkObj1337[3]._arr4[0], Common::Point(_item6._field36.x + 12, _item6._field36.y + 12)) != 0) { - if ( (_arrunkObj1337[3]._arr1[0]._field34 != 0) - || (_arrunkObj1337[3]._arr1[1]._field34 != 0) - || (_arrunkObj1337[3]._arr1[2]._field34 != 0) - || (_arrunkObj1337[3]._arr1[3]._field34 != 0) ) { + if (subC2BF8(&_gameBoardSide[3]._emptyStationPos, Common::Point(_item6._stationPos.x + 12, _item6._stationPos.y + 12)) != 0) { + if ( (_gameBoardSide[3]._handCard[0]._cardId != 0) + || (_gameBoardSide[3]._handCard[1]._cardId != 0) + || (_gameBoardSide[3]._handCard[2]._cardId != 0) + || (_gameBoardSide[3]._handCard[3]._cardId != 0) ) { for (k = 0; k <= 3; k++){ - if (_arrunkObj1337[2]._arr1[k]._field34 == 0) + if (_gameBoardSide[2]._handCard[k]._cardId == 0) break; } - subC318B(2, &_arrunkObj1337[2]._arr1[k], 3); + subC318B(2, &_gameBoardSide[2]._handCard[k], 3); return; } else { actionDisplay(1330, 99, 159, 10, 1, 200, 0, 7, 0, 154, 154); @@ -6666,17 +6682,17 @@ void Scene1337::subD02CA() { } else { actionDisplay(1330, 129, 159, 10, 1, 200, 0, 7, 0, 154, 154); } - } else if (_item6._field34 == 29) { + } else if (_item6._cardId == 29) { actionDisplay(1330, 136, 159, 10, 1, 200, 0, 7, 0, 154, 154); - } else if (_item6._field34 == 27) { + } else if (_item6._cardId == 27) { actionDisplay(1330, 137, 159, 10, 1, 200, 0, 7, 0, 154, 154); } } else { - if (subC2BF8(&_arrunkObj1337[0]._arr3[0], Common::Point(_item6._field36.x + 12, _item6._field36.y + 12)) != 0) { - if (_arrunkObj1337[0]._arr3[0]._field34 != 0) { + if (subC2BF8(&_gameBoardSide[0]._delayCard, Common::Point(_item6._stationPos.x + 12, _item6._stationPos.y + 12)) != 0) { + if (_gameBoardSide[0]._delayCard._cardId != 0) { actionDisplay(1330, 15, 159, 10, 1, 200, 0, 7, 0, 154, 154); - } else if (!subC32B1(0, _item6._field34)) { - switch (_item6._field34) { + } else if (!subC32B1(0, _item6._cardId)) { + switch (_item6._cardId) { case 10: actionDisplay(1330, 66, 159, 10, 1, 200, 0, 7, 0, 154, 154); break; @@ -6705,14 +6721,14 @@ void Scene1337::subD02CA() { break; } } else { - subC3456(&_item6, &_arrunkObj1337[0]._arr3[0]); + subC3456(&_item6, &_gameBoardSide[0]._delayCard); found = true; } - } else if (subC2BF8(&_arrunkObj1337[3]._arr3[0], Common::Point(_item6._field36.x + 12, _item6._field36.y + 12)) != 0) { - if (_arrunkObj1337[3]._arr3[0]._field34 != 0) { + } else if (subC2BF8(&_gameBoardSide[3]._delayCard, Common::Point(_item6._stationPos.x + 12, _item6._stationPos.y + 12)) != 0) { + if (_gameBoardSide[3]._delayCard._cardId != 0) { actionDisplay(1330, 17, 159, 10, 1, 200, 0, 7, 0, 154, 154); - } else if (!subC32B1(3, _item6._field34)) { - switch (_item6._field34) { + } else if (!subC32B1(3, _item6._cardId)) { + switch (_item6._cardId) { case 10: actionDisplay(1330, 66, 159, 10, 1, 200, 0, 7, 0, 154, 154); break; @@ -6741,14 +6757,14 @@ void Scene1337::subD02CA() { break; } } else { - subC3456(&_item6, &_arrunkObj1337[3]._arr3[0]); + subC3456(&_item6, &_gameBoardSide[3]._delayCard); found = true; } - } else if (subC2BF8(&_arrunkObj1337[1]._arr3[0], Common::Point(_item6._field36.x + 12, _item6._field36.y + 12)) != 0) { - if (_arrunkObj1337[1]._arr3[0]._field34 != 0) { + } else if (subC2BF8(&_gameBoardSide[1]._delayCard, Common::Point(_item6._stationPos.x + 12, _item6._stationPos.y + 12)) != 0) { + if (_gameBoardSide[1]._delayCard._cardId != 0) { actionDisplay(1330, 19, 159, 10, 1, 200, 0, 7, 0, 154, 154); - } else if (!subC32B1(1, _item6._field34)) { - switch (_item6._field34) { + } else if (!subC32B1(1, _item6._cardId)) { + switch (_item6._cardId) { case 10: actionDisplay(1330, 66, 159, 10, 1, 200, 0, 7, 0, 154, 154); break; @@ -6777,7 +6793,7 @@ void Scene1337::subD02CA() { break; } } else { - subC3456(&_item6, &_arrunkObj1337[1]._arr3[0]); + subC3456(&_item6, &_gameBoardSide[1]._delayCard); found = true; } } else { @@ -6813,54 +6829,65 @@ void Scene1337::subD183F(int arg1, int arg2) { R2_GLOBALS._v5780E = 1; } + // The original was using an intermediate function to call setCursorData. + // It has been removed to improve readability if (R2_GLOBALS._v5780E == 1) { R2_GLOBALS._v57810 = 200; - subD195F(1, 4); + setCursorData(5, 1, 4); } else if (R2_GLOBALS._v5780E == 2) { R2_GLOBALS._v57810 = 300; - subD195F(1, 5); + setCursorData(5, 1, 5); } else { R2_GLOBALS._v57810 = 0; - subD195F(0, 0); + setCursorData(5, 0, 0); } } -void Scene1337::subD18B5(int resNum, int rlbNum, int arg3) { - warning("STUBBED lvl3 Scene1337::subD18B5()"); +void Scene1337::setCursorData(int resNum, int rlbNum, int frameNum) { + _cursorCurRes = resNum; + _cursorCurStrip = rlbNum; + _cursorCurFrame = frameNum; + + if (!frameNum) { + // Should be a hardcoded cursor displaying only a dot. + // FIXME: Use another cursor when possible + R2_GLOBALS._events.setCursor(CURSOR_CROSSHAIRS); + } else { + uint size; + byte *cursor = g_resourceManager->getSubResource(resNum, rlbNum, frameNum, &size); + // Decode the cursor + GfxSurface s = surfaceFromRes(cursor); + + Graphics::Surface surface = s.lockSurface(); + const byte *cursorData = (const byte *)surface.getPixels(); + CursorMan.replaceCursor(cursorData, surface.w, surface.h, s._centroid.x, s._centroid.y, s._transColor); + s.unlockSurface(); + } } -int Scene1337::subD18F5() { +void Scene1337::subD18F5() { if (R2_GLOBALS._v57709 == 0) - // The cursor looks... very dummy - // To be checked - warning("TODO: CursorManager.setData(R2_GLOBALS.off_57705)"); + R2_GLOBALS._events.setCursor(CURSOR_CROSSHAIRS); ++R2_GLOBALS._v57709; - - return R2_GLOBALS._v57709; } -int Scene1337::subD1917() { +void Scene1337::subD1917() { if (R2_GLOBALS._v57709 != 0) { R2_GLOBALS._v57709--; - if (R2_GLOBALS._v57709 != 0) - warning("FIXME: subD195F(_width, _data);"); + if (R2_GLOBALS._v57709 != 0) { + // The original was using an intermediate function to call setCursorData. + // It has been removed to improve readability + setCursorData(5, _cursorCurStrip, _cursorCurFrame); + } } - - return R2_GLOBALS._v57709; } -int Scene1337::subD1940(bool flag) { +void Scene1337::subD1940(bool flag) { if (flag) ++R2_GLOBALS._v5780C; else if (R2_GLOBALS._v5780C != 0) --R2_GLOBALS._v5780C; - - return R2_GLOBALS._v5780C; -} - -void Scene1337::subD195F(int arg1, int arg2) { - subD18B5(5, arg1, arg2); } void Scene1337::subD1975(int arg1, int arg2) { @@ -15336,7 +15363,6 @@ void Scene1950::signal() { R2_GLOBALS._player.setVisage(22); R2_GLOBALS._player.animate(ANIM_MODE_1, NULL); - warning("%d %d", R2_GLOBALS._player._position.x, R2_GLOBALS._player._position.y); // This is a hack to work around a pathfinding issue. original destination is (218, 165) Common::Point pt(128, 165); NpcMover *mover = new NpcMover(); diff --git a/engines/tsage/ringworld2/ringworld2_scenes1.h b/engines/tsage/ringworld2/ringworld2_scenes1.h index cc114b2033..30ef4eecfe 100644 --- a/engines/tsage/ringworld2/ringworld2_scenes1.h +++ b/engines/tsage/ringworld2/ringworld2_scenes1.h @@ -183,38 +183,37 @@ public: }; class Scene1337 : public SceneExt { - class unkObj1337sub1: public SceneHotspot { + class Card: public SceneHotspot { public: - SceneObject _object1; + SceneObject _card; - int _field34; - Common::Point _field36; + int _cardId; + Common::Point _stationPos; - unkObj1337sub1(); + Card(); void synchronize(Serializer &s); }; - class unkObj1337_1: public SceneHotspot { + class GameBoardSide: public SceneHotspot { public: - unkObj1337sub1 _arr1[4]; - unkObj1337sub1 _arr2[8]; - unkObj1337sub1 _arr3[1]; - unkObj1337sub1 _arr4[1]; + Card _handCard[4]; + Card _outpostStation[8]; + Card _delayCard; + Card _emptyStationPos; - Common::Point _fieldB94; - Common::Point _fieldB98; - Common::Point _fieldB9C; - Common::Point _fieldBA0; - int _fieldBA4; + Common::Point _card1Pos; + Common::Point _card2Pos; + Common::Point _card3Pos; + Common::Point _card4Pos; + int _frameNum; - unkObj1337_1(); + GameBoardSide(); void synchronize(Serializer &s); }; class Action1337: public Action { public: - void subD18B5(int resNum, int stripNum, int frameNum); - void skipFrames(int32 skipCount); + void waitFrames(int32 frameCount); }; class Action1: public Action1337 { @@ -277,9 +276,9 @@ public: ASound _aSound2; BackgroundSceneObject _background1; bool _autoplay; - unkObj1337_1 _arrunkObj1337[4]; + GameBoardSide _gameBoardSide[4]; SceneItem _item1; - SceneObject _object1; + SceneObject _currentPlayerArrow; Action1 _action1; Action2 _action2; Action3 _action3; @@ -293,39 +292,43 @@ public: Action11 _action11; Action12 _action12; Action13 _action13; - unkObj1337sub1 _item2; - unkObj1337sub1 _item3; - unkObj1337sub1 _item4; + Card _animatedCard; + Card _shuffleAnimation; + Card _item4; BackgroundSceneObject _background2; - int _field3E24; - int _field3E26; - int _field3E28[100]; - unkObj1337sub1 *_field3EF0; - unkObj1337sub1 *_field3EF4; - unkObj1337sub1 *_field3EF8; - unkObj1337sub1 _item5; - unkObj1337sub1 _item6; - unkObj1337sub1 _item7; - unkObj1337sub1 _item8; - int _field423C; - int _field423E; + int _cardsAvailableNumb; + + // Discarded cards are put in the available cards pile, with an higher index so there no conflict + int _currentDiscardIndex; + int _availableCardsPile[100]; + Card *_discardCard; + Card *_field3EF4; + Card *_field3EF8; + Card _item5; + Card _item6; + Card _discardPile; + Card _stockPile; + bool _shuffleEndedFl; + int _currentPlayerNumb; int _field4240; int _field4242; - int _field4244; - int _field4246; - int _field4248; + bool _field4244; + bool _field4246; int _field424A; - int _field424C; - int _field424E; + int _instructionsDisplayedFl; + int _instructionsWaitCount; + int _cursorCurRes; + int _cursorCurStrip; + int _cursorCurFrame; - SceneObject _arrObject1[8]; - SceneObject _arrObject2[8]; + SceneObject _upperDisplayCard[8]; + SceneObject _lowerDisplayCard[8]; Scene1337(); virtual void synchronize(Serializer &s); void actionDisplay(int resNum, int lineNum, int x, int y, int arg5, int width, int textMode, int fontNum, int colFG, int colBGExt, int colFGExt); - void setAnimationInfo(unkObj1337sub1 *subObj); + void setAnimationInfo(Card *subObj); void subC20E5(); void subC20F9(); void subC2586(); @@ -338,30 +341,30 @@ public: int subC27B5(int arg1); int subC27F9(int arg1); void subC2835(int arg1); - bool subC2BF8(unkObj1337sub1 *subObj1, Common::Point pt); + bool subC2BF8(Card *subObj1, Common::Point pt); void subC2C2F(); - void subC318B(int arg1, unkObj1337sub1 *subObj2, int arg3); + void subC318B(int arg1, Card *subObj2, int arg3); int subC3257(int arg1); bool subC32B1(int arg1, int arg2); int subC331B(int arg1); bool subC3386(int arg1, int arg2); - void subC33C0(unkObj1337sub1 *subObj1, unkObj1337sub1 *subObj2); - void subC3456(unkObj1337sub1 *subObj1, unkObj1337sub1 *subObj2); - void subC340B(unkObj1337sub1 *subObj1, unkObj1337sub1 *subObj2); - void subC34A1(unkObj1337sub1 *subObj1, unkObj1337sub1 *subObj2); - unkObj1337sub1 *subC34EC(int arg1); - void subC358E(unkObj1337sub1 *subObj1, int arg2); + void subC33C0(Card *subObj1, Card *subObj2); + void subC3456(Card *subObj1, Card *subObj2); + void subC340B(Card *subObj1, Card *subObj2); + void subC34A1(Card *subObj1, Card *subObj2); + Card *subC34EC(int arg1); + void subC358E(Card *subObj1, int arg2); int subC3E92(int arg1); - void subC4A39(unkObj1337sub1 *subObj); + void subC4A39(Card *subObj); void subC4CD2(); void subC4CEC(); - void subC51A0(unkObj1337sub1 *subObj1, unkObj1337sub1 *subObj2); + void subC51A0(Card *subObj1, Card *subObj2); void displayDialog(int dialogNumb); void subPostInit(); - void subCB59B(); + void displayInstructions(); void suggestInstructions(); void shuffleCards(); - void subCCF26(); + void dealCards(); void subCD193(); void subCDB90(int arg1, Common::Point pt); void subCF31D(); @@ -370,11 +373,10 @@ public: void subD0281(); void subD02CA(); void subD183F(int arg1, int arg2); - void subD18B5(int resNum, int rlbNum, int arg3); - int subD18F5(); - int subD1917(); - int subD1940(bool flag); - void subD195F(int arg1, int arg2); + void setCursorData(int resNum, int rlbNum, int frameNum); + void subD18F5(); + void subD1917(); + void subD1940(bool flag); void subD1975(int arg1, int arg2); void subD1A48(int arg1); diff --git a/engines/tsage/ringworld2/ringworld2_scenes3.cpp b/engines/tsage/ringworld2/ringworld2_scenes3.cpp index eab3178368..732add03ec 100644 --- a/engines/tsage/ringworld2/ringworld2_scenes3.cpp +++ b/engines/tsage/ringworld2/ringworld2_scenes3.cpp @@ -492,7 +492,7 @@ bool Scene3150::ToiletFlush::startAction(CursorType action, Event &event) { scene->setAction(&scene->_sequenceManager, scene, 3152, &R2_GLOBALS._player, NULL); } else { scene->_sceneMode = 3153; - scene->setAction(&scene->_sequenceManager, scene, 3152, &R2_GLOBALS._player, &scene->_water, NULL); + scene->setAction(&scene->_sequenceManager, scene, 3153, &R2_GLOBALS._player, &scene->_water, NULL); } } else { SceneItem::display(3150, 42, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, LIST_END); @@ -629,7 +629,7 @@ void Scene3150::postInit(SceneObjectList *OwnerList) { if (R2_INVENTORY.getObjectScene(R2_SUPERCONDUCTOR_WIRE) == 3150) { _bulbOrWire.postInit(); - _bulbOrWire.setup(3152, 7, 3); + _bulbOrWire.setup(3152, 7, 2); _bulbOrWire.setPosition(Common::Point(70, 55)); _bulbOrWire.fixPriority(111); _bulbOrWire._effect = EFFECT_SHADED2; @@ -1719,7 +1719,7 @@ void Scene3350::signal() { break; case 3351: _sceneMode = 3352; - setAction(&_sequenceManager, this, 3352, &_seeker, &R2_GLOBALS._player, + setAction(&_sequenceManager, this, 3352, &_seatedPeople, &R2_GLOBALS._player, &_miranda, &_seeker, &_webbster, NULL); break; case 3352: @@ -1996,11 +1996,11 @@ void Scene3375::postInit(SceneObjectList *OwnerList) { setZoomPercents(126, 55, 200, 167); R2_GLOBALS._player.postInit(); - if (R2_GLOBALS._player._characterIndex == R2_SEEKER) { + if (R2_GLOBALS._player._characterIndex == R2_SEEKER) R2_GLOBALS._player._moveDiff = Common::Point(5, 3); - } else { + else R2_GLOBALS._player._moveDiff = Common::Point(3, 2); - } + R2_GLOBALS._player.changeZoom(-1); switch (R2_GLOBALS._player._characterIndex) { @@ -2191,6 +2191,14 @@ void Scene3375::signal() { _companion2._shade = 4; _webbster._effect = EFFECT_SHADED2; _webbster._shade = 4; + + // HACK: Reset zooms in order to avoid giant characters on the upper right of the screen + R2_GLOBALS._player.setZoom(-1); + _companion1.setZoom(-1); + _companion2.setZoom(-1); + _webbster.setZoom(-1); + // + enterArea(_sceneMode); break; case 3379: @@ -2813,7 +2821,7 @@ void Scene3400::remove() { void Scene3400::signal() { switch (_sceneMode) { case 3305: { - // Removed (useless ?) call to sub_1D227 + // First part of discussion _tealSpeaker._object1.hide(); _teal.show(); _teal.setStrip(1); @@ -2825,6 +2833,7 @@ void Scene3400::signal() { } break; case 3306: + // Teal picks up the sapphire R2_GLOBALS._sound2.play(318); _companion1.setStrip(2); R2_GLOBALS._player.setStrip(6); @@ -2835,15 +2844,16 @@ void Scene3400::signal() { _stripManager.start(3307, this); if (R2_GLOBALS._player._characterIndex == R2_SEEKER) { _sceneMode = 3400; - R2_GLOBALS._player.setAction(&_sequenceManager, this, 3400, &R2_GLOBALS._player, &_teal, &_actor8, NULL); + R2_GLOBALS._player.setAction(&_sequenceManager, this, 3400, &R2_GLOBALS._player, &_teal, &_sapphire, NULL); } else { _sceneMode = 3408; - _companion1.setAction(&_sequenceManager, this, 3408, &_companion1, &_teal, &_actor8, NULL); + _companion1.setAction(&_sequenceManager, this, 3408, &_companion1, &_teal, &_sapphire, NULL); } break; case 3307: case 3404: case 3408: + // A tasp! if (!_soundFaded) { R2_GLOBALS._sound2.fadeOut2(NULL); _soundFaded = true; @@ -2853,7 +2863,7 @@ void Scene3400::signal() { } break; case 3308: - // Removed (useless ?) call to sub_1D227 + // Characters teleport one after the other _companion1.setStrip(2); R2_GLOBALS._player.setStrip(6); _companion2.setStrip(6); @@ -2866,7 +2876,7 @@ void Scene3400::signal() { setAction(&_sequenceManager, this, 3403, &_companion1, &_webbster, &_manholeCover, NULL); break; case 3309: - // Removed (useless ?) call to sub_1D227 + // Miranda teleports away _teal.setStrip(1); _sceneMode = 3405; if (R2_GLOBALS._player._characterIndex == R2_MIRANDA) @@ -2875,7 +2885,7 @@ void Scene3400::signal() { setAction(&_sequenceManager, this, 3405, &_companion2, &_manholeCover, NULL); break; case 3310: - // Removed (useless ?) call to sub_1D227 + // Quinn teleports away _teal.setStrip(1); _sceneMode = 3406; if (R2_GLOBALS._player._characterIndex == R2_QUINN) @@ -2886,7 +2896,7 @@ void Scene3400::signal() { setAction(&_sequenceManager, this, 3406, &_companion2, &_manholeCover, NULL); break; case 3311: - // Removed (useless ?) call to sub_1D227 + // Teal teleports away _tealSpeaker._object1.hide(); _teal.show(); _teal.setStrip(1); @@ -2894,8 +2904,9 @@ void Scene3400::signal() { setAction(&_sequenceManager, this, 3407, &_teal, &_manholeCover, NULL); break; case 3400: { - _actor8.postInit(); - _actor8.hide(); + // Teal enters the room + _sapphire.postInit(); + _sapphire.hide(); _teal.postInit(); _teal._numFrames = 7; _teal._moveDiff = Common::Point(3, 2); @@ -2915,37 +2926,44 @@ void Scene3400::signal() { } break; case 3401: + // Teal first speech _sceneMode = 3305; _stripManager.start(3305, this); break; case 3402: + // Betrayal of Webbster _sceneMode = 3306; _stripManager.start(3306, this); break; case 3403: + // Teal: "Miranda..." R2_GLOBALS._scrollFollower = &R2_GLOBALS._player; _sceneMode = 3309; _stripManager.start(3309, this); break; case 3405: + // Teal: "And Quinn..." _sceneMode = 3310; _stripManager.start(3310, this); break; case 3406: + // Teal final sentence before teleporting _sceneMode = 3311; _stripManager.start(3311, this); break; case 3407: + // End of scene R2_GLOBALS._sceneManager.changeScene(3600); break; default: + // Unexpected scene mode R2_GLOBALS._player.enableControl(); break; } } /*-------------------------------------------------------------------------- - * Scene 3500 - Cavern Maze + * Scene 3500 - Flub tube maze * *--------------------------------------------------------------------------*/ @@ -3191,10 +3209,9 @@ void Scene3500::Action1::signal() { scene->_shuttle._frameChange = _direction; scene->_shuttle.setFrame(scene->_shuttle.changeFrame()); } - // All the var_8 initialization was missing in the original + // CHECKME: All the var_8 initialization was missing in the original // but it's clearly a cut and paste error from case 4. // The following code allows the switch to work properly. - warning("Checkme: fix for dead code"); int var_8 = (_direction * 2 + scene->_mazeDirection); if (var_8 > 7) var_8 = 1; @@ -4238,7 +4255,7 @@ void Scene3500::dispatch() { } if (_mazeChangeAmount != 0) { - R2_GLOBALS._player._uiEnabled = false; + R2_GLOBALS._player._uiEnabled = false; if (_mazeChangeAmount != _speed) _aSound1.play(276); } else { @@ -4328,7 +4345,7 @@ void Scene3600::Action2::signal() { scene->_protector.setup(3127, 2, 1); scene->_protector.animate(ANIM_MODE_1, NULL); NpcMover *mover = new NpcMover(); - scene->_protector.addMover(mover, &scene->_protector._field8A, scene); + scene->_protector.addMover(mover, &scene->_protector._actorDestPos, scene); } break; default: @@ -4547,7 +4564,7 @@ void Scene3600::postInit(SceneObjectList *OwnerList) { if (!R2_GLOBALS.getFlag(71)) { _protector.postInit(); _protector._state = 0; - _protector._field8A = Common::Point(226, 152); + _protector._actorDestPos = Common::Point(226, 152); _protector._moveDiff = Common::Point(3, 2); _protector.setPosition(Common::Point(284, 152)); _protector.setup(3127, 2, 1); @@ -4623,7 +4640,7 @@ void Scene3600::remove() { void Scene3600::signal() { switch (_sceneMode) { case 3320: - // Removed (useless ?) call to sub_1D227 + // Move to the console R2_GLOBALS._walkRegions.disableRegion(14); R2_GLOBALS._scrollFollower = &_seeker; _tealSpeaker._object1.hide(); @@ -4639,7 +4656,7 @@ void Scene3600::signal() { &_miranda, &_webbster, &_teal, NULL); break; case 3321: - // Removed (useless ?) call to sub_1D227 + // Teal activates console R2_GLOBALS._scrollFollower = &R2_GLOBALS._player; _tealSpeaker.stopSpeaking(); _teal.show(); @@ -4650,7 +4667,7 @@ void Scene3600::signal() { &_quinn, &_seeker, &_miranda, &_webbster, NULL); break; case 3322: - // Removed (useless ?) call to sub_1D227 + // Teal walks toward the teleport pod, the goule protector appears _quinnSpeaker.stopSpeaking(); _quinnSpeaker._displayMode = 1; _tealSpeaker.stopSpeaking(); @@ -4660,10 +4677,11 @@ void Scene3600::signal() { setAction(&_sequenceManager1, this, _sceneMode, &_teal, &_protector, &_steppingDisk, NULL); break; case 3323: + // Goule protector eats Teal guts then moves + if (!_tealDead) _tealDead = true; else { - // Removed (useless ?) call to sub_1D227 _protectorSpeaker.stopSpeaking(); _protector.show(); _protector.setup(3258, 6, 1); @@ -4702,6 +4720,7 @@ void Scene3600::signal() { _sceneMode = 3623; break; case 3450: + // Speech of Teal and Quinn R2_GLOBALS._sound1.stop(); _protector3400.hide(); _door3400.hide(); @@ -4724,7 +4743,7 @@ void Scene3600::signal() { _protector.postInit(); _protector._state = 0; - _protector._field8A = Common::Point(226, 152); + _protector._actorDestPos = Common::Point(226, 152); _protector._moveDiff = Common::Point(5, 3); _protector.setup(3403, 7, 1); _protector.setPosition(Common::Point(405, 155)); @@ -4766,6 +4785,7 @@ void Scene3600::signal() { R2_GLOBALS._sound2.play(329); break; case 3600: + // First speech by Teal _sceneMode = 3320; _stripManager.start(3320, this); break; @@ -4774,6 +4794,7 @@ void Scene3600::signal() { case 3602: // No break on purpose case 3603: + // Teal speech near the console R2_GLOBALS._walkRegions.disableRegion(2); R2_GLOBALS._walkRegions.disableRegion(7); _tealSpeaker._displayMode = 1; @@ -4781,6 +4802,7 @@ void Scene3600::signal() { _stripManager.start(3321, this); break; case 3604: + // Goule Protector forces the door R2_GLOBALS._sound2.fadeOut2(NULL); R2_GLOBALS._sound1.stop(); R2_GLOBALS._walkRegions.enableRegion(2); @@ -4818,6 +4840,7 @@ void Scene3600::signal() { setAction(&_sequenceManager1, this, 3450, &_protector3400, &_door3400, NULL); break; case 3605: + // Goule protector jumps on Teal _protector.setup(3258, 4, 1); _protector.setAction(&_sequenceManager1, this, 3606, &_teal, &_protector, &_steppingDisk, NULL); @@ -4947,6 +4970,7 @@ void Scene3600::dispatch() { void Scene3700::postInit(SceneObjectList *OwnerList) { loadScene(3700); R2_GLOBALS._uiElements._active = false; + R2_GLOBALS._uiElements._visible = false; SceneExt::postInit(); R2_GLOBALS._interfaceY = SCREEN_HEIGHT; @@ -4993,7 +5017,6 @@ void Scene3700::signal() { case 3328: // No break on purpose case 3329: - // Removed (useless ?) call to sub_1D227 _sceneMode = 3701; setAction(&_sequenceManager, this, 3701, &_seeker, &_miranda, &_webbster, NULL); break; diff --git a/engines/tsage/ringworld2/ringworld2_scenes3.h b/engines/tsage/ringworld2/ringworld2_scenes3.h index b282900c3a..398d09a01e 100644 --- a/engines/tsage/ringworld2/ringworld2_scenes3.h +++ b/engines/tsage/ringworld2/ringworld2_scenes3.h @@ -550,7 +550,7 @@ public: SceneActor _teal; SceneActor _door; SceneActor _manholeCover; - SceneActor _actor8; + SceneActor _sapphire; SequenceManager _sequenceManager; bool _soundFaded; @@ -566,7 +566,7 @@ class Scene3500 : public SceneExt { public: int _direction; bool _field20; - int _field22; + int _field22; // CHECKME: Useless field bool _field24; Action1(); diff --git a/engines/tsage/saveload.h b/engines/tsage/saveload.h index 0d0457981f..32da6ee7f4 100644 --- a/engines/tsage/saveload.h +++ b/engines/tsage/saveload.h @@ -33,7 +33,7 @@ namespace TsAGE { typedef void (*SaveNotifierFn)(bool postFlag); -#define TSAGE_SAVEGAME_VERSION 11 +#define TSAGE_SAVEGAME_VERSION 12 class SavedObject; diff --git a/engines/tsage/sound.cpp b/engines/tsage/sound.cpp index e2fe21c6d7..6633d15c26 100644 --- a/engines/tsage/sound.cpp +++ b/engines/tsage/sound.cpp @@ -2734,8 +2734,6 @@ AdlibSoundDriver::AdlibSoundDriver(): SoundDriver() { _masterVolume = 0; _groupData._groupMask = 9; - _groupData._v1 = 0x46; - _groupData._v2 = 0; _groupData._pData = &adlib_group_data[0]; _mixer = g_vm->_mixer; @@ -3053,8 +3051,6 @@ SoundBlasterDriver::SoundBlasterDriver(): SoundDriver() { _masterVolume = 0; _groupData._groupMask = 1; - _groupData._v1 = 0x3E; - _groupData._v2 = 0; static byte const group_data[] = { 3, 1, 1, 0, 0xff }; _groupData._pData = group_data; diff --git a/engines/tsage/sound.h b/engines/tsage/sound.h index 3f039ff9e9..fefe8ad101 100644 --- a/engines/tsage/sound.h +++ b/engines/tsage/sound.h @@ -63,8 +63,6 @@ public: struct GroupData { uint32 _groupMask; - byte _v1; - byte _v2; const byte *_pData; }; |