[Scummvm-cvs-logs] scummvm master -> ca51f1681b01cb2746b56ed143807b82a93ac708

Strangerke Strangerke at scummvm.org
Sat Dec 10 00:23:52 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:
ca51f1681b TSAGE: R2R - Implement scene 2435


Commit: ca51f1681b01cb2746b56ed143807b82a93ac708
    https://github.com/scummvm/scummvm/commit/ca51f1681b01cb2746b56ed143807b82a93ac708
Author: Strangerke (strangerke at scummvm.org)
Date: 2011-12-09T15:23:07-08:00

Commit Message:
TSAGE: R2R - Implement scene 2435

Changed paths:
    engines/tsage/ringworld2/ringworld2_logic.cpp
    engines/tsage/ringworld2/ringworld2_scenes2.cpp
    engines/tsage/ringworld2/ringworld2_scenes2.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 d976c5b..86e8178 100644
--- a/engines/tsage/ringworld2/ringworld2_logic.cpp
+++ b/engines/tsage/ringworld2/ringworld2_logic.cpp
@@ -110,6 +110,8 @@ Scene *Ringworld2Game::createScene(int sceneNumber) {
 		// Maze: Bedroom
 		return new Scene2430();
 	case 2435:
+		// Maze: Throne room
+		return new Scene2435();
 	case 2440:
 	case 2445:
 	case 2450:
diff --git a/engines/tsage/ringworld2/ringworld2_scenes2.cpp b/engines/tsage/ringworld2/ringworld2_scenes2.cpp
index 08deb59..a8decd3 100644
--- a/engines/tsage/ringworld2/ringworld2_scenes2.cpp
+++ b/engines/tsage/ringworld2/ringworld2_scenes2.cpp
@@ -1637,5 +1637,163 @@ void Scene2430::signal() {
 	}
 }
 
