[Scummvm-cvs-logs] scummvm master -> 9ba55105fccf0489659d91cee38a899f13628168

Strangerke Strangerke at scummvm.org
Sun Dec 25 23:41:31 CET 2011


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
9ba55105fc TSAGE: R2R - Implement scene 3400


Commit: 9ba55105fccf0489659d91cee38a899f13628168
    https://github.com/scummvm/scummvm/commit/9ba55105fccf0489659d91cee38a899f13628168
Author: Strangerke (strangerke at scummvm.org)
Date: 2011-12-25T14:41:03-08:00

Commit Message:
TSAGE: R2R - Implement scene 3400

Changed paths:
    engines/tsage/globals.cpp
    engines/tsage/globals.h
    engines/tsage/ringworld2/ringworld2_logic.cpp
    engines/tsage/ringworld2/ringworld2_scenes3.cpp
    engines/tsage/ringworld2/ringworld2_scenes3.h
    engines/tsage/ringworld2/ringworld2_speakers.cpp
    engines/tsage/ringworld2/ringworld2_speakers.h



diff --git a/engines/tsage/globals.cpp b/engines/tsage/globals.cpp
index 740d9b9..d30d585 100644
--- a/engines/tsage/globals.cpp
+++ b/engines/tsage/globals.cpp
@@ -381,6 +381,7 @@ void Ringworld2Globals::reset() {
 	T2_GLOBALS._uiElements._active = false;
 
 	// Reset fields
+	_v558B6.set(0, 0, 0, 0);
 	_v5657C = 0;
 	_v565F5 = 0;
 	_v565AE = 0;
@@ -419,6 +420,8 @@ void Ringworld2Globals::synchronize(Serializer &s) {
 	TsAGE2Globals::synchronize(s);
 	int i;
 
+	_v558B6.synchronize(s);
+
 	s.syncAsSint16LE(_v5657C);
 	s.syncAsSint16LE(_v565F5);
 	s.syncAsSint16LE(_v56AAB);
diff --git a/engines/tsage/globals.h b/engines/tsage/globals.h
index fb892c6..498659d 100644
--- a/engines/tsage/globals.h
+++ b/engines/tsage/globals.h
@@ -248,6 +248,7 @@ public:
 	PlayStream _playStream;
 	StripProxy _stripProxy;
 	int _insetUp;
+	Rect _v558B6;
 	int _v565F5;
 	int _v5657C;
 	byte _v565AE;
diff --git a/engines/tsage/ringworld2/ringworld2_logic.cpp b/engines/tsage/ringworld2/ringworld2_logic.cpp
index 30e7946..4462122 100644
--- a/engines/tsage/ringworld2/ringworld2_logic.cpp
+++ b/engines/tsage/ringworld2/ringworld2_logic.cpp
@@ -219,7 +219,9 @@ Scene *Ringworld2Game::createScene(int sceneNumber) {
 	case 3375:
 	case 3385:
 	case 3395:
+		error("Missing scene %d from group 3", sceneNumber);
 	case 3400:
+		return new Scene3400();
 	case 3500:
 	case 3600:
 	case 3700:
diff --git a/engines/tsage/ringworld2/ringworld2_scenes3.cpp b/engines/tsage/ringworld2/ringworld2_scenes3.cpp
index ce08e96..e3d2869 100644
--- a/engines/tsage/ringworld2/ringworld2_scenes3.cpp
+++ b/engines/tsage/ringworld2/ringworld2_scenes3.cpp
@@ -1698,5 +1698,252 @@ void Scene3350::signal() {
 	}
 }
 
+/*--------------------------------------------------------------------------
+ * Scene 3400 - 
+ *
+ *--------------------------------------------------------------------------*/
+Scene3400::Scene3400() {
+	_field157C = 0;
+}
+
+void Scene3400::synchronize(Serializer &s) {
+	SceneExt::synchronize(s);
+
+	s.syncAsSint16LE(_field157C);
+}
+
+void Scene3400::postInit(SceneObjectList *OwnerList) {
+	R2_GLOBALS._scrollFollower = &R2_GLOBALS._player;
+	g_globals->gfxManager()._bounds.moveTo(Common::Point(160, 0));
+	loadScene(3400);
+	_field157C = 0;
+	R2_GLOBALS._v558B6.set(60, 0, 260, 200);
+	SceneExt::postInit();
+	R2_GLOBALS._sound1.play(317);
+
+	_stripManager.setColors(60, 255);
+	_stripManager.setFontNumber(3);
+	_stripManager.addSpeaker(&_quinnSpeaker);
+	_stripManager.addSpeaker(&_seekerSpeaker);
+	_stripManager.addSpeaker(&_mirandaSpeaker);
+	_stripManager.addSpeaker(&_webbsterSpeaker);
+	_stripManager.addSpeaker(&_tealSpeaker);
+
+	setZoomPercents(51, 46, 180, 200);
+	R2_GLOBALS._player._characterScene[1] = 3400;
+	R2_GLOBALS._player._characterScene[2] = 3400;
+	R2_GLOBALS._player._characterScene[3] = 3400;
+
+	_actor7.postInit();
+	_actor7.setup(3403, 1, 1);
+	_actor7.setPosition(Common::Point(190, 103));
+	_actor7.fixPriority(89);
+
+	R2_GLOBALS._player.postInit();
+	if (R2_GLOBALS._player._characterIndex == 2)
+		R2_GLOBALS._player._moveDiff = Common::Point(5, 3);
+	else
+		R2_GLOBALS._player._moveDiff = Common::Point(3, 2);
+	R2_GLOBALS._player.changeZoom(-1);
+	R2_GLOBALS._player.setPosition(Common::Point(239, 64));
+
+	if (R2_GLOBALS._player._characterIndex == 2)
+		R2_GLOBALS._player.setup(20, 5, 1);
+	else if (R2_GLOBALS._player._characterIndex == 3)
+		R2_GLOBALS._player.setup(30, 5, 1);
+	else
+		R2_GLOBALS._player.setup(10, 5, 1);
+
+	R2_GLOBALS._player.animate(ANIM_MODE_1, NULL);
+	R2_GLOBALS._player.disableControl();
+
+	_actor1.postInit();
+	if (R2_GLOBALS._player._characterIndex == 2) {
+		_actor1._numFrames = 10;
+		_actor1._moveDiff = Common::Point(3, 2);
+	} else {
+		_actor1._numFrames = 7;
+		_actor1._moveDiff = Common::Point(5, 3);
+	}
+	_actor1.changeZoom(-1);
+	_actor1._effect = 1;
+	_actor1.setPosition(Common::Point(247, 63));
+	if (R2_GLOBALS._player._characterIndex == 2)
+		_actor1.setup(10, 5, 1);
+	else
+		_actor1.setup(20, 5, 1);
+	_actor1.animate(ANIM_MODE_1, NULL);
+
+	_actor2.postInit();
+	_actor2._moveDiff = Common::Point(3, 2);
+	_actor2.changeZoom(-1);
+	_actor2._effect = 1;
+	_actor2.setPosition(Common::Point(225, 63));
+	if (R2_GLOBALS._player._characterIndex == 3)
+		_actor2.setup(10, 5, 1);
+	else
+		_actor2.setup(30, 5, 1);
+	_actor2.animate(ANIM_MODE_1, NULL);
+
+	_actor3.postInit();
+	_actor3._numFrames = 7;
+	_actor3._moveDiff = Common::Point(5, 3);
+	_actor3.changeZoom(-1);
+	_actor3._effect = 1;
+	_actor3.setPosition(Common::Point(235, 61));
+	_actor3.setup(40, 3, 1);
+	_actor3.animate(ANIM_MODE_1, NULL);
+
+	_actor6.postInit();
+	_actor6.setup(3400, 1, 6);
+	_actor6.setPosition(Common::Point(236, 51));
+	_actor6.fixPriority(51);
+	_actor6.animate(ANIM_MODE_6, NULL);
+
+	R2_GLOBALS.clearFlag(71);
+	_sceneMode = 3400;
+	setAction(&_sequenceManager, this, 3400, &R2_GLOBALS._player, &_actor1, &_actor2, &_actor3, NULL);
+}
+
+void Scene3400::remove() {
+	R2_GLOBALS._sound2.fadeOut2(NULL);
+	R2_GLOBALS._sound1.fadeOut2(NULL);
+	SceneExt::remove();
+}
+
+void Scene3400::signal() {
+	switch (_sceneMode) {
+	case 3305: {
+		warning("STUB: sub_1D227()");
+		_tealSpeaker._object1.hide();
+		_actor4.show();
+		_actor4.setStrip(1);
+		Common::Point pt(158, 190);
+		NpcMover *mover = new NpcMover();
+		_actor4.addMover(mover, &pt, this);
+		_sceneMode = 3402;
+		setAction(&_sequenceManager, this, 3402, &R2_GLOBALS._player, &_actor1, &_actor2, &_actor3, NULL);
+		}
+		break;
+	case 3306:
+		R2_GLOBALS._sound2.play(318);
+		_actor1.setStrip(2);
+		R2_GLOBALS._player.setStrip(6);
+		_actor2.setStrip(6);
+		_actor3.setStrip(3);
+		_actor4.setStrip(1);
+		R2_INVENTORY.setObjectScene(34, 0);
+		_stripManager.start(3307, this);
+		if (R2_GLOBALS._player._characterIndex == 2) {
+			_sceneMode = 3400;
+			R2_GLOBALS._player.setAction(&_sequenceManager, this, 3400, &R2_GLOBALS._player, &_actor4, &_actor8, NULL);
+		} else {
+			_sceneMode = 3408;
+			_actor1.setAction(&_sequenceManager, this, 3408, &_actor1, &_actor4, &_actor8, NULL);
+		}
+		break;
+	case 3307:
+	case 3404:
+	case 3408:
+		if (_field157C == 0) {
+			R2_GLOBALS._sound2.fadeOut2(NULL);
+			_field157C = 1;
+		} else {
+			_sceneMode = 3308;
+			_stripManager.start(3308, this);
+		}
+		break;
+	case 3308:
+		warning("STUB: sub_1D227()");
+		_actor1.setStrip(2);
+		R2_GLOBALS._player.setStrip(6);
+		_actor2.setStrip(6);
+		_actor3.setStrip(3);
+		_actor4.setStrip(1);
+		_sceneMode = 3403;
+		if (R2_GLOBALS._player._characterIndex == 2)
+			setAction(&_sequenceManager, this, 3403, R2_GLOBALS._player, &_actor3, &_actor7, NULL);
+		else 
+			setAction(&_sequenceManager, this, 3403, &_actor1, &_actor3, &_actor7, NULL);
+		break;
+	case 3309:
+		warning("STUB: sub_1D227()");
+		_actor4.setStrip(1);
+		_sceneMode = 3405;
+		if (R2_GLOBALS._player._characterIndex == 3)
+			setAction(&_sequenceManager, this, 3405, R2_GLOBALS._player, &_actor7, NULL);
+		else 
+			setAction(&_sequenceManager, this, 3405, &_actor2, &_actor7, NULL);
+		break;
+	case 3310:
+		warning("STUB: sub_1D227()");
+		_actor4.setStrip(1);
+		_sceneMode = 3406;
+		if (R2_GLOBALS._player._characterIndex == 1)
+			setAction(&_sequenceManager, this, 3406, &R2_GLOBALS._player, &_actor7, NULL);
+		else if (R2_GLOBALS._player._characterIndex == 2)
+			setAction(&_sequenceManager, this, 3406, &_actor1, &_actor7, NULL);
+		else if (R2_GLOBALS._player._characterIndex == 3)
+			setAction(&_sequenceManager, this, 3406, &_actor2, &_actor7, NULL);
+		break;
+	case 3311:
+		warning("STUB: sub_1D227()");
+		_tealSpeaker._object1.hide();
+		_actor4.show();
+		_actor4.setStrip(1);
+		_sceneMode = 3407;
+		setAction(&_sequenceManager, this, 3407, &_actor4, &_actor7, NULL);
+		break;
+	case 3400: {
+		_actor8.postInit();
+		_actor8.hide();
+		_actor4.postInit();
+		_actor4._numFrames = 7;
+		_actor4._moveDiff = Common::Point(3, 2);
+		_actor4.changeZoom(-1);
+		_actor4._effect = 1;
+		_actor4.setPosition(Common::Point(-15, 90));
+		_actor4.setup(3402, 1, 1);
+		_actor4.animate(ANIM_MODE_1, NULL);
+		Common::Point pt1(115, 90);
+		NpcMover *mover1 = new NpcMover();
+		_actor4.addMover(mover1, &pt1, this);
+		R2_GLOBALS._scrollFollower = &_actor4;
+		Common::Point pt2(203, 76);
+		NpcMover *mover2 = new NpcMover();
+		_actor3.addMover(mover2, &pt2, NULL);
+		_sceneMode = 3401;
+		}
+		break;
+	case 3401:
+		_sceneMode = 3305;
+		_stripManager.start(3305, this);
+		break;
+	case 3402:
+		_sceneMode = 3306;
+		_stripManager.start(3306, this);
+		break;
+	case 3403:
+		R2_GLOBALS._scrollFollower = &R2_GLOBALS._player;
+		_sceneMode = 3309;
+		_stripManager.start(3309, this);
+		break;
+	case 3405:
+		_sceneMode = 3310;
+		_stripManager.start(3310, this);
+		break;
+	case 3406:
+		_sceneMode = 3311;
+		_stripManager.start(3311, this);
+		break;
+	case 3407:
+		R2_GLOBALS._sceneManager.changeScene(3600);
+		break;
+	default:
+		R2_GLOBALS._player.enableControl();
+		break;
+	}
+}
+
 } // End of namespace Ringworld2
 } // End of namespace TsAGE
