From 211eb00e8725e36b8c802a9b7b9b9812e9c3053e Mon Sep 17 00:00:00 2001 From: Strangerke Date: Fri, 30 Dec 2011 12:08:41 +0100 Subject: TSAGE: R2R - Cleanup: reorganise speakers, add ancestor classes where speaker declaration is common to several speakers. --- engines/tsage/ringworld2/ringworld2_speakers.cpp | 2306 +++++++++------------- 1 file changed, 946 insertions(+), 1360 deletions(-) (limited to 'engines/tsage/ringworld2/ringworld2_speakers.cpp') diff --git a/engines/tsage/ringworld2/ringworld2_speakers.cpp b/engines/tsage/ringworld2/ringworld2_speakers.cpp index b8773192b0..7f5cdc1328 100644 --- a/engines/tsage/ringworld2/ringworld2_speakers.cpp +++ b/engines/tsage/ringworld2/ringworld2_speakers.cpp @@ -191,11 +191,13 @@ void VisualSpeaker::setDelay(int delay) { _frameNumber = R2_GLOBALS._events.getFrameNumber(); } -/*--------------------------------------------------------------------------*/ +//---------------------------------------------------------------------------- +// Classes related to CAPTAIN +//---------------------------------------------------------------------------- -SpeakerMiranda300::SpeakerMiranda300(): VisualSpeaker() { - _speakerName = "MIRANDA"; - _color1 = 154; +SpeakerCaptain3210::SpeakerCaptain3210() { + _speakerName = "Captain"; + _color1 = 5; _color2 = 0; _fieldF6 = 0; _textWidth = 300; @@ -205,17 +207,12 @@ SpeakerMiranda300::SpeakerMiranda300(): VisualSpeaker() { _numFrames = 0; } -void SpeakerMiranda300::proc15() { +void SpeakerCaptain3210::proc15() { int v = _fieldF6; + Scene3210 *scene = (Scene3210 *)R2_GLOBALS._sceneManager._scene; if (!_object2) { - if (R2_GLOBALS._player._characterIndex == 3) { - _object2 = &R2_GLOBALS._player; - } else { - Scene300 *scene = (Scene300 *)R2_GLOBALS._sceneManager._scene; - _object2 = &scene->_miranda; - } - + _object2 = &scene->_actor1; _object2->hide(); _object1.postInit(); _object1.setPosition(_object2->_position); @@ -226,30 +223,20 @@ void SpeakerMiranda300::proc15() { if (v == 0) { _object1.animate(ANIM_MODE_2, NULL); - } else if (v == 100) { - _numFrames = 0; - ((SceneItem *)_action)->_sceneRegionId = 0; - - _object1.setStrip(_object1._strip - 1); - _object1.setFrame(_object1.getFrameCount()); - _object1.animate(ANIM_MODE_6, this); } else { ((SceneItem *)_action)->_sceneRegionId = 0; - - if (v == 4) { - _object1.setup(304, 5, 1); - } else { - _object1.setup(305, v * 2 - 1, 1); - } + _object1.setup(4060, (_object2->_strip * 2) - 1, 1); _object1.animate(ANIM_MODE_5, this); } } -/*--------------------------------------------------------------------------*/ +//---------------------------------------------------------------------------- +// Classes related to CARETAKER +//---------------------------------------------------------------------------- -SpeakerSeeker300::SpeakerSeeker300(): VisualSpeaker() { - _speakerName = "SEEKER"; - _color1 = 35; +SpeakerCaretaker2450::SpeakerCaretaker2450() { + _speakerName = "CARETAKER"; + _color1 = 43; _color2 = 0; _fieldF6 = 0; _textWidth = 300; @@ -259,20 +246,30 @@ SpeakerSeeker300::SpeakerSeeker300(): VisualSpeaker() { _numFrames = 0; } -void SpeakerSeeker300::proc15() { +//---------------------------------------------------------------------------- +// Classes related to GUARD +//---------------------------------------------------------------------------- + +SpeakerGuard::SpeakerGuard() { + _speakerName = "GUARD"; + _color1 = 5; + _color2 = 0; + _fieldF6 = 0; + _textWidth = 300; + _hideObjects = false; + _object2 = NULL; + _displayMode = 1; + _numFrames = 0; +} + +void SpeakerGuard2800::proc15() { int v = _fieldF6; + Scene2750 *scene = (Scene2750 *)R2_GLOBALS._sceneManager._scene; if (!_object2) { - if (R2_GLOBALS._player._characterIndex == 3) { - _object2 = &R2_GLOBALS._player; - } else { - Scene300 *scene = (Scene300 *)R2_GLOBALS._sceneManager._scene; - _object2 = &scene->_seeker; - } - + _object2 = &scene->_actor1; _object2->hide(); _object1.postInit(); - _object1.fixPriority(140); _object1.setPosition(_object2->_position); if (_object2->_mover) @@ -281,55 +278,21 @@ void SpeakerSeeker300::proc15() { if (v == 0) { _object1.animate(ANIM_MODE_2, NULL); - } else if (v == 100) { - _numFrames = 0; - ((SceneItem *)_action)->_sceneRegionId = 0; - - _object1.setStrip(_object1._strip - 1); - _object1.setFrame(_object1.getFrameCount()); - _object1.animate(ANIM_MODE_6, this); } else { ((SceneItem *)_action)->_sceneRegionId = 0; - _object1.setup(306, v * 2 - 1, 1); + _object1.setZoom(75); + _object1.setup(4060, 3, 1); _object1.animate(ANIM_MODE_5, this); } } -/*--------------------------------------------------------------------------*/ - -SpeakerSeekerL::SpeakerSeekerL(): VisualSpeaker() { - _speakerName = "SEEKERL"; - _color1 = 35; - _color2 = 0; - _fieldF6 = 0; - _textWidth = 300; - _hideObjects = false; - _object2 = NULL; - _displayMode = 1; - _numFrames = 0; - _fontNumber = 10; -} - -/*--------------------------------------------------------------------------*/ - -SpeakerQuinnL::SpeakerQuinnL(): VisualSpeaker() { - _speakerName = "QUINNL"; - _color1 = 35; - _color2 = 0; - _fieldF6 = 0; - _textWidth = 300; - _hideObjects = false; - _object2 = NULL; - _displayMode = 1; - _numFrames = 0; - _fontNumber = 10; -} - -/*--------------------------------------------------------------------------*/ +//---------------------------------------------------------------------------- +// Classes related to JOCKO +//---------------------------------------------------------------------------- -SpeakerQuinn300::SpeakerQuinn300(): VisualSpeaker() { - _speakerName = "QUINN"; - _color1 = 60; +SpeakerJocko::SpeakerJocko() { + _speakerName = "Jocko"; + _color1 = 45; _color2 = 0; _fieldF6 = 0; _textWidth = 300; @@ -339,17 +302,12 @@ SpeakerQuinn300::SpeakerQuinn300(): VisualSpeaker() { _numFrames = 0; } -void SpeakerQuinn300::proc15() { +void SpeakerJocko3200::proc15() { int v = _fieldF6; + Scene3200 *scene = (Scene3200 *)R2_GLOBALS._sceneManager._scene; if (!_object2) { - if (R2_GLOBALS._player._characterIndex == 3) { - _object2 = &R2_GLOBALS._player; - } else { - Scene300 *scene = (Scene300 *)R2_GLOBALS._sceneManager._scene; - _object2 = &scene->_quinn; - } - + _object2 = &scene->_actor2; _object2->hide(); _object1.postInit(); _object1.setPosition(_object2->_position); @@ -360,54 +318,20 @@ void SpeakerQuinn300::proc15() { if (v == 0) { _object1.animate(ANIM_MODE_2, NULL); - } else if (v == 100) { - _numFrames = 0; - ((SceneItem *)_action)->_sceneRegionId = 0; - - _object1.setStrip(_object1._strip - 1); - _object1.setFrame(_object1.getFrameCount()); - _object1.animate(ANIM_MODE_6, this); } else { ((SceneItem *)_action)->_sceneRegionId = 0; - - switch (_object2->_visage) { - case 10: - _object1.setup((v - 1) / 4 + 4010, ((v - ((v - 1) / 4 * 4) - 1) % 8) * 2 + 1, 1); - break; - case 302: - _object1.setup(308, (v - 1) % 8 + 1, 1); - break; - case 308: - _object1.setup(308, 5, 1); - break; - } - + _object1.setup(4060, (_object2->_strip * 2) - 1, 1); _object1.animate(ANIM_MODE_5, this); } } -/*--------------------------------------------------------------------------*/ - -SpeakerTeal300::SpeakerTeal300(): VisualSpeaker() { - _speakerName = "TEAL"; - _color1 = 22; - _color2 = 0; - _fieldF6 = 0; - _textWidth = 300; - _hideObjects = false; - _object2 = NULL; - _displayMode = 1; - _numFrames = 0; -} - -void SpeakerTeal300::proc15() { +void SpeakerJocko3220::proc15() { int v = _fieldF6; + Scene3220 *scene = (Scene3220 *)R2_GLOBALS._sceneManager._scene; if (!_object2) { - Scene300 *scene = (Scene300 *)R2_GLOBALS._sceneManager._scene; - _object2 = &scene->_teal; + _object2 = &scene->_actor2; _object2->hide(); - _object1.postInit(); _object1.setPosition(_object2->_position); @@ -419,34 +343,18 @@ void SpeakerTeal300::proc15() { _object1.animate(ANIM_MODE_2, NULL); } else { ((SceneItem *)_action)->_sceneRegionId = 0; - _object1.setup(303, 1, 1); + _object1.setup(4060, (_object2->_strip * 2) - 1, 1); _object1.animate(ANIM_MODE_5, this); } } - -/*--------------------------------------------------------------------------*/ - -SpeakerSoldier300::SpeakerSoldier300(): VisualSpeaker() { - _speakerName = "SOLDIER"; - _color1 = 60; - _color2 = 0; - _fieldF6 = 0; - _textWidth = 300; - _hideObjects = false; - _object2 = NULL; - _displayMode = 1; - _numFrames = 0; -} - -void SpeakerSoldier300::proc15() { +void SpeakerJocko3230::proc15() { int v = _fieldF6; + Scene3230 *scene = (Scene3230 *)R2_GLOBALS._sceneManager._scene; if (!_object2) { - Scene300 *scene = (Scene300 *)R2_GLOBALS._sceneManager._scene; - _object2 = &scene->_teal; + _object2 = &scene->_actor2; _object2->hide(); - _object1.postInit(); _object1.setPosition(_object2->_position); @@ -458,28 +366,18 @@ void SpeakerSoldier300::proc15() { _object1.animate(ANIM_MODE_2, NULL); } else { ((SceneItem *)_action)->_sceneRegionId = 0; - _object1.setup(303, 3, 1); + _object1.setup(4060, (_object2->_strip * 2) - 1, 1); _object1.animate(ANIM_MODE_5, this); } } -/*--------------------------------------------------------------------------*/ - -SpeakerQuinn2350::SpeakerQuinn2350(): VisualSpeaker() { - _speakerName = "QUINN"; - _color1 = 60; - _color2 = 0; - _fieldF6 = 0; - _textWidth = 300; - _hideObjects = false; - _object2 = NULL; - _displayMode = 1; - _numFrames = 0; -} +//---------------------------------------------------------------------------- +// Classes related to MIRANDA +//---------------------------------------------------------------------------- -SpeakerPharisha2350::SpeakerPharisha2350(): VisualSpeaker() { - _speakerName = "PHARISHA"; - _color1 = 151; +SpeakerMiranda::SpeakerMiranda(): VisualSpeaker() { + _speakerName = "MIRANDA"; + _color1 = 154; _color2 = 0; _fieldF6 = 0; _textWidth = 300; @@ -489,70 +387,55 @@ SpeakerPharisha2350::SpeakerPharisha2350(): VisualSpeaker() { _numFrames = 0; } -/*--------------------------------------------------------------------------*/ - -SpeakerQuinn2435::SpeakerQuinn2435() { - _speakerName = "QUINN"; - _color1 = 60; - _color2 = 0; - _fieldF6 = 0; - _textWidth = 300; - _hideObjects = false; - _object2 = NULL; - _displayMode = 1; - _numFrames = 0; -} -void SpeakerQuinn2435::proc15() { +void SpeakerMiranda300::proc15() { int v = _fieldF6; if (!_object2) { - if (R2_GLOBALS._player._characterIndex == 1) { + if (R2_GLOBALS._player._characterIndex == 3) { _object2 = &R2_GLOBALS._player; } else { - Scene2435 *scene = (Scene2435 *)R2_GLOBALS._sceneManager._scene; - _object2 = &scene->_actor1; + Scene300 *scene = (Scene300 *)R2_GLOBALS._sceneManager._scene; + _object2 = &scene->_miranda; } _object2->hide(); _object1.postInit(); _object1.setPosition(_object2->_position); + + if (_object2->_mover) + _object2->addMover(NULL); } if (v == 0) { _object1.animate(ANIM_MODE_2, NULL); + } else if (v == 100) { + _numFrames = 0; + ((SceneItem *)_action)->_sceneRegionId = 0; + + _object1.setStrip(_object1._strip - 1); + _object1.setFrame(_object1.getFrameCount()); + _object1.animate(ANIM_MODE_6, this); } else { ((SceneItem *)_action)->_sceneRegionId = 0; - _object2->setStrip(7); - _object1.setup(2020, 5, 1); + + if (v == 4) { + _object1.setup(304, 5, 1); + } else { + _object1.setup(305, v * 2 - 1, 1); + } _object1.animate(ANIM_MODE_5, this); } } -SpeakerSeeker2435::SpeakerSeeker2435() { - _speakerName = "SEEKER"; - _color1 = 35; - _color2 = 0; - _fieldF6 = 0; - _textWidth = 300; - _hideObjects = false; - _object2 = NULL; - _displayMode = 1; - _numFrames = 0; -} - -void SpeakerSeeker2435::proc15() { +void SpeakerMiranda3255::proc15() { int v = _fieldF6; if (!_object2) { - if (R2_GLOBALS._player._characterIndex == 2) { - _object2 = &R2_GLOBALS._player; - } else { - Scene2435 *scene = (Scene2435 *)R2_GLOBALS._sceneManager._scene; - _object2 = &scene->_actor1; - } - + _object2 = &R2_GLOBALS._player; _object2->hide(); _object1.postInit(); + _object1._effect = _object2->_effect; + _object1._shade = _object2->_shade; _object1.setPosition(_object2->_position); } @@ -560,572 +443,213 @@ void SpeakerSeeker2435::proc15() { _object1.animate(ANIM_MODE_2, NULL); } else { ((SceneItem *)_action)->_sceneRegionId = 0; - _object2->setStrip(7); - _object1.setup(4099, 1, 1); + _object1.setup(3257, 5, 1); _object1.animate(ANIM_MODE_5, this); } } -SpeakerPharisha2435::SpeakerPharisha2435() { - _speakerName = "PHARISHA"; - _color1 = 151; - _color2 = 0; - _fieldF6 = 0; - _textWidth = 300; - _hideObjects = false; - _object2 = NULL; - _displayMode = 1; - _numFrames = 0; -} - -void SpeakerPharisha2435::proc15() { - int v = _fieldF6; - Scene2435 *scene = (Scene2435 *)R2_GLOBALS._sceneManager._scene; - - if (!_object2) { - _object2 = &scene->_actor2; - _object2->hide(); - _object1.postInit(); - _object1.setPosition(_object2->_position); - } - - if (v == 0) { - _object1.animate(ANIM_MODE_2, NULL); - } else { - ((SceneItem *)_action)->_sceneRegionId = 0; - _object1.setup(4098, 5, 1); - _object1.animate(ANIM_MODE_5, this); - } -} - -/*--------------------------------------------------------------------------*/ - -SpeakerQuinn2450::SpeakerQuinn2450() { - _speakerName = "QUINN"; - _color1 = 60; - _color2 = 0; - _fieldF6 = 0; - _textWidth = 300; - _hideObjects = false; - _object2 = NULL; - _displayMode = 1; - _numFrames = 0; -} -void SpeakerQuinn2450::proc15() { - int v = _fieldF6; - - if (!_object2) { - if (R2_GLOBALS._player._characterIndex == 1) { - _object2 = &R2_GLOBALS._player; - } else { - Scene2435 *scene = (Scene2435 *)R2_GLOBALS._sceneManager._scene; - _object2 = &scene->_actor1; - } - - _object2->hide(); - _object1.postInit(); - _object1.setPosition(_object2->_position); - } - - if (v == 0) { - _object1.animate(ANIM_MODE_2, NULL); - } else { - ((SceneItem *)_action)->_sceneRegionId = 0; - if (R2_GLOBALS.getFlag(61)) - _object1.setup(2020, 3, 1); - else - _object1.setup(2020, 1, 1); - _object1.animate(ANIM_MODE_5, this); - } -} - -SpeakerSeeker2450::SpeakerSeeker2450() { - _speakerName = "SEEKER"; - _color1 = 35; - _color2 = 0; - _fieldF6 = 0; - _textWidth = 300; - _hideObjects = false; - _object2 = NULL; - _displayMode = 1; - _numFrames = 0; -} - -void SpeakerSeeker2450::proc15() { - int v = _fieldF6; - - if (!_object2) { - if (R2_GLOBALS._player._characterIndex == 2) { - _object2 = &R2_GLOBALS._player; - } else { - Scene2450 *scene = (Scene2450 *)R2_GLOBALS._sceneManager._scene; - _object2 = &scene->_actor1; - } - - _object2->hide(); - _object1.postInit(); - _object1.setPosition(_object2->_position); - } - - if (v == 0) { - _object1.animate(ANIM_MODE_2, NULL); - } else { - ((SceneItem *)_action)->_sceneRegionId = 0; - _object1.setup(4099, 3, 1); - _object1.animate(ANIM_MODE_5, this); - } -} - -SpeakerCaretaker2450::SpeakerCaretaker2450() { - _speakerName = "CARETAKER"; - _color1 = 43; - _color2 = 0; - _fieldF6 = 0; - _textWidth = 300; - _hideObjects = false; - _object2 = NULL; - _displayMode = 1; - _numFrames = 0; -} - -/*--------------------------------------------------------------------------*/ - -SpeakerQuinn2500::SpeakerQuinn2500() { - _speakerName = "QUINN"; - _color1 = 60; - _color2 = 0; - _fieldF6 = 0; - _textWidth = 300; - _hideObjects = false; - _object2 = NULL; - _displayMode = 1; - _numFrames = 0; -} - -SpeakerSeeker2500::SpeakerSeeker2500() { - _speakerName = "SEEKER"; - _color1 = 35; - _color2 = 0; - _fieldF6 = 0; - _textWidth = 300; - _hideObjects = false; - _object2 = NULL; - _displayMode = 1; - _numFrames = 0; -} - -SpeakerMiranda2500::SpeakerMiranda2500() { - // Not in uppercase in the original - _speakerName = "Miranda"; - _color1 = 154; - _color2 = 0; - _fieldF6 = 0; - _textWidth = 300; - _hideObjects = false; - _object2 = NULL; - _displayMode = 1; - _numFrames = 0; -} - -SpeakerWebbster2500::SpeakerWebbster2500() { - // Not in uppercase in the original - _speakerName = "Webbster"; - _color1 = 27; - _color2 = 0; - _fieldF6 = 0; - _textWidth = 300; - _hideObjects = false; - _object2 = NULL; - _displayMode = 1; - _numFrames = 0; -} - -SpeakerQuinn2700::SpeakerQuinn2700() { - _speakerName = "QUINN"; - _color1 = 60; - _color2 = 0; - _fieldF6 = 0; - _textWidth = 300; - _hideObjects = false; - _object2 = NULL; - _displayMode = 1; - _numFrames = 0; -} - -void SpeakerQuinn2700::proc15() { - int v = _fieldF6; - - if (!_object2) { - _object2 = &R2_GLOBALS._player; - _object2->hide(); - _object1.postInit(); - _object1.setPosition(_object2->_position); - - if (_object2->_mover) - _object2->addMover(NULL); - } - - if (v == 0) { - _object1.animate(ANIM_MODE_2, NULL); - } else { - ((SceneItem *)_action)->_sceneRegionId = 0; - switch (_object2->_visage) { - case 19: - _object1.setup(4022, 5, 1); - break; - case 2701: - _object1.setup(4022, 1, 1); - break; - default: - break; - } - _object1.animate(ANIM_MODE_5, this); - } -} - -SpeakerNej2700::SpeakerNej2700() { - _speakerName = "NEJ"; - _color1 = 171; - _color2 = 0; - _fieldF6 = 0; - _textWidth = 300; - _hideObjects = false; - _object2 = NULL; - _displayMode = 1; - _numFrames = 0; -} - -void SpeakerNej2700::proc15() { - int v = _fieldF6; - Scene2700 *scene = (Scene2700 *)R2_GLOBALS._sceneManager._scene; - - if (!_object2) { - _object2 = &scene->_actor1; - _object2->hide(); - _object1.postInit(); - _object1.setPosition(_object2->_position); - - if (_object2->_mover) - _object2->addMover(NULL); - } - - if (v == 0) { - _object1.animate(ANIM_MODE_2, NULL); - } else { - ((SceneItem *)_action)->_sceneRegionId = 0; - switch (_object2->_visage) { - case 2701: - _object1.setup(4022, 3, 1); - _object1.setPosition(Common::Point(164, 163)); - _object2->setPosition(Common::Point(-10, -10)); - break; - case 2705: - _object1.setup(4022, 7, 1); - _object1.fixPriority(162); - break; - default: - break; - } - _object1.animate(ANIM_MODE_5, this); - } -} - -SpeakerQuinn2750::SpeakerQuinn2750() { - _speakerName = "QUINN"; - _color1 = 60; - _color2 = 0; - _fieldF6 = 0; - _textWidth = 300; - _hideObjects = false; - _object2 = NULL; - _displayMode = 1; - _numFrames = 0; -} - -void SpeakerQuinn2750::proc15() { - int v = _fieldF6; - - if (!_object2) { - _object2 = &R2_GLOBALS._player; - _object2->hide(); - _object1.postInit(); - _object1.setPosition(_object2->_position); - - if (_object2->_mover) - _object2->addMover(NULL); - } - - if (v == 0) { - _object1.animate(ANIM_MODE_2, NULL); - } else { - ((SceneItem *)_action)->_sceneRegionId = 0; - switch (_object2->_visage) { - case 19: - _object1.setup(4022, 5, 1); - break; - case 2752: - _object1.setup(2752, 1, 1); - break; - default: - break; - } - _object1.animate(ANIM_MODE_5, this); - } -} - -SpeakerNej2750::SpeakerNej2750() { - _speakerName = "NEJ"; - _color1 = 171; - _color2 = 0; - _fieldF6 = 0; - _textWidth = 300; - _hideObjects = false; - _object2 = NULL; - _displayMode = 1; - _numFrames = 0; -} - -void SpeakerNej2750::proc15() { - int v = _fieldF6; - Scene2750 *scene = (Scene2750 *)R2_GLOBALS._sceneManager._scene; - - if (!_object2) { - _object2 = &scene->_actor1; - _object2->hide(); - _object1.postInit(); - _object1.setPosition(_object2->_position); - - if (_object2->_mover) - _object2->addMover(NULL); - } - - if (v == 0) { - _object1.animate(ANIM_MODE_2, NULL); - } else { - ((SceneItem *)_action)->_sceneRegionId = 0; - switch (_object2->_visage) { - case 2705: - _object1.setup(4022, 7, 1); - break; - case 2752: - _object1.setup(2752, 1, 1); - break; - default: - break; - } - _object1.animate(ANIM_MODE_5, this); - } -} - -SpeakerQuinn2800::SpeakerQuinn2800() { - _speakerName = "QUINN"; - _color1 = 60; - _color2 = 0; - _fieldF6 = 0; - _textWidth = 300; - _hideObjects = false; - _object2 = NULL; - _displayMode = 1; - _numFrames = 0; -} - -void SpeakerQuinn2800::proc15() { - int v = _fieldF6; - - if (!_object2) { - _object2 = &R2_GLOBALS._player; - _object2->hide(); - _object1.postInit(); - _object1.setPosition(_object2->_position); - - if (_object2->_mover) - _object2->addMover(NULL); - } - - if (v == 0) { - _object1.animate(ANIM_MODE_2, NULL); - } else { - ((SceneItem *)_action)->_sceneRegionId = 0; - switch (_object2->_visage) { - case 16: - _object1.setZoom(75); - _object1.setup(4023, 5, 1); - break; - case 19: - _object1.setup(4023, 1, 1); - break; - case 3110: - _object1.setZoom(75); - if (_object2->_strip == 1) - _object1.setup(4061 , 1, 1); - else - _object1.setup(4061 , 3, 1); - break; - default: - break; - } - _object1.animate(ANIM_MODE_5, this); - } -} - -SpeakerNej2800::SpeakerNej2800() { - _speakerName = "NEJ"; - _color1 = 171; - _color2 = 0; - _fieldF6 = 0; - _textWidth = 300; - _hideObjects = false; - _object2 = NULL; - _displayMode = 1; - _numFrames = 0; -} +void SpeakerMiranda3375::proc15() { + Scene3375 *scene = (Scene3375 *)R2_GLOBALS._sceneManager._scene; -void SpeakerNej2800::proc15() { int v = _fieldF6; - Scene2750 *scene = (Scene2750 *)R2_GLOBALS._sceneManager._scene; if (!_object2) { - _object2 = &scene->_actor2; + if (R2_GLOBALS._player._characterIndex == 3) + _object2 = &R2_GLOBALS._player; + else + _object2 = &scene->_actor2; + _object2->hide(); _object1.postInit(); _object1.setPosition(_object2->_position); + _object1._numFrames = 7; + _object1._effect = 1; + _object1.changeZoom(-1); + + if (scene->_actor1._position.y != 163) + R2_GLOBALS._player.setStrip(8); + else + R2_GLOBALS._player.setStrip(2); - if (_object2->_mover) + R2_GLOBALS._player.disableControl(); + + if (R2_GLOBALS._player._mover) + R2_GLOBALS._player.addMover(NULL); + + R2_GLOBALS._events.setCursor(CURSOR_CROSSHAIRS); + + if (_object2->_mover) _object2->addMover(NULL); } + - if (v == 0) { + switch (v) { + case 0: _object1.animate(ANIM_MODE_2, NULL); - } else { + break; + case 1: ((SceneItem *)_action)->_sceneRegionId = 0; - _object1.setup(4023, 3, 1); - if (_object2->_visage == 2801) - _object1.setPosition(Common::Point(R2_GLOBALS._player._position.x - 12, R2_GLOBALS._player._position.y)); + _object1.setup(4051, 5, 1); _object1.animate(ANIM_MODE_5, this); + break; + default: + signal(); + break; } } -SpeakerGuard2800::SpeakerGuard2800() { - _speakerName = "GUARD"; - _color1 = 5; - _color2 = 0; - _fieldF6 = 0; - _textWidth = 300; - _hideObjects = false; - _object2 = NULL; - _displayMode = 1; - _numFrames = 0; -} +void SpeakerMiranda3385::proc15() { + Scene3385 *scene = (Scene3385 *)R2_GLOBALS._sceneManager._scene; -void SpeakerGuard2800::proc15() { int v = _fieldF6; - Scene2750 *scene = (Scene2750 *)R2_GLOBALS._sceneManager._scene; if (!_object2) { - _object2 = &scene->_actor1; + if (R2_GLOBALS._player._characterIndex == 3) + _object2 = &R2_GLOBALS._player; + else + _object2 = &scene->_actor2; + _object2->hide(); _object1.postInit(); _object1.setPosition(_object2->_position); + _object1._numFrames = 7; + _object1._effect = 1; + _object1.changeZoom(-1); + + if (R2_GLOBALS._sceneManager._previousScene == 3375) + R2_GLOBALS._player.setStrip(4); + else + R2_GLOBALS._player.setStrip(3); - if (_object2->_mover) + if (R2_GLOBALS._player._mover) + R2_GLOBALS._player.addMover(NULL); + + R2_GLOBALS._player.disableControl(CURSOR_TALK); + R2_GLOBALS._events.setCursor(CURSOR_CROSSHAIRS); + + if (_object2->_mover) _object2->addMover(NULL); } + - if (v == 0) { + switch (v) { + case 0: _object1.animate(ANIM_MODE_2, NULL); - } else { + break; + case 1: ((SceneItem *)_action)->_sceneRegionId = 0; - _object1.setZoom(75); - _object1.setup(4060, 3, 1); + _object1.setup(4051, 5, 1); _object1.animate(ANIM_MODE_5, this); + break; + default: + signal(); + break; } } -SpeakerGuard3100::SpeakerGuard3100() { - _speakerName = "GUARD"; - _color1 = 5; - _color2 = 0; - _fieldF6 = 0; - _textWidth = 300; - _hideObjects = false; - _object2 = NULL; - _displayMode = 1; - _numFrames = 0; -} - -SpeakerRocko3200::SpeakerRocko3200() { - _speakerName = "Rocko"; - _color1 = 5; - _color2 = 0; - _fieldF6 = 0; - _textWidth = 300; - _hideObjects = false; - _object2 = NULL; - _displayMode = 1; - _numFrames = 0; -} +void SpeakerMiranda3400::proc15() { + Scene3400 *scene = (Scene3400 *)R2_GLOBALS._sceneManager._scene; -void SpeakerRocko3200::proc15() { int v = _fieldF6; - Scene3200 *scene = (Scene3200 *)R2_GLOBALS._sceneManager._scene; if (!_object2) { - _object2 = &scene->_actor1; + if (R2_GLOBALS._player._characterIndex == 3) + _object2 = &R2_GLOBALS._player; + else + _object2 = &scene->_actor2; + _object2->hide(); _object1.postInit(); _object1.setPosition(_object2->_position); + _object1._numFrames = 7; + _object1._effect = 1; + _object1.changeZoom(-1); + R2_GLOBALS._player.disableControl(); + R2_GLOBALS._events.setCursor(CURSOR_CROSSHAIRS); - if (_object2->_mover) + if (_object2->_mover) _object2->addMover(NULL); } - if (v == 0) { + switch (v) { + case 0: _object1.animate(ANIM_MODE_2, NULL); - } else { + break; + case 1: ((SceneItem *)_action)->_sceneRegionId = 0; - _object1.setup(4060, (_object2->_strip * 2) - 1, 1); - _object1.animate(ANIM_MODE_5, this); + _object1.setup(4051, 5, 1); + _object1.animate(ANIM_MODE_5, NULL); + break; + case 2: + ((SceneItem *)_action)->_sceneRegionId = 0; + _object1.setup(4050, 3, 1); + _object1.animate(ANIM_MODE_5, NULL); + break; + default: + signal(); + break; } } -SpeakerJocko3200::SpeakerJocko3200() { - _speakerName = "Jocko"; - _color1 = 45; - _color2 = 0; - _fieldF6 = 0; - _textWidth = 300; - _hideObjects = false; - _object2 = NULL; - _displayMode = 1; - _numFrames = 0; -} +void SpeakerMiranda3700::proc15() { + Scene3700 *scene = (Scene3700 *)R2_GLOBALS._sceneManager._scene; -void SpeakerJocko3200::proc15() { int v = _fieldF6; - Scene3200 *scene = (Scene3200 *)R2_GLOBALS._sceneManager._scene; if (!_object2) { - _object2 = &scene->_actor2; + _object2 = &scene->_actor3; _object2->hide(); _object1.postInit(); _object1.setPosition(_object2->_position); + _object1._numFrames = 7; + R2_GLOBALS._player.disableControl(); + R2_GLOBALS._events.setCursor(CURSOR_CROSSHAIRS); - if (_object2->_mover) + if (_object2->_mover) _object2->addMover(NULL); } - if (v == 0) { + _object1.setPosition(_object2->_position); + + switch (v) { + case 0: _object1.animate(ANIM_MODE_2, NULL); - } else { + break; + case 1: ((SceneItem *)_action)->_sceneRegionId = 0; - _object1.setup(4060, (_object2->_strip * 2) - 1, 1); - _object1.animate(ANIM_MODE_5, this); + scene->_actor1.setup(10, 6, 1); + scene->_actor2.setup(20, 5, 1); + _object2->setup(30, 1, 1); + scene->_actor4.setup(40, 1, 1); + _object1.setup(4050, 5, 1); + _object1.animate(ANIM_MODE_5, NULL); + break; + case 2: + ((SceneItem *)_action)->_sceneRegionId = 0; + scene->_actor3.setup(30, 8, 1); + _object1.setup(4052, 3, 1); + _object1.animate(ANIM_MODE_5, NULL); + break; + case 3: + ((SceneItem *)_action)->_sceneRegionId = 0; + scene->_actor2.setup(20, 1, 1); + scene->_actor3.setup(30, 1, 1); + _object1.setup(4051, 7, 1); + _object1.animate(ANIM_MODE_5, NULL); + break; + default: + signal(); + break; } } -SpeakerSocko3200::SpeakerSocko3200() { - _speakerName = "Socko"; - _color1 = 10; +//---------------------------------------------------------------------------- +// Classes related to NEJ +//---------------------------------------------------------------------------- + +SpeakerNej::SpeakerNej() { + _speakerName = "NEJ"; + _color1 = 171; _color2 = 0; _fieldF6 = 0; _textWidth = 300; @@ -1135,12 +659,12 @@ SpeakerSocko3200::SpeakerSocko3200() { _numFrames = 0; } -void SpeakerSocko3200::proc15() { +void SpeakerNej2700::proc15() { int v = _fieldF6; - Scene3200 *scene = (Scene3200 *)R2_GLOBALS._sceneManager._scene; + Scene2700 *scene = (Scene2700 *)R2_GLOBALS._sceneManager._scene; if (!_object2) { - _object2 = &scene->_actor3; + _object2 = &scene->_actor1; _object2->hide(); _object1.postInit(); _object1.setPosition(_object2->_position); @@ -1153,26 +677,26 @@ void SpeakerSocko3200::proc15() { _object1.animate(ANIM_MODE_2, NULL); } else { ((SceneItem *)_action)->_sceneRegionId = 0; - _object1.setup(4060, (_object2->_strip * 2) - 1, 1); + switch (_object2->_visage) { + case 2701: + _object1.setup(4022, 3, 1); + _object1.setPosition(Common::Point(164, 163)); + _object2->setPosition(Common::Point(-10, -10)); + break; + case 2705: + _object1.setup(4022, 7, 1); + _object1.fixPriority(162); + break; + default: + break; + } _object1.animate(ANIM_MODE_5, this); } } -SpeakerCaptain3210::SpeakerCaptain3210() { - _speakerName = "Captain"; - _color1 = 5; - _color2 = 0; - _fieldF6 = 0; - _textWidth = 300; - _hideObjects = false; - _object2 = NULL; - _displayMode = 1; - _numFrames = 0; -} - -void SpeakerCaptain3210::proc15() { +void SpeakerNej2750::proc15() { int v = _fieldF6; - Scene3210 *scene = (Scene3210 *)R2_GLOBALS._sceneManager._scene; + Scene2750 *scene = (Scene2750 *)R2_GLOBALS._sceneManager._scene; if (!_object2) { _object2 = &scene->_actor1; @@ -1188,26 +712,23 @@ void SpeakerCaptain3210::proc15() { _object1.animate(ANIM_MODE_2, NULL); } else { ((SceneItem *)_action)->_sceneRegionId = 0; - _object1.setup(4060, (_object2->_strip * 2) - 1, 1); + switch (_object2->_visage) { + case 2705: + _object1.setup(4022, 7, 1); + break; + case 2752: + _object1.setup(2752, 1, 1); + break; + default: + break; + } _object1.animate(ANIM_MODE_5, this); } } -SpeakerPrivate3210::SpeakerPrivate3210() { - _speakerName = "Private"; - _color1 = 45; - _color2 = 0; - _fieldF6 = 0; - _textWidth = 300; - _hideObjects = false; - _object2 = NULL; - _displayMode = 1; - _numFrames = 0; -} - -void SpeakerPrivate3210::proc15() { +void SpeakerNej2800::proc15() { int v = _fieldF6; - Scene3210 *scene = (Scene3210 *)R2_GLOBALS._sceneManager._scene; + Scene2750 *scene = (Scene2750 *)R2_GLOBALS._sceneManager._scene; if (!_object2) { _object2 = &scene->_actor2; @@ -1223,14 +744,20 @@ void SpeakerPrivate3210::proc15() { _object1.animate(ANIM_MODE_2, NULL); } else { ((SceneItem *)_action)->_sceneRegionId = 0; - _object1.setup(4060, (_object2->_strip * 2) - 1, 1); + _object1.setup(4023, 3, 1); + if (_object2->_visage == 2801) + _object1.setPosition(Common::Point(R2_GLOBALS._player._position.x - 12, R2_GLOBALS._player._position.y)); _object1.animate(ANIM_MODE_5, this); } } -SpeakerRocko3220::SpeakerRocko3220() { - _speakerName = "Rocko"; - _color1 = 5; +//---------------------------------------------------------------------------- +// Classes related to PHARISHA +//---------------------------------------------------------------------------- + +SpeakerPharisha::SpeakerPharisha(): VisualSpeaker() { + _speakerName = "PHARISHA"; + _color1 = 151; _color2 = 0; _fieldF6 = 0; _textWidth = 300; @@ -1240,31 +767,32 @@ SpeakerRocko3220::SpeakerRocko3220() { _numFrames = 0; } -void SpeakerRocko3220::proc15() { +void SpeakerPharisha2435::proc15() { int v = _fieldF6; - Scene3220 *scene = (Scene3220 *)R2_GLOBALS._sceneManager._scene; + Scene2435 *scene = (Scene2435 *)R2_GLOBALS._sceneManager._scene; if (!_object2) { - _object2 = &scene->_actor1; + _object2 = &scene->_actor2; _object2->hide(); _object1.postInit(); _object1.setPosition(_object2->_position); - - if (_object2->_mover) - _object2->addMover(NULL); } if (v == 0) { _object1.animate(ANIM_MODE_2, NULL); } else { ((SceneItem *)_action)->_sceneRegionId = 0; - _object1.setup(4060, (_object2->_strip * 2) - 1, 1); + _object1.setup(4098, 5, 1); _object1.animate(ANIM_MODE_5, this); } } -SpeakerJocko3220::SpeakerJocko3220() { - _speakerName = "Jocko"; +//---------------------------------------------------------------------------- +// Classes related to PRIVATE +//---------------------------------------------------------------------------- + +SpeakerPrivate3210::SpeakerPrivate3210() { + _speakerName = "Private"; _color1 = 45; _color2 = 0; _fieldF6 = 0; @@ -1275,9 +803,9 @@ SpeakerJocko3220::SpeakerJocko3220() { _numFrames = 0; } -void SpeakerJocko3220::proc15() { +void SpeakerPrivate3210::proc15() { int v = _fieldF6; - Scene3220 *scene = (Scene3220 *)R2_GLOBALS._sceneManager._scene; + Scene3210 *scene = (Scene3210 *)R2_GLOBALS._sceneManager._scene; if (!_object2) { _object2 = &scene->_actor2; @@ -1298,9 +826,13 @@ void SpeakerJocko3220::proc15() { } } -SpeakerRocko3230::SpeakerRocko3230() { - _speakerName = "Rocko"; - _color1 = 5; +//---------------------------------------------------------------------------- +// Classes related to QUINN +//---------------------------------------------------------------------------- + +SpeakerQuinn::SpeakerQuinn(): VisualSpeaker() { + _speakerName = "QUINN"; + _color1 = 60; _color2 = 0; _fieldF6 = 0; _textWidth = 300; @@ -1310,12 +842,17 @@ SpeakerRocko3230::SpeakerRocko3230() { _numFrames = 0; } -void SpeakerRocko3230::proc15() { +void SpeakerQuinn300::proc15() { int v = _fieldF6; - Scene3230 *scene = (Scene3230 *)R2_GLOBALS._sceneManager._scene; if (!_object2) { - _object2 = &scene->_actor1; + if (R2_GLOBALS._player._characterIndex == 3) { + _object2 = &R2_GLOBALS._player; + } else { + Scene300 *scene = (Scene300 *)R2_GLOBALS._sceneManager._scene; + _object2 = &scene->_quinn; + } + _object2->hide(); _object1.postInit(); _object1.setPosition(_object2->_position); @@ -1326,101 +863,91 @@ void SpeakerRocko3230::proc15() { if (v == 0) { _object1.animate(ANIM_MODE_2, NULL); + } else if (v == 100) { + _numFrames = 0; + ((SceneItem *)_action)->_sceneRegionId = 0; + + _object1.setStrip(_object1._strip - 1); + _object1.setFrame(_object1.getFrameCount()); + _object1.animate(ANIM_MODE_6, this); } else { ((SceneItem *)_action)->_sceneRegionId = 0; - _object1.setup(4111, (_object2->_strip * 2) - 1, 1); + + switch (_object2->_visage) { + case 10: + _object1.setup((v - 1) / 4 + 4010, ((v - ((v - 1) / 4 * 4) - 1) % 8) * 2 + 1, 1); + break; + case 302: + _object1.setup(308, (v - 1) % 8 + 1, 1); + break; + case 308: + _object1.setup(308, 5, 1); + break; + } + _object1.animate(ANIM_MODE_5, this); } } -SpeakerJocko3230::SpeakerJocko3230() { - _speakerName = "Jocko"; - _color1 = 45; - _color2 = 0; - _fieldF6 = 0; - _textWidth = 300; - _hideObjects = false; - _object2 = NULL; - _displayMode = 1; - _numFrames = 0; -} - -void SpeakerJocko3230::proc15() { +void SpeakerQuinn2435::proc15() { int v = _fieldF6; - Scene3230 *scene = (Scene3230 *)R2_GLOBALS._sceneManager._scene; if (!_object2) { - _object2 = &scene->_actor2; + if (R2_GLOBALS._player._characterIndex == 1) { + _object2 = &R2_GLOBALS._player; + } else { + Scene2435 *scene = (Scene2435 *)R2_GLOBALS._sceneManager._scene; + _object2 = &scene->_actor1; + } + _object2->hide(); _object1.postInit(); _object1.setPosition(_object2->_position); - - if (_object2->_mover) - _object2->addMover(NULL); } if (v == 0) { _object1.animate(ANIM_MODE_2, NULL); } else { ((SceneItem *)_action)->_sceneRegionId = 0; - _object1.setup(4060, (_object2->_strip * 2) - 1, 1); + _object2->setStrip(7); + _object1.setup(2020, 5, 1); _object1.animate(ANIM_MODE_5, this); } } -SpeakerTeal3240::SpeakerTeal3240() { - _speakerName = "Teal"; - _color1 = 22; - _color2 = 0; - _fieldF6 = 0; - _textWidth = 300; - _hideObjects = false; - _object2 = NULL; - _displayMode = 1; - _numFrames = 0; -} - -void SpeakerTeal3240::proc15() { +void SpeakerQuinn2450::proc15() { int v = _fieldF6; - Scene3240 *scene = (Scene3240 *)R2_GLOBALS._sceneManager._scene; if (!_object2) { - _object2 = &scene->_actor1; + if (R2_GLOBALS._player._characterIndex == 1) { + _object2 = &R2_GLOBALS._player; + } else { + Scene2435 *scene = (Scene2435 *)R2_GLOBALS._sceneManager._scene; + _object2 = &scene->_actor1; + } + _object2->hide(); _object1.postInit(); _object1.setPosition(_object2->_position); - - if (_object2->_mover) - _object2->addMover(NULL); } if (v == 0) { _object1.animate(ANIM_MODE_2, NULL); } else { ((SceneItem *)_action)->_sceneRegionId = 0; - _object1.setup(4070, (_object2->_strip * 2) - 1, 1); + if (R2_GLOBALS.getFlag(61)) + _object1.setup(2020, 3, 1); + else + _object1.setup(2020, 1, 1); _object1.animate(ANIM_MODE_5, this); } } -SpeakerWebbster3240::SpeakerWebbster3240() { - _speakerName = "Webbster"; - _color1 = 10; - _color2 = 0; - _fieldF6 = 0; - _textWidth = 300; - _hideObjects = false; - _object2 = NULL; - _displayMode = 1; - _numFrames = 0; -} - -void SpeakerWebbster3240::proc15() { +void SpeakerQuinn2700::proc15() { int v = _fieldF6; - Scene3240 *scene = (Scene3240 *)R2_GLOBALS._sceneManager._scene; if (!_object2) { - _object2 = &scene->_actor2; + _object2 = &R2_GLOBALS._player; _object2->hide(); _object1.postInit(); _object1.setPosition(_object2->_position); @@ -1433,29 +960,25 @@ void SpeakerWebbster3240::proc15() { _object1.animate(ANIM_MODE_2, NULL); } else { ((SceneItem *)_action)->_sceneRegionId = 0; - _object1.setup(4110, 5, 1); + switch (_object2->_visage) { + case 19: + _object1.setup(4022, 5, 1); + break; + case 2701: + _object1.setup(4022, 1, 1); + break; + default: + break; + } _object1.animate(ANIM_MODE_5, this); } } -SpeakerRalf3245::SpeakerRalf3245() { - _speakerName = "Ralf"; - _color1 = 5; - _color2 = 0; - _fieldF6 = 0; - _textWidth = 300; - _hideObjects = false; - _object2 = NULL; - _displayMode = 1; - _numFrames = 0; -} - -void SpeakerRalf3245::proc15() { +void SpeakerQuinn2750::proc15() { int v = _fieldF6; - Scene3245 *scene = (Scene3245 *)R2_GLOBALS._sceneManager._scene; if (!_object2) { - _object2 = &scene->_actor1; + _object2 = &R2_GLOBALS._player; _object2->hide(); _object1.postInit(); _object1.setPosition(_object2->_position); @@ -1469,41 +992,24 @@ void SpeakerRalf3245::proc15() { } else { ((SceneItem *)_action)->_sceneRegionId = 0; switch (_object2->_visage) { - case 3100: - _object1.setup(4105, (_object2->_strip * 2) - 1, 1); - break; - case 3101: - _object1.setup(4108, (_object2->_strip * 2) - 1, 1); + case 19: + _object1.setup(4022, 5, 1); break; - case 3102: - _object1.setup(4109, (_object2->_strip * 2) - 1, 1); + case 2752: + _object1.setup(2752, 1, 1); break; default: break; } - _object1.animate(ANIM_MODE_5, this); } } -SpeakerTomko3245::SpeakerTomko3245() { - _speakerName = "Tomko"; - _color1 = 10; - _color2 = 0; - _fieldF6 = 0; - _textWidth = 300; - _hideObjects = false; - _object2 = NULL; - _displayMode = 1; - _numFrames = 0; -} - -void SpeakerTomko3245::proc15() { +void SpeakerQuinn2800::proc15() { int v = _fieldF6; - Scene3245 *scene = (Scene3245 *)R2_GLOBALS._sceneManager._scene; if (!_object2) { - _object2 = &scene->_actor2; + _object2 = &R2_GLOBALS._player; _object2->hide(); _object1.postInit(); _object1.setPosition(_object2->_position); @@ -1517,33 +1023,25 @@ void SpeakerTomko3245::proc15() { } else { ((SceneItem *)_action)->_sceneRegionId = 0; switch (_object2->_visage) { - case 3100: - _object1.setup(4105, (_object2->_strip * 2) - 1, 1); + case 16: + _object1.setZoom(75); + _object1.setup(4023, 5, 1); break; - case 3101: - _object1.setup(4108, (_object2->_strip * 2) - 1, 1); + case 19: + _object1.setup(4023, 1, 1); break; - case 3102: - _object1.setup(4109, (_object2->_strip * 2) - 1, 1); + case 3110: + _object1.setZoom(75); + if (_object2->_strip == 1) + _object1.setup(4061 , 1, 1); + else + _object1.setup(4061 , 3, 1); break; default: break; - } - - _object1.animate(ANIM_MODE_5, this); - } -} - -SpeakerQuinn3255::SpeakerQuinn3255() { - _speakerName = "QUINN"; - _color1 = 60; - _color2 = 0; - _fieldF6 = 0; - _textWidth = 300; - _hideObjects = false; - _object2 = NULL; - _displayMode = 1; - _numFrames = 0; + } + _object1.animate(ANIM_MODE_5, this); + } } void SpeakerQuinn3255::proc15() { @@ -1569,53 +1067,59 @@ void SpeakerQuinn3255::proc15() { } } -SpeakerMiranda3255::SpeakerMiranda3255() { - _speakerName = "MIRANDA"; - _color1 = 154; - _color2 = 0; - _fieldF6 = 0; - _textWidth = 300; - _hideObjects = false; - _object2 = NULL; - _displayMode = 1; - _numFrames = 0; -} +void SpeakerQuinn3375::proc15() { + Scene3375 *scene = (Scene3375 *)R2_GLOBALS._sceneManager._scene; -void SpeakerMiranda3255::proc15() { int v = _fieldF6; if (!_object2) { - _object2 = &R2_GLOBALS._player; + if (R2_GLOBALS._player._characterIndex == 1) + _object2 = &R2_GLOBALS._player; + else if (R2_GLOBALS._player._characterIndex == 2) + _object2 = &scene->_actor1; + else + _object2 = &scene->_actor2; + _object2->hide(); _object1.postInit(); - _object1._effect = _object2->_effect; - _object1._shade = _object2->_shade; _object1.setPosition(_object2->_position); + _object1._numFrames = 7; + _object1._effect = 1; + _object1.changeZoom(-1); + + if (scene->_actor1._position.y != 163) + R2_GLOBALS._player.setStrip(8); + else + R2_GLOBALS._player.setStrip(2); + + if (R2_GLOBALS._player._mover) + R2_GLOBALS._player.addMover(NULL); + + R2_GLOBALS._player.disableControl(CURSOR_TALK); + R2_GLOBALS._events.setCursor(CURSOR_CROSSHAIRS); + + if (_object2->_mover) + _object2->addMover(NULL); } + - if (v == 0) { + switch (v) { + case 0: _object1.animate(ANIM_MODE_2, NULL); - } else { + break; + case 1: ((SceneItem *)_action)->_sceneRegionId = 0; - _object1.setup(3257, 5, 1); + _object1.setup(4010, 5, 1); _object1.animate(ANIM_MODE_5, this); + break; + default: + signal(); + break; } } -SpeakerQuinn3375::SpeakerQuinn3375() { - _speakerName = "QUINN"; - _color1 = 60; - _color2 = 0; - _fieldF6 = 0; - _textWidth = 300; - _hideObjects = false; - _object2 = NULL; - _displayMode = 1; - _numFrames = 0; -} - -void SpeakerQuinn3375::proc15() { - Scene3375 *scene = (Scene3375 *)R2_GLOBALS._sceneManager._scene; +void SpeakerQuinn3385::proc15() { + Scene3385 *scene = (Scene3385 *)R2_GLOBALS._sceneManager._scene; int v = _fieldF6; @@ -1634,10 +1138,10 @@ void SpeakerQuinn3375::proc15() { _object1._effect = 1; _object1.changeZoom(-1); - if (scene->_actor1._position.y != 163) - R2_GLOBALS._player.setStrip(8); + if (R2_GLOBALS._sceneManager._previousScene == 3375) + R2_GLOBALS._player.setStrip(4); else - R2_GLOBALS._player.setStrip(2); + R2_GLOBALS._player.setStrip(3); if (R2_GLOBALS._player._mover) R2_GLOBALS._player.addMover(NULL); @@ -1656,7 +1160,11 @@ void SpeakerQuinn3375::proc15() { break; case 1: ((SceneItem *)_action)->_sceneRegionId = 0; - _object1.setup(4010, 5, 1); + if (R2_GLOBALS._player._characterIndex == 2) + _object1.setup(4010, 3, 1); + else + _object1.setup(4010, 5, 1); + _object1.animate(ANIM_MODE_5, this); break; default: @@ -1665,28 +1173,18 @@ void SpeakerQuinn3375::proc15() { } } -SpeakerSeeker3375::SpeakerSeeker3375() { - _speakerName = "SEEKER"; - _color1 = 35; - _color2 = 0; - _fieldF6 = 0; - _textWidth = 300; - _hideObjects = false; - _object2 = NULL; - _displayMode = 1; - _numFrames = 0; -} - -void SpeakerSeeker3375::proc15() { - Scene3375 *scene = (Scene3375 *)R2_GLOBALS._sceneManager._scene; +void SpeakerQuinn3400::proc15() { + Scene3400 *scene = (Scene3400 *)R2_GLOBALS._sceneManager._scene; int v = _fieldF6; if (!_object2) { - if (R2_GLOBALS._player._characterIndex == 2) + if (R2_GLOBALS._player._characterIndex == 1) _object2 = &R2_GLOBALS._player; - else + else if (R2_GLOBALS._player._characterIndex == 2) _object2 = &scene->_actor1; + else + _object2 = &scene->_actor2; _object2->hide(); _object1.postInit(); @@ -1694,22 +1192,73 @@ void SpeakerSeeker3375::proc15() { _object1._numFrames = 7; _object1._effect = 1; _object1.changeZoom(-1); - - if (scene->_actor1._position.y != 163) - R2_GLOBALS._player.setStrip(8); - else - R2_GLOBALS._player.setStrip(2); + R2_GLOBALS._player.disableControl(); + if (_object2->_mover) + _object2->addMover(NULL); + } - if (R2_GLOBALS._player._mover) - R2_GLOBALS._player.addMover(NULL); + switch (v) { + case 0: + _object1.animate(ANIM_MODE_2, NULL); + break; + case 1: + ((SceneItem *)_action)->_sceneRegionId = 0; + _object1.setup(4010, 5, 1); + _object1.animate(ANIM_MODE_5, NULL); + break; + case 2: + ((SceneItem *)_action)->_sceneRegionId = 0; + _object1.setup(4010, 3, 1); + _object1.animate(ANIM_MODE_5, NULL); + break; + case 3: + ((SceneItem *)_action)->_sceneRegionId = 0; + _object1.setup(4012, 3, 1); + _object1.animate(ANIM_MODE_5, NULL); + break; + default: + signal(); + break; + } +} - R2_GLOBALS._player.disableControl(CURSOR_TALK); +void SpeakerQuinn3700::setText(const Common::String &msg) { + Scene3700 *scene = (Scene3700 *)R2_GLOBALS._sceneManager._scene; + + switch (_fieldF6) { + case 2: + scene->_actor3.setup(30, 1, 1); + R2_GLOBALS._sound2.play(44); + break; + case 3: + scene->_actor3.setup(30, 1, 1); + break; + default: + scene->_actor3.setup(30, 7, 1); + break; + } + VisualSpeaker::setText(msg); +} + +void SpeakerQuinn3700::proc15() { + Scene3700 *scene = (Scene3700 *)R2_GLOBALS._sceneManager._scene; + + int v = _fieldF6; + + if (!_object2) { + _object2 = &scene->_actor1; + _object2->hide(); + _object1.postInit(); + _object1.setPosition(_object2->_position); + _object1._numFrames = 7; + R2_GLOBALS._player.disableControl(); R2_GLOBALS._events.setCursor(CURSOR_CROSSHAIRS); if (_object2->_mover) _object2->addMover(NULL); } - + + _object1.setPosition(_object2->_position); switch (v) { case 0: @@ -1717,8 +1266,25 @@ void SpeakerSeeker3375::proc15() { break; case 1: ((SceneItem *)_action)->_sceneRegionId = 0; - _object1.setup(4031, 1, 1); - _object1.animate(ANIM_MODE_5, this); + R2_GLOBALS._sound2.stop(); + scene->_actor1.setup(10, 4, 1); + scene->_actor3.setup(30, 7, 1); + _object1.setup(3701, 1, 1); + _object1.animate(ANIM_MODE_5, NULL); + break; + case 2: + ((SceneItem *)_action)->_sceneRegionId = 0; + scene->_actor2.setup(20, 1, 1); + scene->_actor3.setup(30, 1, 1); + _object1.setup(3701, 2, 1); + _object1.animate(ANIM_MODE_5, NULL); + break; + case 3: + ((SceneItem *)_action)->_sceneRegionId = 0; + scene->_actor1.setup(10, 2, 1); + scene->_actor3.setup(30, 1, 1); + _object1.setup(4011, 1, 1); + _object1.animate(ANIM_MODE_5, NULL); break; default: signal(); @@ -1726,9 +1292,82 @@ void SpeakerSeeker3375::proc15() { } } -SpeakerMiranda3375::SpeakerMiranda3375() { - _speakerName = "MIRANDA"; - _color1 = 154; +//---------------------------------------------------------------------------- +// Classes related to QUINNL +//---------------------------------------------------------------------------- + +SpeakerQuinnL::SpeakerQuinnL(): VisualSpeaker() { + _speakerName = "QUINNL"; + _color1 = 35; + _color2 = 0; + _fieldF6 = 0; + _textWidth = 300; + _hideObjects = false; + _object2 = NULL; + _displayMode = 1; + _numFrames = 0; + _fontNumber = 10; +} + +//---------------------------------------------------------------------------- +// Classes related to RALF +//---------------------------------------------------------------------------- + +SpeakerRalf3245::SpeakerRalf3245() { + _speakerName = "Ralf"; + _color1 = 5; + _color2 = 0; + _fieldF6 = 0; + _textWidth = 300; + _hideObjects = false; + _object2 = NULL; + _displayMode = 1; + _numFrames = 0; +} + +void SpeakerRalf3245::proc15() { + int v = _fieldF6; + Scene3245 *scene = (Scene3245 *)R2_GLOBALS._sceneManager._scene; + + if (!_object2) { + _object2 = &scene->_actor1; + _object2->hide(); + _object1.postInit(); + _object1.setPosition(_object2->_position); + + if (_object2->_mover) + _object2->addMover(NULL); + } + + if (v == 0) { + _object1.animate(ANIM_MODE_2, NULL); + } else { + ((SceneItem *)_action)->_sceneRegionId = 0; + switch (_object2->_visage) { + case 3100: + _object1.setup(4105, (_object2->_strip * 2) - 1, 1); + break; + case 3101: + _object1.setup(4108, (_object2->_strip * 2) - 1, 1); + break; + case 3102: + _object1.setup(4109, (_object2->_strip * 2) - 1, 1); + break; + default: + break; + } + + _object1.animate(ANIM_MODE_5, this); + } +} + +//---------------------------------------------------------------------------- +// Classes related to ROCKO +//---------------------------------------------------------------------------- + +SpeakerRocko::SpeakerRocko() { + _speakerName = "Rocko"; + _color1 = 5; _color2 = 0; _fieldF6 = 0; _textWidth = 300; @@ -1738,116 +1377,82 @@ SpeakerMiranda3375::SpeakerMiranda3375() { _numFrames = 0; } -void SpeakerMiranda3375::proc15() { - Scene3375 *scene = (Scene3375 *)R2_GLOBALS._sceneManager._scene; - +void SpeakerRocko3200::proc15() { int v = _fieldF6; + Scene3200 *scene = (Scene3200 *)R2_GLOBALS._sceneManager._scene; if (!_object2) { - if (R2_GLOBALS._player._characterIndex == 3) - _object2 = &R2_GLOBALS._player; - else - _object2 = &scene->_actor2; - + _object2 = &scene->_actor1; _object2->hide(); _object1.postInit(); _object1.setPosition(_object2->_position); - _object1._numFrames = 7; - _object1._effect = 1; - _object1.changeZoom(-1); - - if (scene->_actor1._position.y != 163) - R2_GLOBALS._player.setStrip(8); - else - R2_GLOBALS._player.setStrip(2); - R2_GLOBALS._player.disableControl(); + if (_object2->_mover) + _object2->addMover(NULL); + } - if (R2_GLOBALS._player._mover) - R2_GLOBALS._player.addMover(NULL); + if (v == 0) { + _object1.animate(ANIM_MODE_2, NULL); + } else { + ((SceneItem *)_action)->_sceneRegionId = 0; + _object1.setup(4060, (_object2->_strip * 2) - 1, 1); + _object1.animate(ANIM_MODE_5, this); + } +} - R2_GLOBALS._events.setCursor(CURSOR_CROSSHAIRS); +void SpeakerRocko3220::proc15() { + int v = _fieldF6; + Scene3220 *scene = (Scene3220 *)R2_GLOBALS._sceneManager._scene; - if (_object2->_mover) + if (!_object2) { + _object2 = &scene->_actor1; + _object2->hide(); + _object1.postInit(); + _object1.setPosition(_object2->_position); + + if (_object2->_mover) _object2->addMover(NULL); } - - switch (v) { - case 0: + if (v == 0) { _object1.animate(ANIM_MODE_2, NULL); - break; - case 1: + } else { ((SceneItem *)_action)->_sceneRegionId = 0; - _object1.setup(4051, 5, 1); + _object1.setup(4060, (_object2->_strip * 2) - 1, 1); _object1.animate(ANIM_MODE_5, this); - break; - default: - signal(); - break; } } -SpeakerWebbster3375::SpeakerWebbster3375() { - _speakerName = "WEBBSTER"; - _color1 = 60; - _color2 = 0; - _fieldF6 = 0; - _textWidth = 300; - _hideObjects = false; - _object2 = NULL; - _displayMode = 1; - _numFrames = 0; -} - -void SpeakerWebbster3375::proc15() { - Scene3375 *scene = (Scene3375 *)R2_GLOBALS._sceneManager._scene; - +void SpeakerRocko3230::proc15() { int v = _fieldF6; + Scene3230 *scene = (Scene3230 *)R2_GLOBALS._sceneManager._scene; if (!_object2) { - _object2 = &scene->_actor3; + _object2 = &scene->_actor1; _object2->hide(); _object1.postInit(); _object1.setPosition(_object2->_position); - _object1._numFrames = 7; - _object1._effect = 1; - _object1.changeZoom(-1); - - if (scene->_actor1._position.y != 163) - R2_GLOBALS._player.setStrip(8); - else - R2_GLOBALS._player.setStrip(2); - - if (R2_GLOBALS._player._mover) - R2_GLOBALS._player.addMover(NULL); - - R2_GLOBALS._player.disableControl(); - R2_GLOBALS._events.setCursor(CURSOR_CROSSHAIRS); - if (_object2->_mover) + if (_object2->_mover) _object2->addMover(NULL); } - - switch (v) { - case 0: + if (v == 0) { _object1.animate(ANIM_MODE_2, NULL); - break; - case 1: + } else { ((SceneItem *)_action)->_sceneRegionId = 0; - _object1.setup(4110, 5, 1); + _object1.setup(4111, (_object2->_strip * 2) - 1, 1); _object1.animate(ANIM_MODE_5, this); - break; - default: - signal(); - break; } } -SpeakerQuinn3385::SpeakerQuinn3385() { - _speakerName = "QUINN"; - _color1 = 60; +//---------------------------------------------------------------------------- +// Classes related to SEEKER +//---------------------------------------------------------------------------- + +SpeakerSeeker::SpeakerSeeker(): VisualSpeaker() { + _speakerName = "SEEKER"; + _color1 = 35; _color2 = 0; _fieldF6 = 0; _textWidth = 300; @@ -1856,144 +1461,104 @@ SpeakerQuinn3385::SpeakerQuinn3385() { _displayMode = 1; _numFrames = 0; } -void SpeakerQuinn3385::proc15() { - Scene3385 *scene = (Scene3385 *)R2_GLOBALS._sceneManager._scene; +void SpeakerSeeker300::proc15() { int v = _fieldF6; if (!_object2) { - if (R2_GLOBALS._player._characterIndex == 1) + if (R2_GLOBALS._player._characterIndex == 3) { _object2 = &R2_GLOBALS._player; - else if (R2_GLOBALS._player._characterIndex == 2) - _object2 = &scene->_actor1; - else - _object2 = &scene->_actor2; + } else { + Scene300 *scene = (Scene300 *)R2_GLOBALS._sceneManager._scene; + _object2 = &scene->_seeker; + } _object2->hide(); _object1.postInit(); + _object1.fixPriority(140); _object1.setPosition(_object2->_position); - _object1._numFrames = 7; - _object1._effect = 1; - _object1.changeZoom(-1); - - if (R2_GLOBALS._sceneManager._previousScene == 3375) - R2_GLOBALS._player.setStrip(4); - else - R2_GLOBALS._player.setStrip(3); - - if (R2_GLOBALS._player._mover) - R2_GLOBALS._player.addMover(NULL); - - R2_GLOBALS._player.disableControl(CURSOR_TALK); - R2_GLOBALS._events.setCursor(CURSOR_CROSSHAIRS); - if (_object2->_mover) + if (_object2->_mover) _object2->addMover(NULL); } - - switch (v) { - case 0: + if (v == 0) { _object1.animate(ANIM_MODE_2, NULL); - break; - case 1: + } else if (v == 100) { + _numFrames = 0; ((SceneItem *)_action)->_sceneRegionId = 0; - if (R2_GLOBALS._player._characterIndex == 2) - _object1.setup(4010, 3, 1); - else - _object1.setup(4010, 5, 1); + _object1.setStrip(_object1._strip - 1); + _object1.setFrame(_object1.getFrameCount()); + _object1.animate(ANIM_MODE_6, this); + } else { + ((SceneItem *)_action)->_sceneRegionId = 0; + _object1.setup(306, v * 2 - 1, 1); _object1.animate(ANIM_MODE_5, this); - break; - default: - signal(); - break; } } -SpeakerSeeker3385::SpeakerSeeker3385() { - _speakerName = "SEEKER"; - _color1 = 35; - _color2 = 0; - _fieldF6 = 0; - _textWidth = 300; - _hideObjects = false; - _object2 = NULL; - _displayMode = 1; - _numFrames = 0; -} - -void SpeakerSeeker3385::proc15() { - Scene3385 *scene = (Scene3385 *)R2_GLOBALS._sceneManager._scene; - +void SpeakerSeeker2435::proc15() { int v = _fieldF6; if (!_object2) { - if (R2_GLOBALS._player._characterIndex == 2) + if (R2_GLOBALS._player._characterIndex == 2) { _object2 = &R2_GLOBALS._player; - else + } else { + Scene2435 *scene = (Scene2435 *)R2_GLOBALS._sceneManager._scene; _object2 = &scene->_actor1; + } _object2->hide(); _object1.postInit(); _object1.setPosition(_object2->_position); - _object1._numFrames = 7; - _object1._effect = 1; - _object1.changeZoom(-1); - - if (R2_GLOBALS._sceneManager._previousScene == 3375) - R2_GLOBALS._player.setStrip(4); - else - R2_GLOBALS._player.setStrip(3); + } - if (R2_GLOBALS._player._mover) - R2_GLOBALS._player.addMover(NULL); + if (v == 0) { + _object1.animate(ANIM_MODE_2, NULL); + } else { + ((SceneItem *)_action)->_sceneRegionId = 0; + _object2->setStrip(7); + _object1.setup(4099, 1, 1); + _object1.animate(ANIM_MODE_5, this); + } +} - R2_GLOBALS._player.disableControl(CURSOR_TALK); - R2_GLOBALS._events.setCursor(CURSOR_CROSSHAIRS); +void SpeakerSeeker2450::proc15() { + int v = _fieldF6; - if (_object2->_mover) - _object2->addMover(NULL); + if (!_object2) { + if (R2_GLOBALS._player._characterIndex == 2) { + _object2 = &R2_GLOBALS._player; + } else { + Scene2450 *scene = (Scene2450 *)R2_GLOBALS._sceneManager._scene; + _object2 = &scene->_actor1; + } + + _object2->hide(); + _object1.postInit(); + _object1.setPosition(_object2->_position); } - - switch (v) { - case 0: + if (v == 0) { _object1.animate(ANIM_MODE_2, NULL); - break; - case 1: + } else { ((SceneItem *)_action)->_sceneRegionId = 0; - _object1.setup(4031, 3, 1); + _object1.setup(4099, 3, 1); _object1.animate(ANIM_MODE_5, this); - break; - default: - signal(); - break; } } -SpeakerMiranda3385::SpeakerMiranda3385() { - _speakerName = "MIRANDA"; - _color1 = 154; - _color2 = 0; - _fieldF6 = 0; - _textWidth = 300; - _hideObjects = false; - _object2 = NULL; - _displayMode = 1; - _numFrames = 0; -} - -void SpeakerMiranda3385::proc15() { - Scene3385 *scene = (Scene3385 *)R2_GLOBALS._sceneManager._scene; +void SpeakerSeeker3375::proc15() { + Scene3375 *scene = (Scene3375 *)R2_GLOBALS._sceneManager._scene; int v = _fieldF6; if (!_object2) { - if (R2_GLOBALS._player._characterIndex == 3) + if (R2_GLOBALS._player._characterIndex == 2) _object2 = &R2_GLOBALS._player; else - _object2 = &scene->_actor2; + _object2 = &scene->_actor1; _object2->hide(); _object1.postInit(); @@ -2002,10 +1567,10 @@ void SpeakerMiranda3385::proc15() { _object1._effect = 1; _object1.changeZoom(-1); - if (R2_GLOBALS._sceneManager._previousScene == 3375) - R2_GLOBALS._player.setStrip(4); + if (scene->_actor1._position.y != 163) + R2_GLOBALS._player.setStrip(8); else - R2_GLOBALS._player.setStrip(3); + R2_GLOBALS._player.setStrip(2); if (R2_GLOBALS._player._mover) R2_GLOBALS._player.addMover(NULL); @@ -2024,7 +1589,7 @@ void SpeakerMiranda3385::proc15() { break; case 1: ((SceneItem *)_action)->_sceneRegionId = 0; - _object1.setup(4051, 5, 1); + _object1.setup(4031, 1, 1); _object1.animate(ANIM_MODE_5, this); break; default: @@ -2033,25 +1598,17 @@ void SpeakerMiranda3385::proc15() { } } -SpeakerWebbster3385::SpeakerWebbster3385() { - _speakerName = "WEBBSTER"; - _color1 = 60; - _color2 = 0; - _fieldF6 = 0; - _textWidth = 300; - _hideObjects = false; - _object2 = NULL; - _displayMode = 1; - _numFrames = 0; -} - -void SpeakerWebbster3385::proc15() { +void SpeakerSeeker3385::proc15() { Scene3385 *scene = (Scene3385 *)R2_GLOBALS._sceneManager._scene; int v = _fieldF6; if (!_object2) { - _object2 = &scene->_actor3; + if (R2_GLOBALS._player._characterIndex == 2) + _object2 = &R2_GLOBALS._player; + else + _object2 = &scene->_actor1; + _object2->hide(); _object1.postInit(); _object1.setPosition(_object2->_position); @@ -2073,6 +1630,7 @@ void SpeakerWebbster3385::proc15() { if (_object2->_mover) _object2->addMover(NULL); } + switch (v) { case 0: @@ -2080,7 +1638,7 @@ void SpeakerWebbster3385::proc15() { break; case 1: ((SceneItem *)_action)->_sceneRegionId = 0; - _object1.setup(4110, 5, 1); + _object1.setup(4031, 3, 1); _object1.animate(ANIM_MODE_5, this); break; default: @@ -2089,29 +1647,16 @@ void SpeakerWebbster3385::proc15() { } } -SpeakerQuinn3400::SpeakerQuinn3400() { - _speakerName = "QUINN"; - _color1 = 60; - _color2 = 0; - _fieldF6 = 0; - _textWidth = 300; - _hideObjects = false; - _object2 = NULL; - _displayMode = 1; - _numFrames = 0; -} -void SpeakerQuinn3400::proc15() { +void SpeakerSeeker3400::proc15() { Scene3400 *scene = (Scene3400 *)R2_GLOBALS._sceneManager._scene; int v = _fieldF6; if (!_object2) { - if (R2_GLOBALS._player._characterIndex == 1) + if (R2_GLOBALS._player._characterIndex == 2) _object2 = &R2_GLOBALS._player; - else if (R2_GLOBALS._player._characterIndex == 2) - _object2 = &scene->_actor1; else - _object2 = &scene->_actor2; + _object2 = &scene->_actor1; _object2->hide(); _object1.postInit(); @@ -2120,6 +1665,8 @@ void SpeakerQuinn3400::proc15() { _object1._effect = 1; _object1.changeZoom(-1); R2_GLOBALS._player.disableControl(); + R2_GLOBALS._events.setCursor(CURSOR_CROSSHAIRS); + if (_object2->_mover) _object2->addMover(NULL); } @@ -2130,17 +1677,27 @@ void SpeakerQuinn3400::proc15() { break; case 1: ((SceneItem *)_action)->_sceneRegionId = 0; - _object1.setup(4010, 5, 1); + _object1.setup(4031, 1, 1); _object1.animate(ANIM_MODE_5, NULL); break; case 2: ((SceneItem *)_action)->_sceneRegionId = 0; - _object1.setup(4010, 3, 1); + _object1.setup(4031, 3, 1); _object1.animate(ANIM_MODE_5, NULL); break; case 3: ((SceneItem *)_action)->_sceneRegionId = 0; - _object1.setup(4012, 3, 1); + _object1.setup(4030, 3, 1); + _object1.animate(ANIM_MODE_5, NULL); + break; + case 4: + ((SceneItem *)_action)->_sceneRegionId = 0; + _object1.setup(4031, 7, 1); + _object1.animate(ANIM_MODE_5, NULL); + break; + case 5: + ((SceneItem *)_action)->_sceneRegionId = 0; + _object1.setup(4033, 1, 1); _object1.animate(ANIM_MODE_5, NULL); break; default: @@ -2149,35 +1706,29 @@ void SpeakerQuinn3400::proc15() { } } -SpeakerSeeker3400::SpeakerSeeker3400() { - _speakerName = "SEEKER"; - _color1 = 35; - _color2 = 0; - _fieldF6 = 0; - _textWidth = 300; - _hideObjects = false; - _object2 = NULL; - _displayMode = 1; - _numFrames = 0; +void SpeakerSeeker3700::setText(const Common::String &msg) { + Scene3700 *scene = (Scene3700 *)R2_GLOBALS._sceneManager._scene; + + if (_fieldF6 == 1) { + R2_GLOBALS._sound2.play(44); + scene->_actor3.setup(30, 8, 1); + } else { + scene->_actor3.setup(30, 2, 1); + } + VisualSpeaker::setText(msg); } -void SpeakerSeeker3400::proc15() { - Scene3400 *scene = (Scene3400 *)R2_GLOBALS._sceneManager._scene; +void SpeakerSeeker3700::proc15() { + Scene3700 *scene = (Scene3700 *)R2_GLOBALS._sceneManager._scene; int v = _fieldF6; if (!_object2) { - if (R2_GLOBALS._player._characterIndex == 2) - _object2 = &R2_GLOBALS._player; - else - _object2 = &scene->_actor1; - + _object2 = &scene->_actor2; _object2->hide(); _object1.postInit(); _object1.setPosition(_object2->_position); _object1._numFrames = 7; - _object1._effect = 1; - _object1.changeZoom(-1); R2_GLOBALS._player.disableControl(); R2_GLOBALS._events.setCursor(CURSOR_CROSSHAIRS); @@ -2185,33 +1736,27 @@ void SpeakerSeeker3400::proc15() { _object2->addMover(NULL); } + _object1.setPosition(_object2->_position); + switch (v) { case 0: _object1.animate(ANIM_MODE_2, NULL); break; case 1: ((SceneItem *)_action)->_sceneRegionId = 0; - _object1.setup(4031, 1, 1); + R2_GLOBALS._sound2.stop(); + scene->_actor1.setup(10, 8, 1); + scene->_actor2.setup(20, 7, 1); + scene->_actor3.setup(30, 8, 1); + _object1.setup(3701, 3, 1); _object1.animate(ANIM_MODE_5, NULL); break; case 2: ((SceneItem *)_action)->_sceneRegionId = 0; - _object1.setup(4031, 3, 1); - _object1.animate(ANIM_MODE_5, NULL); - break; - case 3: - ((SceneItem *)_action)->_sceneRegionId = 0; - _object1.setup(4030, 3, 1); - _object1.animate(ANIM_MODE_5, NULL); - break; - case 4: - ((SceneItem *)_action)->_sceneRegionId = 0; - _object1.setup(4031, 7, 1); - _object1.animate(ANIM_MODE_5, NULL); - break; - case 5: - ((SceneItem *)_action)->_sceneRegionId = 0; - _object1.setup(4033, 1, 1); + scene->_actor1.setup(10, 2, 1); + scene->_actor2.setup(20, 1, 1); + scene->_actor3.setup(30, 1, 1); + _object1.setup(4031, 1, 1); _object1.animate(ANIM_MODE_5, NULL); break; default: @@ -2220,9 +1765,13 @@ void SpeakerSeeker3400::proc15() { } } -SpeakerMiranda3400::SpeakerMiranda3400() { - _speakerName = "MIRANDA"; - _color1 = 154; +//---------------------------------------------------------------------------- +// Classes related to SEEKERL +//---------------------------------------------------------------------------- + +SpeakerSeekerL::SpeakerSeekerL(): VisualSpeaker() { + _speakerName = "SEEKERL"; + _color1 = 35; _color2 = 0; _fieldF6 = 0; _textWidth = 300; @@ -2230,55 +1779,55 @@ SpeakerMiranda3400::SpeakerMiranda3400() { _object2 = NULL; _displayMode = 1; _numFrames = 0; + _fontNumber = 10; } -void SpeakerMiranda3400::proc15() { - Scene3400 *scene = (Scene3400 *)R2_GLOBALS._sceneManager._scene; +//---------------------------------------------------------------------------- +// Classes related to SOCKO +//---------------------------------------------------------------------------- + +SpeakerSocko3200::SpeakerSocko3200() { + _speakerName = "Socko"; + _color1 = 10; + _color2 = 0; + _fieldF6 = 0; + _textWidth = 300; + _hideObjects = false; + _object2 = NULL; + _displayMode = 1; + _numFrames = 0; +} +void SpeakerSocko3200::proc15() { int v = _fieldF6; + Scene3200 *scene = (Scene3200 *)R2_GLOBALS._sceneManager._scene; if (!_object2) { - if (R2_GLOBALS._player._characterIndex == 3) - _object2 = &R2_GLOBALS._player; - else - _object2 = &scene->_actor2; - + _object2 = &scene->_actor3; _object2->hide(); _object1.postInit(); _object1.setPosition(_object2->_position); - _object1._numFrames = 7; - _object1._effect = 1; - _object1.changeZoom(-1); - R2_GLOBALS._player.disableControl(); - R2_GLOBALS._events.setCursor(CURSOR_CROSSHAIRS); - if (_object2->_mover) + if (_object2->_mover) _object2->addMover(NULL); } - switch (v) { - case 0: + if (v == 0) { _object1.animate(ANIM_MODE_2, NULL); - break; - case 1: - ((SceneItem *)_action)->_sceneRegionId = 0; - _object1.setup(4051, 5, 1); - _object1.animate(ANIM_MODE_5, NULL); - break; - case 2: + } else { ((SceneItem *)_action)->_sceneRegionId = 0; - _object1.setup(4050, 3, 1); - _object1.animate(ANIM_MODE_5, NULL); - break; - default: - signal(); - break; + _object1.setup(4060, (_object2->_strip * 2) - 1, 1); + _object1.animate(ANIM_MODE_5, this); } } -SpeakerWebbster3400::SpeakerWebbster3400() { - _speakerName = "WEBBSTER"; - _color1 = 27; +//---------------------------------------------------------------------------- +// Classes related to SOLDIER +//---------------------------------------------------------------------------- + +SpeakerSoldier300::SpeakerSoldier300(): VisualSpeaker() { + _speakerName = "SOLDIER"; + _color1 = 60; _color2 = 0; _fieldF6 = 0; _textWidth = 300; @@ -2288,63 +1837,93 @@ SpeakerWebbster3400::SpeakerWebbster3400() { _numFrames = 0; } -void SpeakerWebbster3400::proc15() { - Scene3400 *scene = (Scene3400 *)R2_GLOBALS._sceneManager._scene; +void SpeakerSoldier300::proc15() { + int v = _fieldF6; + + if (!_object2) { + Scene300 *scene = (Scene300 *)R2_GLOBALS._sceneManager._scene; + _object2 = &scene->_teal; + _object2->hide(); + + _object1.postInit(); + _object1.setPosition(_object2->_position); + + if (_object2->_mover) + _object2->addMover(NULL); + } + + if (v == 0) { + _object1.animate(ANIM_MODE_2, NULL); + } else { + ((SceneItem *)_action)->_sceneRegionId = 0; + _object1.setup(303, 3, 1); + _object1.animate(ANIM_MODE_5, this); + } +} + +//---------------------------------------------------------------------------- +// Classes related to TEAL +//---------------------------------------------------------------------------- + +SpeakerTeal::SpeakerTeal(): VisualSpeaker() { + _speakerName = "TEAL"; + _color1 = 22; + _color2 = 0; + _fieldF6 = 0; + _textWidth = 300; + _hideObjects = false; + _object2 = NULL; + _displayMode = 1; + _numFrames = 0; +} +void SpeakerTeal300::proc15() { int v = _fieldF6; if (!_object2) { - _object2 = &scene->_actor3; + Scene300 *scene = (Scene300 *)R2_GLOBALS._sceneManager._scene; + _object2 = &scene->_teal; + _object2->hide(); + + _object1.postInit(); + _object1.setPosition(_object2->_position); + + if (_object2->_mover) + _object2->addMover(NULL); + } + + if (v == 0) { + _object1.animate(ANIM_MODE_2, NULL); + } else { + ((SceneItem *)_action)->_sceneRegionId = 0; + _object1.setup(303, 1, 1); + _object1.animate(ANIM_MODE_5, this); + } +} + +void SpeakerTeal3240::proc15() { + int v = _fieldF6; + Scene3240 *scene = (Scene3240 *)R2_GLOBALS._sceneManager._scene; + + if (!_object2) { + _object2 = &scene->_actor1; _object2->hide(); _object1.postInit(); _object1.setPosition(_object2->_position); - _object1._numFrames = 7; - _object1._effect = 1; - _object1.changeZoom(-1); - R2_GLOBALS._player.disableControl(); - R2_GLOBALS._events.setCursor(CURSOR_CROSSHAIRS); - if (_object2->_mover) + if (_object2->_mover) _object2->addMover(NULL); } - switch (v) { - case 0: + if (v == 0) { _object1.animate(ANIM_MODE_2, NULL); - break; - case 1: - ((SceneItem *)_action)->_sceneRegionId = 0; - _object1.setup(4110, 5, 1); - _object1.animate(ANIM_MODE_5, NULL); - break; - case 2: - ((SceneItem *)_action)->_sceneRegionId = 0; - _object1.setup(4110, 7, 1); - _object1.animate(ANIM_MODE_5, NULL); - break; - case 3: + } else { ((SceneItem *)_action)->_sceneRegionId = 0; - _object1.setup(4110, 3, 1); - _object1.animate(ANIM_MODE_5, NULL); - break; - default: - signal(); - break; + _object1.setup(4070, (_object2->_strip * 2) - 1, 1); + _object1.animate(ANIM_MODE_5, this); } } -SpeakerTeal3400::SpeakerTeal3400() { - _speakerName = "TEAL"; - _color1 = 22; - _color2 = 0; - _fieldF6 = 0; - _textWidth = 300; - _hideObjects = false; - _object2 = NULL; - _displayMode = 1; - _numFrames = 0; -} - void SpeakerTeal3400::proc15() { Scene3400 *scene = (Scene3400 *)R2_GLOBALS._sceneManager._scene; @@ -2402,9 +1981,13 @@ void SpeakerTeal3400::proc15() { } } -SpeakerQuinn3700::SpeakerQuinn3700() { - _speakerName = "QUINN"; - _color1 = 60; +//---------------------------------------------------------------------------- +// Classes related to TOMKO +//---------------------------------------------------------------------------- + +SpeakerTomko3245::SpeakerTomko3245() { + _speakerName = "Tomko"; + _color1 = 10; _color2 = 0; _fieldF6 = 0; _textWidth = 300; @@ -2414,79 +1997,49 @@ SpeakerQuinn3700::SpeakerQuinn3700() { _numFrames = 0; } -void SpeakerQuinn3700::setText(const Common::String &msg) { - Scene3700 *scene = (Scene3700 *)R2_GLOBALS._sceneManager._scene; - - switch (_fieldF6) { - case 2: - scene->_actor3.setup(30, 1, 1); - R2_GLOBALS._sound2.play(44); - break; - case 3: - scene->_actor3.setup(30, 1, 1); - break; - default: - scene->_actor3.setup(30, 7, 1); - break; - } - VisualSpeaker::setText(msg); -} - -void SpeakerQuinn3700::proc15() { - Scene3700 *scene = (Scene3700 *)R2_GLOBALS._sceneManager._scene; - +void SpeakerTomko3245::proc15() { int v = _fieldF6; + Scene3245 *scene = (Scene3245 *)R2_GLOBALS._sceneManager._scene; if (!_object2) { - _object2 = &scene->_actor1; + _object2 = &scene->_actor2; _object2->hide(); _object1.postInit(); _object1.setPosition(_object2->_position); - _object1._numFrames = 7; - R2_GLOBALS._player.disableControl(); - R2_GLOBALS._events.setCursor(CURSOR_CROSSHAIRS); - if (_object2->_mover) + if (_object2->_mover) _object2->addMover(NULL); } - _object1.setPosition(_object2->_position); - - switch (v) { - case 0: + if (v == 0) { _object1.animate(ANIM_MODE_2, NULL); - break; - case 1: - ((SceneItem *)_action)->_sceneRegionId = 0; - R2_GLOBALS._sound2.stop(); - scene->_actor1.setup(10, 4, 1); - scene->_actor3.setup(30, 7, 1); - _object1.setup(3701, 1, 1); - _object1.animate(ANIM_MODE_5, NULL); - break; - case 2: - ((SceneItem *)_action)->_sceneRegionId = 0; - scene->_actor2.setup(20, 1, 1); - scene->_actor3.setup(30, 1, 1); - _object1.setup(3701, 2, 1); - _object1.animate(ANIM_MODE_5, NULL); - break; - case 3: + } else { ((SceneItem *)_action)->_sceneRegionId = 0; - scene->_actor1.setup(10, 2, 1); - scene->_actor3.setup(30, 1, 1); - _object1.setup(4011, 1, 1); - _object1.animate(ANIM_MODE_5, NULL); - break; - default: - signal(); - break; + switch (_object2->_visage) { + case 3100: + _object1.setup(4105, (_object2->_strip * 2) - 1, 1); + break; + case 3101: + _object1.setup(4108, (_object2->_strip * 2) - 1, 1); + break; + case 3102: + _object1.setup(4109, (_object2->_strip * 2) - 1, 1); + break; + default: + break; + } + + _object1.animate(ANIM_MODE_5, this); } } -SpeakerSeeker3700::SpeakerSeeker3700() { - _speakerName = "SEEKER"; - _color1 = 35; +//---------------------------------------------------------------------------- +// Classes related to WEBBSTER +//---------------------------------------------------------------------------- + +SpeakerWebbster::SpeakerWebbster(int colour) { + _speakerName = "WEBBSTER"; + _color1 = colour; _color2 = 0; _fieldF6 = 0; _textWidth = 300; @@ -2496,29 +2049,51 @@ SpeakerSeeker3700::SpeakerSeeker3700() { _numFrames = 0; } -void SpeakerSeeker3700::setText(const Common::String &msg) { - Scene3700 *scene = (Scene3700 *)R2_GLOBALS._sceneManager._scene; +void SpeakerWebbster3240::proc15() { + int v = _fieldF6; + Scene3240 *scene = (Scene3240 *)R2_GLOBALS._sceneManager._scene; - if (_fieldF6 == 1) { - R2_GLOBALS._sound2.play(44); - scene->_actor3.setup(30, 8, 1); + if (!_object2) { + _object2 = &scene->_actor2; + _object2->hide(); + _object1.postInit(); + _object1.setPosition(_object2->_position); + + if (_object2->_mover) + _object2->addMover(NULL); + } + + if (v == 0) { + _object1.animate(ANIM_MODE_2, NULL); } else { - scene->_actor3.setup(30, 2, 1); + ((SceneItem *)_action)->_sceneRegionId = 0; + _object1.setup(4110, 5, 1); + _object1.animate(ANIM_MODE_5, this); } - VisualSpeaker::setText(msg); } -void SpeakerSeeker3700::proc15() { - Scene3700 *scene = (Scene3700 *)R2_GLOBALS._sceneManager._scene; +void SpeakerWebbster3375::proc15() { + Scene3375 *scene = (Scene3375 *)R2_GLOBALS._sceneManager._scene; int v = _fieldF6; if (!_object2) { - _object2 = &scene->_actor2; + _object2 = &scene->_actor3; _object2->hide(); _object1.postInit(); _object1.setPosition(_object2->_position); _object1._numFrames = 7; + _object1._effect = 1; + _object1.changeZoom(-1); + + if (scene->_actor1._position.y != 163) + R2_GLOBALS._player.setStrip(8); + else + R2_GLOBALS._player.setStrip(2); + + if (R2_GLOBALS._player._mover) + R2_GLOBALS._player.addMover(NULL); + R2_GLOBALS._player.disableControl(); R2_GLOBALS._events.setCursor(CURSOR_CROSSHAIRS); @@ -2526,28 +2101,14 @@ void SpeakerSeeker3700::proc15() { _object2->addMover(NULL); } - _object1.setPosition(_object2->_position); - switch (v) { case 0: _object1.animate(ANIM_MODE_2, NULL); break; case 1: ((SceneItem *)_action)->_sceneRegionId = 0; - R2_GLOBALS._sound2.stop(); - scene->_actor1.setup(10, 8, 1); - scene->_actor2.setup(20, 7, 1); - scene->_actor3.setup(30, 8, 1); - _object1.setup(3701, 3, 1); - _object1.animate(ANIM_MODE_5, NULL); - break; - case 2: - ((SceneItem *)_action)->_sceneRegionId = 0; - scene->_actor1.setup(10, 2, 1); - scene->_actor2.setup(20, 1, 1); - scene->_actor3.setup(30, 1, 1); - _object1.setup(4031, 1, 1); - _object1.animate(ANIM_MODE_5, NULL); + _object1.setup(4110, 5, 1); + _object1.animate(ANIM_MODE_5, this); break; default: signal(); @@ -2555,20 +2116,52 @@ void SpeakerSeeker3700::proc15() { } } -SpeakerMiranda3700::SpeakerMiranda3700() { - _speakerName = "MIRANDA"; - _color1 = 154; - _color2 = 0; - _fieldF6 = 0; - _textWidth = 300; - _hideObjects = false; - _object2 = NULL; - _displayMode = 1; - _numFrames = 0; +void SpeakerWebbster3385::proc15() { + Scene3385 *scene = (Scene3385 *)R2_GLOBALS._sceneManager._scene; + + int v = _fieldF6; + + if (!_object2) { + _object2 = &scene->_actor3; + _object2->hide(); + _object1.postInit(); + _object1.setPosition(_object2->_position); + _object1._numFrames = 7; + _object1._effect = 1; + _object1.changeZoom(-1); + + if (R2_GLOBALS._sceneManager._previousScene == 3375) + R2_GLOBALS._player.setStrip(4); + else + R2_GLOBALS._player.setStrip(3); + + if (R2_GLOBALS._player._mover) + R2_GLOBALS._player.addMover(NULL); + + R2_GLOBALS._player.disableControl(CURSOR_TALK); + R2_GLOBALS._events.setCursor(CURSOR_CROSSHAIRS); + + if (_object2->_mover) + _object2->addMover(NULL); + } + + switch (v) { + case 0: + _object1.animate(ANIM_MODE_2, NULL); + break; + case 1: + ((SceneItem *)_action)->_sceneRegionId = 0; + _object1.setup(4110, 5, 1); + _object1.animate(ANIM_MODE_5, this); + break; + default: + signal(); + break; + } } -void SpeakerMiranda3700::proc15() { - Scene3700 *scene = (Scene3700 *)R2_GLOBALS._sceneManager._scene; +void SpeakerWebbster3400::proc15() { + Scene3400 *scene = (Scene3400 *)R2_GLOBALS._sceneManager._scene; int v = _fieldF6; @@ -2578,6 +2171,8 @@ void SpeakerMiranda3700::proc15() { _object1.postInit(); _object1.setPosition(_object2->_position); _object1._numFrames = 7; + _object1._effect = 1; + _object1.changeZoom(-1); R2_GLOBALS._player.disableControl(); R2_GLOBALS._events.setCursor(CURSOR_CROSSHAIRS); @@ -2585,32 +2180,23 @@ void SpeakerMiranda3700::proc15() { _object2->addMover(NULL); } - _object1.setPosition(_object2->_position); - switch (v) { case 0: _object1.animate(ANIM_MODE_2, NULL); break; case 1: ((SceneItem *)_action)->_sceneRegionId = 0; - scene->_actor1.setup(10, 6, 1); - scene->_actor2.setup(20, 5, 1); - _object2->setup(30, 1, 1); - scene->_actor4.setup(40, 1, 1); - _object1.setup(4050, 5, 1); + _object1.setup(4110, 5, 1); _object1.animate(ANIM_MODE_5, NULL); break; case 2: ((SceneItem *)_action)->_sceneRegionId = 0; - scene->_actor3.setup(30, 8, 1); - _object1.setup(4052, 3, 1); + _object1.setup(4110, 7, 1); _object1.animate(ANIM_MODE_5, NULL); break; case 3: ((SceneItem *)_action)->_sceneRegionId = 0; - scene->_actor2.setup(20, 1, 1); - scene->_actor3.setup(30, 1, 1); - _object1.setup(4051, 7, 1); + _object1.setup(4110, 3, 1); _object1.animate(ANIM_MODE_5, NULL); break; default: -- cgit v1.2.3