[Scummvm-cvs-logs] scummvm master -> 544e241d221a5d503e2acf574fbde66c8a4fa527

Strangerke Strangerke at scummvm.org
Sat Dec 24 01:17:16 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:
544e241d22 TSAGE: R2R - Implement scene 3255


Commit: 544e241d221a5d503e2acf574fbde66c8a4fa527
    https://github.com/scummvm/scummvm/commit/544e241d221a5d503e2acf574fbde66c8a4fa527
Author: Strangerke (strangerke at scummvm.org)
Date: 2011-12-23T16:16:29-08:00

Commit Message:
TSAGE: R2R - Implement scene 3255

Changed paths:
    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/ringworld2/ringworld2_logic.cpp b/engines/tsage/ringworld2/ringworld2_logic.cpp
index dbde0ee..5cb66a5 100644
--- a/engines/tsage/ringworld2/ringworld2_logic.cpp
+++ b/engines/tsage/ringworld2/ringworld2_logic.cpp
@@ -206,6 +206,7 @@ Scene *Ringworld2Game::createScene(int sceneNumber) {
 		// Room with large stasis field negator
 		return new Scene3250();
 	case 3255:
+		return new Scene3255();
 	case 3260:
 		// Computer room
 		return new Scene3260();
diff --git a/engines/tsage/ringworld2/ringworld2_scenes3.cpp b/engines/tsage/ringworld2/ringworld2_scenes3.cpp
index 8b8d8c4..f7e7be0 100644
--- a/engines/tsage/ringworld2/ringworld2_scenes3.cpp
+++ b/engines/tsage/ringworld2/ringworld2_scenes3.cpp
@@ -1257,6 +1257,111 @@ void Scene3250::dispatch() {
 }
 
 /*--------------------------------------------------------------------------
+ * Scene 3255 -
+ *
+ *--------------------------------------------------------------------------*/
+void Scene3255::postInit(SceneObjectList *OwnerList) {
+	loadScene(3255);
+	SceneExt::postInit();
+
+	_stripManager.addSpeaker(&_quinnSpeaker);
+	_stripManager.addSpeaker(&_mirandaSpeaker);
+
+	if (R2_GLOBALS._sceneManager._previousScene == -1)
+		R2_GLOBALS.setFlag(79);
+
+	R2_GLOBALS._player.postInit();
+	R2_GLOBALS._player.disableControl();
+
+	if (R2_GLOBALS.getFlag(79)) {
+		R2_GLOBALS._sound1.play(267);
+		R2_GLOBALS._sound2.play(268);
+		_sceneMode = 3257;
+		_actor3.postInit();
+		_actor4.postInit();
+		_actor4._effect = 1;
+		setAction(&_sequenceManager, this, 3257, &R2_GLOBALS._player, &_actor4, &_actor3, NULL);
+	} else {
+		_actor1.postInit();
+		_actor1.setup(303, 1, 1);
+		_actor1.setPosition(Common::Point(208, 128));
+		_actor2.postInit();
+		_actor2.setup(3107, 3, 1);
+		_actor2.setPosition(Common::Point(230, 127));
+		_sceneMode = 3255;
+		setAction(&_sequenceManager, this, 3255, &R2_GLOBALS._player, NULL);
+	}
+	R2_GLOBALS._player._oldCharacterScene[3] = 3255;
+}
+
+void Scene3255::signal() {
+	switch (_sceneMode) {
+	case 10:
+		_sceneMode = 3258;
+		_actor5.postInit();
+		_actor6.postInit();
+		_actor7.postInit();
+		setAction(&_sequenceManager, this, 3258, &R2_GLOBALS._player, &_actor4, &_actor3, &_actor5, &_actor6, &_actor7, NULL);
+		break;
+	case 3256:
+		R2_GLOBALS._sceneManager.changeScene(3250);
+		break;
+	case 3257:
+		_sceneMode = 10;
+		R2_GLOBALS._events.setCursor(CURSOR_CROSSHAIRS);
+		_stripManager.start(607, this);
+		break;
+	case 3258:
+		R2_GLOBALS._sceneManager.changeScene(3100);
+		break;
+	default:
+		SceneItem::display(3255, 0, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, -999);
+		_sceneMode = 3256;
+		setAction(&_sequenceManager, this, 3256, &R2_GLOBALS._player, NULL);
+	}
+}
+
+void Scene3255::dispatch() {
+	if (R2_GLOBALS.getFlag(79)) {
+		if (_actor5._position.y >= 95) {
+			if (_actor5._position.y <= 110)
+				_actor5._shade = 6 - (_actor5._position.y - 95) / 3;
+			else
+				_actor5._effect = 1;
+		} else {
+			_actor5._effect = 6;
+			_actor5._shade = 6;
+		}
+
+		if (_actor6._position.y >= 95) {
+			if (_actor6._position.y <= 110)
+				_actor6._shade = 6 - (_actor6._position.y - 95) / 3;
+			else
+				_actor6._effect = 1;
+		} else {
+			_actor6._effect = 6;
+			_actor6._shade = 6;
+		}
+
+		if (_actor7._position.y >= 95) {
+			if (_actor7._position.y <= 110)
+				_actor7._shade = 6 - (_actor7._position.y - 95) / 3;
+			else
+				_actor7._effect = 1;
+		} else {
+			_actor7._effect = 6;
+			_actor7._shade = 6;
+		}
+	}
+
+	if ((R2_GLOBALS._player._position.x > 250) && (R2_GLOBALS._player._shade == 1)) {
+		R2_GLOBALS._player._effect = 6;
+		_actor4._effect = 6;
+	}
+	Scene::dispatch();
+}
+
+/*--------------------------------------------------------------------------
  * Scene 3260 - Computer room
  *
  *--------------------------------------------------------------------------*/
diff --git a/engines/tsage/ringworld2/ringworld2_scenes3.h b/engines/tsage/ringworld2/ringworld2_scenes3.h
index 2a4899c..22e5fea 100644
--- a/engines/tsage/ringworld2/ringworld2_scenes3.h
+++ b/engines/tsage/ringworld2/ringworld2_scenes3.h
@@ -291,6 +291,24 @@ public:
 	virtual void dispatch();
 };
 