+/*--------------------------------------------------------------------------
+ * Scene 2435 - Maze: Throne room
+ *
+ *--------------------------------------------------------------------------*/
+bool Scene2435::Actor1::startAction(CursorType action, Event &event) {
+	return SceneActor::startAction(action, event);
+}
+
+bool Scene2435::Actor2::startAction(CursorType action, Event &event) {
+	Scene2435 *scene = (Scene2435 *)R2_GLOBALS._sceneManager._scene;
+
+	switch (action) {
+	case R2_34:
+		R2_GLOBALS._player.disableControl();
+		R2_GLOBALS._events.setCursor(R2_2);
+		R2_GLOBALS.setFlag(82);
+		scene->_stripManager.start(603, scene);
+		return true;
+	case R2_35:
+		R2_GLOBALS._player.disableControl();
+		R2_GLOBALS._events.setCursor(R2_2);
+		R2_GLOBALS.setFlag(82);
+		scene->_stripManager.start(602, scene);
+		R2_INVENTORY.setObjectScene(R2_35, 2000);
+		return true;
+	case CURSOR_TALK:
+		R2_GLOBALS._player.disableControl();
+		scene->_sceneMode = 20;
+		R2_GLOBALS._events.setCursor(R2_2);
+		if ((R2_GLOBALS._player._characterIndex == 1) || (R2_GLOBALS.getFlag(82))) {
+			scene->_stripManager.start(605, scene);
+			return true;
+		} else if (R2_INVENTORY.getObjectScene(R2_35) == 2) {
+			scene->_stripManager.start(601, scene);
+			return true;
+		} else {
+			R2_GLOBALS.setFlag(82);
+			scene->_stripManager.start(600, scene);
+			return true;
+		}
+	default:
+		return SceneActor::startAction(action, event);
+	}
+}
+
+void Scene2435::Exit1::changeScene() {
+	Scene2435 *scene = (Scene2435 *)R2_GLOBALS._sceneManager._scene;
+
+	_enabled = false;
+	R2_GLOBALS._events.setCursor(R2_NEGATOR_GUN);
+	R2_GLOBALS._player.disableControl();
+	scene->_sceneMode = 11;
+	Common::Point pt(175, 200);
+	NpcMover *mover = new NpcMover();
+	R2_GLOBALS._player.addMover(mover, &pt, scene);
+
+}
+
+void Scene2435::postInit(SceneObjectList *OwnerList) {
+	loadScene(2435);
+	SceneExt::postInit();
+	R2_GLOBALS._sound1.play(201);
+	_stripManager.addSpeaker(&_quinnSpeaker);
+	_stripManager.addSpeaker(&_seekerSpeaker);
+	_stripManager.addSpeaker(&_pharishaSpeaker);
+	_exit1.setDetails(Rect(142, 155, 207, 167), EXITCURSOR_S, 2000);
+	_exit1.setDest(Common::Point(175, 160));
+	_actor2.postInit();
+	_actor2.setup(2005, 3, 1);
+	_actor2.setPosition(Common::Point(219, 106));
+	_actor2.setDetails(2001, 25, 26, -1, 1, NULL);
+	R2_GLOBALS._player.postInit();
+	R2_GLOBALS._player.animate(ANIM_MODE_1, NULL);
+	if (R2_GLOBALS._player._characterIndex == 1) {
+		R2_GLOBALS._player.setVisage(2008);
+		R2_GLOBALS._player._moveDiff = Common::Point(3, 2);
+	} else {
+		R2_GLOBALS._player.setVisage(20);
+		R2_GLOBALS._player._moveDiff = Common::Point(5, 3);
+	}
+	R2_GLOBALS._player.setPosition(Common::Point(715, 200));
+	if (R2_GLOBALS._player._characterScene[1] == R2_GLOBALS._player._characterScene[2]) {
+		_actor1.postInit();
+		if (R2_GLOBALS._player._characterIndex == 1) {
+			_actor1.setup(20, 5, 1);
+			_actor1.setDetails(9002, 0, 4, 3, 1, NULL);
+		} else {
+			_actor1.setup(2008, 5, 1);
+			_actor1.setDetails(9001, 0, 5, 3, 1, NULL);
+		}
+		_actor1.setPosition(Common::Point(107, 145));
+		R2_GLOBALS._walkRegions.enableRegion(2);
+	}
+
+	_item2.setDetails(Rect(52, 44, 96, 82), 2430, 3, -1, 5, 1, NULL);
+	_item3.setDetails(Rect(117, 36, 161, 74), 2430, 3, -1, 5, 1, NULL);
+	_item1.setDetails(Rect(0, 0, 320, 200), 2430, 0, -1, -1, 1, NULL);
+	R2_GLOBALS._player.disableControl();
+	if (R2_GLOBALS._player._oldCharacterScene[R2_GLOBALS._player._characterIndex] == 2000) {
+		_sceneMode = 10;
+		Common::Point pt(175, 150);
+		NpcMover *mover = new NpcMover();
+		R2_GLOBALS._player.addMover(mover, &pt, this);
+	} else if (R2_GLOBALS._player._oldCharacterScene[R2_GLOBALS._player._characterIndex] == 2450) {
+		_sceneMode = 30;
+		Common::Point pt(175, 150);
+		NpcMover *mover = new NpcMover();
+		R2_GLOBALS._player.addMover(mover, &pt, this);
+	} else {
+		R2_GLOBALS._player.setPosition(Common::Point(210, 150));
+		R2_GLOBALS._player.setStrip(3);
+		R2_GLOBALS._player.enableControl();
+	}
+	R2_GLOBALS._player._oldCharacterScene[R2_GLOBALS._player._characterIndex] = 2435;
+	R2_GLOBALS._v56605[1 + R2_GLOBALS._player._characterIndex] = 12;
+}
+
+void Scene2435::remove() {
+	R2_GLOBALS._sound1.fadeOut2(NULL);
+	SceneExt::remove();
+}
+
+void Scene2435::signal() {
+	switch (_sceneMode) {
+	case 11:
+		g_globals->_sceneManager.changeScene(2000);
+		break;
+	case 20:
+		R2_GLOBALS._player.enableControl(R2_6);
+		break;
+	case 30:
+		R2_GLOBALS._player._characterScene[1] = 2435;
+		R2_GLOBALS._player._characterScene[2] = 2435;
+		R2_GLOBALS._player._oldCharacterScene[1] = 2435;
+		R2_GLOBALS._player._oldCharacterScene[2] = 2435;
+		R2_GLOBALS._v56605[1] = 12;
+		R2_GLOBALS._v56605[2] = 12;
+		R2_GLOBALS.setFlag(81);
+		_sceneMode = 2436;
+		R2_GLOBALS._player.setStrip(7);
+		_actor1.postInit();
+		if (R2_GLOBALS._player._characterIndex == 1)
+			_actor1.setVisage(20);
+		else
+			_actor1.setVisage(2008);
+		setAction(&_sequenceManager, this, 2436, &_actor1, NULL);
+		break;
+	case 2436:
+		R2_GLOBALS._walkRegions.enableRegion(2);
+		_sceneMode = 20;
+		R2_GLOBALS._events.setCursor(R2_2);
+		_stripManager.start(709, this);
+	default:
+		R2_GLOBALS._player.enableControl();
+		break;
+	}
+}
+
 } // End of namespace Ringworld2
 } // End of namespace TsAGE