diff --git a/engines/tsage/ringworld2/ringworld2_scenes3.h b/engines/tsage/ringworld2/ringworld2_scenes3.h
index ac14366..8968bdd 100644
--- a/engines/tsage/ringworld2/ringworld2_scenes3.h
+++ b/engines/tsage/ringworld2/ringworld2_scenes3.h
@@ -400,6 +400,30 @@ public:
 	virtual void signal();
 };
 
+class Scene3400 : public SceneExt {
+public:
+	SpeakerQuinn3400 _quinnSpeaker;
+	SpeakerSeeker3400 _seekerSpeaker;
+	SpeakerMiranda3400 _mirandaSpeaker;
+	SpeakerWebbster3400 _webbsterSpeaker;
+	SpeakerTeal3400 _tealSpeaker;
+	SceneActor _actor1;
+	SceneActor _actor2;
+	SceneActor _actor3;
+	SceneActor _actor4;
+	SceneActor _actor5;
+	SceneActor _actor6;
+	SceneActor _actor7;
+	SceneActor _actor8;
+	SequenceManager _sequenceManager;
+	int16 _field157C;
+
+	Scene3400();
+	virtual void postInit(SceneObjectList *OwnerList = NULL);
+	virtual void remove();
+	virtual void signal();
+	virtual void synchronize(Serializer &s);
+};
 } // End of namespace Ringworld2
 } // End of namespace TsAGE
 