+class Scene3255 : public SceneExt {
+public:
+	SceneActor _actor1;
+	SceneActor _actor2;
+	SceneActor _actor3;
+	SceneActor _actor4;
+	SceneActor _actor5;
+	SceneActor _actor6;
+	SceneActor _actor7;
+	SpeakerQuinn3255 _quinnSpeaker;
+	SpeakerMiranda3255 _mirandaSpeaker;
+	SequenceManager _sequenceManager;
+
+	virtual void postInit(SceneObjectList *OwnerList = NULL);
+	virtual void signal();
+	virtual void dispatch();
+};
+
 class Scene3260 : public SceneExt {
 	class Actor13 : public SceneActor {
 		virtual bool startAction(CursorType action, Event &event);
diff --git a/engines/tsage/ringworld2/ringworld2_speakers.cpp b/engines/tsage/ringworld2/ringworld2_speakers.cpp
index 619b1c2..b63409e 100644
--- a/engines/tsage/ringworld2/ringworld2_speakers.cpp
+++ b/engines/tsage/ringworld2/ringworld2_speakers.cpp
@@ -1534,5 +1534,73 @@ void SpeakerTomko3245::proc15() {
 	}
 }
 
+SpeakerQuinn3255::SpeakerQuinn3255() {
+	_speakerName = "QUINN";
+	_color1 = 60;
+	_color2 = 0;
+	_fieldF6 = 0;
+	_textWidth = 300;
+	_hideObjects = false;
+	_object2 = NULL;
+	_displayMode = 1;
+	_numFrames = 0;
+}
+
+void SpeakerQuinn3255::proc15() {
+	Scene3255 *scene = (Scene3255 *)R2_GLOBALS._sceneManager._scene;
+
+	int v = _fieldF6;
+
+	if (!_object2) {
+		_object2 = &scene->_actor4;
+		_object2->hide();
+		_object1.postInit();
+		_object1._effect = _object2->_effect;
+		_object1._shade = _object2->_shade;
+		_object1.setPosition(_object2->_position);
+	}
+
+	if (v == 0) {
+		_object1.animate(ANIM_MODE_2, NULL);
+	} else {
+		((SceneItem *)_action)->_sceneRegionId = 0;
+		_object1.setup(3257, 3, 1);
+		_object1.animate(ANIM_MODE_5, this);
+	}
+}
+
+SpeakerMiranda3255::SpeakerMiranda3255() {
+	_speakerName = "MIRANDA";
+	_color1 = 154;
+	_color2 = 0;
+	_fieldF6 = 0;
+	_textWidth = 300;
+	_hideObjects = false;
+	_object2 = NULL;
+	_displayMode = 1;
+	_numFrames = 0;
+}
+
+void SpeakerMiranda3255::proc15() {
+	int v = _fieldF6;
+
+	if (!_object2) {
+		_object2 = &R2_GLOBALS._player;
+		_object2->hide();
+		_object1.postInit();
+		_object1._effect = _object2->_effect;
+		_object1._shade = _object2->_shade;
+		_object1.setPosition(_object2->_position);
+	}
+
+	if (v == 0) {
+		_object1.animate(ANIM_MODE_2, NULL);
+	} else {
+		((SceneItem *)_action)->_sceneRegionId = 0;
+		_object1.setup(3257, 5, 1);
+		_object1.animate(ANIM_MODE_5, this);
+	}
+}
+
 } // 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 e6a1819..dba402b 100644
--- a/engines/tsage/ringworld2/ringworld2_speakers.h
+++ b/engines/tsage/ringworld2/ringworld2_speakers.h
@@ -372,6 +372,22 @@ public:
 	virtual Common::String getClassName() { return "SpeakerTomko3245"; }
 	virtual void proc15();
 };
+
+class SpeakerQuinn3255 : public VisualSpeaker {
+public:
+	SpeakerQuinn3255();
+
+	virtual Common::String getClassName() { return "SpeakerQuinn3255"; }
+	virtual void proc15();
+};
+
+class SpeakerMiranda3255 : public VisualSpeaker {
+public:
+	SpeakerMiranda3255();
+
+	virtual Common::String getClassName() { return "SpeakerMiranda3255"; }
+	virtual void proc15();
+};
 } // End of namespace Ringworld2
 } // End of namespace TsAGE
 






More information about the Scummvm-git-logs mailing list