diff --git a/engines/tsage/ringworld2/ringworld2_scenes2.h b/engines/tsage/ringworld2/ringworld2_scenes2.h
index f2bb955..d3db8e1 100644
--- a/engines/tsage/ringworld2/ringworld2_scenes2.h
+++ b/engines/tsage/ringworld2/ringworld2_scenes2.h
@@ -227,6 +227,38 @@ public:
 	virtual void postInit(SceneObjectList *OwnerList = NULL);
 	virtual void signal();
 };
+
+class Scene2435 : public SceneExt {
+	class Actor1 : public SceneActor {
+	public:
+		bool startAction(CursorType action, Event &event);
+	};
+	class Actor2 : public SceneActor {
+	public:
+		bool startAction(CursorType action, Event &event);
+	};
+
+	class Exit1 : public SceneExit {
+	public:
+		virtual void changeScene();
+	};
+public:
+	SpeakerQuinn2435 _quinnSpeaker;
+	SpeakerSeeker2435 _seekerSpeaker;
+	SpeakerPharisha2435 _pharishaSpeaker;
+	NamedHotspot _item1;
+	NamedHotspot _item2;
+	NamedHotspot _item3;
+	Actor1 _actor1;
+	Actor2 _actor2;
+	Exit1 _exit1;
+	SequenceManager _sequenceManager;
+
+	virtual void postInit(SceneObjectList *OwnerList = NULL);
+	virtual void remove();
+	virtual void signal();
+};
+
 } // 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 2875652..4fabc36 100644
--- a/engines/tsage/ringworld2/ringworld2_speakers.cpp
+++ b/engines/tsage/ringworld2/ringworld2_speakers.cpp
@@ -26,6 +26,7 @@
 #include "tsage/graphics.h"
 #include "tsage/staticres.h"
 #include "tsage/ringworld2/ringworld2_scenes0.h"
+#include "tsage/ringworld2/ringworld2_scenes2.h"
 
 namespace TsAGE {
 
@@ -482,6 +483,115 @@ 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() {
+	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;
+		_object2->setStrip(7);
+		_object1.setup(2020, 5, 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() {
+	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->hide();
+		_object1.postInit();
+		_object1.setPosition(_object2->_position);
+	}
+
+	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);
+	}
+}
+
+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);
+	}
+}
+
 } // 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 5793f43..e788fb7 100644
--- a/engines/tsage/ringworld2/ringworld2_speakers.h
+++ b/engines/tsage/ringworld2/ringworld2_speakers.h
@@ -129,6 +129,29 @@ public:
 	virtual Common::String getClassName() { return "SpeakerPharisha2350"; }
 };
 
+class SpeakerQuinn2435 : public VisualSpeaker {
+public:
+	SpeakerQuinn2435();
+
+	virtual Common::String getClassName() { return "SpeakerQuinn2435"; }
+	virtual void proc15();
+};
+
+class SpeakerSeeker2435 : public VisualSpeaker {
+public:
+	SpeakerSeeker2435();
+
+	virtual Common::String getClassName() { return "SpeakerSeeker2435"; }
+	virtual void proc15();
+};
+
+class SpeakerPharisha2435 : public VisualSpeaker {
+public:
+	SpeakerPharisha2435();
+
+	virtual Common::String getClassName() { return "SpeakerPharisha2435"; }
+	virtual void proc15();
+};
 } // End of namespace Ringworld2
 } // End of namespace TsAGE
 






More information about the Scummvm-git-logs mailing list