diff --git a/engines/tsage/ringworld2/ringworld2_speakers.cpp b/engines/tsage/ringworld2/ringworld2_speakers.cpp
index b63409e..edcf340 100644
--- a/engines/tsage/ringworld2/ringworld2_speakers.cpp
+++ b/engines/tsage/ringworld2/ringworld2_speakers.cpp
@@ -1602,5 +1602,318 @@ void SpeakerMiranda3255::proc15() {
 	}
 }
 
+SpeakerQuinn3400::SpeakerQuinn3400() {
+	_speakerName = "QUINN";
+	_color1 = 60;
+	_color2 = 0;
+	_fieldF6 = 0;
+	_textWidth = 300;
+	_hideObjects = false;
+	_object2 = NULL;
+	_displayMode = 1;
+	_numFrames = 0;
+}
+void SpeakerQuinn3400::proc15() {
+	Scene3400 *scene = (Scene3400 *)R2_GLOBALS._sceneManager._scene;
+
+	int v = _fieldF6;
+
+	if (!_object2) {
+		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.setPosition(_object2->_position);
+		_object1._numFrames = 7;
+		_object1._effect = 1;
+		_object1.changeZoom(-1);
+		R2_GLOBALS._player.disableControl();
+		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(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;
+	}
+}
+
+SpeakerSeeker3400::SpeakerSeeker3400() {
+	_speakerName = "SEEKER";
+	_color1 = 35;
+	_color2 = 0;
+	_fieldF6 = 0;
+	_textWidth = 300;
+	_hideObjects = false;
+	_object2 = NULL;
+	_displayMode = 1;
+	_numFrames = 0;
+}
+
+void SpeakerSeeker3400::proc15() {
+	Scene3400 *scene = (Scene3400 *)R2_GLOBALS._sceneManager._scene;
+
+	int v = _fieldF6;
+
+	if (!_object2) {
+		if (R2_GLOBALS._player._characterIndex == 2) 
+			_object2 = &R2_GLOBALS._player;
+		else
+			_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)
+			_object2->addMover(NULL);
+	}
+
+	switch (v) {
+	case 0:
+		_object1.animate(ANIM_MODE_2, NULL);
+		break;
+	case 1:
+		((SceneItem *)_action)->_sceneRegionId = 0;
+		_object1.setup(4031, 1, 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);
+		_object1.animate(ANIM_MODE_5, NULL);
+		break;
+	default:
+		signal();
+		break;
+	}
+}
+
+SpeakerMiranda3400::SpeakerMiranda3400() {
+	_speakerName = "MIRANDA";
+	_color1 = 154;
+	_color2 = 0;
+	_fieldF6 = 0;
+	_textWidth = 300;
+	_hideObjects = false;
+	_object2 = NULL;
+	_displayMode = 1;
+	_numFrames = 0;
+}
+
+void SpeakerMiranda3400::proc15() {
+	Scene3400 *scene = (Scene3400 *)R2_GLOBALS._sceneManager._scene;
+
+	int v = _fieldF6;
+
+	if (!_object2) {
+		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)
+			_object2->addMover(NULL);
+	}
+
+	switch (v) {
+	case 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:
+		((SceneItem *)_action)->_sceneRegionId = 0;
+		_object1.setup(4050, 3, 1);
+		_object1.animate(ANIM_MODE_5, NULL);
+		break;
+	default:
+		signal();
+		break;
+	}
+}
+
+SpeakerWebbster3400::SpeakerWebbster3400() {
+	_speakerName = "WEBBSTER";
+	_color1 = 27;
+	_color2 = 0;
+	_fieldF6 = 0;
+	_textWidth = 300;
+	_hideObjects = false;
+	_object2 = NULL;
+	_displayMode = 1;
+	_numFrames = 0;
+}
+
+void SpeakerWebbster3400::proc15() {
+	Scene3400 *scene = (Scene3400 *)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);
+		R2_GLOBALS._player.disableControl();
+		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, NULL);
+		break;
+	case 2:
+		((SceneItem *)_action)->_sceneRegionId = 0;
+		_object1.setup(4110, 7, 1);
+		_object1.animate(ANIM_MODE_5, NULL);
+		break;
+	case 3:
+		((SceneItem *)_action)->_sceneRegionId = 0;
+		_object1.setup(4110, 3, 1);
+		_object1.animate(ANIM_MODE_5, NULL);
+		break;
+	default:
+		signal();
+		break;
+	}
+}
+
+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;
+
+	int v = _fieldF6;
+
+	if (!_object2) {
+		_object2 = &scene->_actor4;
+		_object2->hide();
+		_object1.postInit();
+		_object1._numFrames = 7;
+		_object1._effect = 1;
+		_object1.changeZoom(-1);
+		R2_GLOBALS._player.disableControl();
+		R2_GLOBALS._events.setCursor(CURSOR_CROSSHAIRS);
+
+		if (_object2->_mover)
+			_object2->addMover(NULL);
+	}
+	_object1.setPosition(_object2->_position);
+	_object1.show();
+
+	if (scene ->_sceneMode == 3305) {
+		R2_GLOBALS._player.setStrip(6);
+		scene->_actor1.setStrip(6);
+		scene->_actor2.setStrip(6);
+	}
+
+	switch (v) {
+	case 0:
+		_object1.animate(ANIM_MODE_2, NULL);
+		break;
+	case 1:
+		((SceneItem *)_action)->_sceneRegionId = 0;
+		_object1.setup(4107, 5, 1);
+		_object1.animate(ANIM_MODE_5, NULL);
+		break;
+	case 2:
+		((SceneItem *)_action)->_sceneRegionId = 0;
+		_object1.setup(4107, 1, 1);
+		_object1.animate(ANIM_MODE_5, NULL);
+		break;
+	case 3:
+		((SceneItem *)_action)->_sceneRegionId = 0;
+		_object1.setup(4107, 7, 1);
+		_object1.animate(ANIM_MODE_5, NULL);
+		break;
+	case 4:
+		((SceneItem *)_action)->_sceneRegionId = 0;
+		_object1.setup(4107, 3, 1);
+		_object1.animate(ANIM_MODE_5, NULL);
+		break;
+	default:
+		signal();
+		break;
+	}
+}
+
 } // End of namespace Ringworld2
 } // End of namespace TsAGE
diff --git a/engines/tsage/ringworld2/ringworld2_speakers.h b/engines/tsage/ringworld2/ringworld2_speakers.h
index dba402b..f85b412 100644
--- a/engines/tsage/ringworld2/ringworld2_speakers.h
+++ b/engines/tsage/ringworld2/ringworld2_speakers.h
@@ -388,6 +388,46 @@ public:
 	virtual Common::String getClassName() { return "SpeakerMiranda3255"; }
 	virtual void proc15();
 };
+
+class SpeakerQuinn3400 : public VisualSpeaker {
+public:
+	SpeakerQuinn3400();
+
+	virtual Common::String getClassName() { return "SpeakerQuinn3400"; }
+	virtual void proc15();
+};
+
+class SpeakerSeeker3400 : public VisualSpeaker {
+public:
+	SpeakerSeeker3400();
+
+	virtual Common::String getClassName() { return "SpeakerSeeker3400"; }
+	virtual void proc15();
+};
+
+class SpeakerMiranda3400 : public VisualSpeaker {
+public:
+	SpeakerMiranda3400();
+
+	virtual Common::String getClassName() { return "SpeakerMiranda3400"; }
+	virtual void proc15();
+};
+
+class SpeakerWebbster3400 : public VisualSpeaker {
+public:
+	SpeakerWebbster3400();
+
+	virtual Common::String getClassName() { return "SpeakerWebbster3400"; }
+	virtual void proc15();
+};
+
+class SpeakerTeal3400 : public VisualSpeaker {
+public:
+	SpeakerTeal3400();
+
+	virtual Common::String getClassName() { return "SpeakerTeal3400"; }
+	virtual void proc15();
+};
 } // End of namespace Ringworld2
 } // End of namespace TsAGE
 






More information about the Scummvm-git-logs mailing list