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

Strangerke Strangerke at scummvm.org
Sun Jan 8 20:42:28 CET 2012


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:
a4a2878a37 TSAGE: R2R - Implement scene 1500


Commit: a4a2878a3716dfbb3b04e6d10d68a99c55a4dd85
    https://github.com/scummvm/scummvm/commit/a4a2878a3716dfbb3b04e6d10d68a99c55a4dd85
Author: Strangerke (strangerke at scummvm.org)
Date: 2012-01-08T11:41:41-08:00

Commit Message:
TSAGE: R2R - Implement scene 1500

Changed paths:
    engines/tsage/ringworld2/ringworld2_logic.cpp
    engines/tsage/ringworld2/ringworld2_scenes1.cpp
    engines/tsage/ringworld2/ringworld2_scenes1.h



diff --git a/engines/tsage/ringworld2/ringworld2_logic.cpp b/engines/tsage/ringworld2/ringworld2_logic.cpp
index fa7895f..ee49c23 100644
--- a/engines/tsage/ringworld2/ringworld2_logic.cpp
+++ b/engines/tsage/ringworld2/ringworld2_logic.cpp
@@ -36,6 +36,8 @@ namespace TsAGE {
 namespace Ringworld2 {
 
 Scene *Ringworld2Game::createScene(int sceneNumber) {
+	warning("Switching to scene %d", sceneNumber);
+
 	switch (sceneNumber) {
 	/* Scene group #0 */
 	case 50: 
@@ -103,7 +105,9 @@ Scene *Ringworld2Game::createScene(int sceneNumber) {
 		return new Scene1100();
 	case 1200:
 	case 1330:
+		error("Missing scene %d from group 1", sceneNumber);
 	case 1500:
+		return new Scene1500();
 	case 1525:
 	case 1530:
 	case 1550:
diff --git a/engines/tsage/ringworld2/ringworld2_scenes1.cpp b/engines/tsage/ringworld2/ringworld2_scenes1.cpp
index e773c52..1742201 100644
--- a/engines/tsage/ringworld2/ringworld2_scenes1.cpp
+++ b/engines/tsage/ringworld2/ringworld2_scenes1.cpp
@@ -856,5 +856,164 @@ void Scene1100::saveCharacter(int characterIndex) {
 		R2_GLOBALS._sound1.fadeOut2(NULL);
 	SceneExt::saveCharacter(characterIndex);
 }
+
+/*--------------------------------------------------------------------------
+ * Scene 1500 -
+ *
+ *--------------------------------------------------------------------------*/
+void Scene1500::postInit(SceneObjectList *OwnerList) {
+	loadScene(1500);
+	R2_GLOBALS._v58CE2 = 0;
+	R2_GLOBALS._v5589E.top = 0;
+	R2_GLOBALS._v5589E.bottom = 200;
+	setZoomPercents(170, 13, 240, 100);
+	SceneExt::postInit();
+	scalePalette(65, 65, 65);
+
+	R2_GLOBALS._player.postInit();
+	R2_GLOBALS._player.hide();
+	R2_GLOBALS._player.disableControl();
+
+	_actor2.postInit();
+	_actor2.setup(1401, 1, 1);
+	_actor2._effect = 5;
+	_actor2.fixPriority(10);
+	_actor2._field9C = _field312;
+
+	_actor1.postInit();
+	_actor1.setup(1400, 1, 1);
+	_actor1._moveDiff = Common::Point(1, 1);
+	_actor1._linkedActor = &_actor2;
+
+	if (R2_GLOBALS._sceneManager._previousScene != 1010) {
+		_actor4.postInit();
+		_actor4.setup(1401, 2, 1);
+		_actor4._effect = 5;
+		_actor4.fixPriority(10);
+		_actor4._field9C = _field312;
+
+		_actor3.postInit();
+		_actor3._moveRate = 30;
+		_actor3._moveDiff = Common::Point(1, 1);
+		_actor3._linkedActor = &_actor4;
+	}
+
+	if (R2_GLOBALS._sceneManager._previousScene == 300) {
+		_actor1.setPosition(Common::Point(189, 139), 5);
+
+		_actor3.setup(1400, 1, 2);
+		_actor3.setPosition(Common::Point(148, 108), 0);
+
+		_sceneMode = 20;
+		R2_GLOBALS._sound1.play(110);
+	} else if (R2_GLOBALS._sceneManager._previousScene == 1550) {
+		_actor1.setPosition(Common::Point(189, 139), 5);
+		
+		_actor3.setup(1400, 2, 1);
+		_actor3.changeZoom(-1);
+		_actor3.setPosition(Common::Point(298, 258), 5);
+
+		_sceneMode = 10;
+		R2_GLOBALS._sound1.play(106);
+	} else {
+		_actor1.setPosition(Common::Point(289, 239), -30);
+		_sceneMode = 0;
+		R2_GLOBALS._sound1.play(102);
+	}
+	signal();
+}
+
+void Scene1500::remove() {
+	R2_GLOBALS._v5589E.top = 3;
+	R2_GLOBALS._v5589E.bottom = 168;
+	R2_GLOBALS._v58CE2 = 1;
+
+	SceneExt::remove();
+}
+
+void Scene1500::signal() {
+	switch(_sceneMode++) {
+	case 0:
+		R2_GLOBALS.setFlag(25);
+		setAction(&_sequenceManager, this, 1, &R2_GLOBALS._player, NULL);
+	// No break on purpose
+	case 1:
+		if (_actor1._yDiff < 50) {
+			_actor1.setPosition(Common::Point(289, 239), _actor1._yDiff + 1);
+			_sceneMode = 1;
+		}
+		setAction(&_sequenceManager, this, 1, &R2_GLOBALS._player, NULL);
+		break;
+	case 2: {
+		Common::Point pt(189, 139);
+		NpcMover *mover = new NpcMover();
+		_actor1.addMover(mover, &pt, this);
+		}
+		break;
+	case 3:
+		if (_actor1._yDiff > 5) {
+			_actor1.setPosition(Common::Point(189, 139), _actor1._yDiff - 1);
+			_sceneMode = 3;
+		}
+		setAction(&_sequenceManager, this, 1, &R2_GLOBALS._player, NULL);
+		break;
+	case 13:
+		R2_GLOBALS._player._characterIndex = R2_MIRANDA;
+	// No break on purpose
+	case 4:
+		R2_GLOBALS._sceneManager.changeScene(300);
+		break;
+	case 10:
+	// No break on purpose
+	case 20:
+		setAction(&_sequenceManager, this, 1, &R2_GLOBALS._player, NULL);
+		break;
+	case 11: {
+		Common::Point pt(148, 108);
+		NpcMover *mover = new NpcMover();
+		_actor3.addMover(mover, &pt, this);
+		}
+		break;
+	case 12:
+		setAction(&_sequenceManager, this, 2, &R2_GLOBALS._player, NULL);
+		break;
+	case 21: {
+		Common::Point pt(-2, -42);
+		NpcMover *mover = new NpcMover();
+		_actor3.addMover(mover, &pt, NULL);
+		signal();
+		}
+		break;
+	case 22:
+		if (_actor1._yDiff < 50) {
+			_actor1.setPosition(Common::Point(189, 139), _actor1._yDiff + 1);
+			_sceneMode = 22;
+		}
+		setAction(&_sequenceManager, this, 1, &R2_GLOBALS._player, NULL);
+		break;
+	case 23: {
+		Common::Point pt(-13, -61);
+		NpcMover *mover = new NpcMover();
+		_actor1.addMover(mover, &pt, this);
+		}
+		break;
+	case 24:
+		R2_GLOBALS._sceneManager.changeScene(300);
+		break;
+	default:
+		break;
+	}
+}
+
+void Scene1500::dispatch() {
+	if (_sceneMode > 10) {
+		float yDiff = sqrt((float) (_actor3._position.x * _actor3._position.x) + (_actor3._position.y * _actor3._position.y));
+		if (yDiff > 6)
+			_actor3.setPosition(_actor3._position, yDiff);
+	}
+
+	Scene::dispatch();
+}
+
 } // End of namespace Ringworld2
 } // End of namespace TsAGE
diff --git a/engines/tsage/ringworld2/ringworld2_scenes1.h b/engines/tsage/ringworld2/ringworld2_scenes1.h
index a21869b..a88451e 100644
--- a/engines/tsage/ringworld2/ringworld2_scenes1.h
+++ b/engines/tsage/ringworld2/ringworld2_scenes1.h
@@ -117,6 +117,19 @@ public:
 	virtual void saveCharacter(int characterIndex);
 };
 
+class Scene1500 : public SceneExt {
+public:
+	SceneActor _actor1;
+	SceneActor _actor2;
+	SceneActor _actor3;
+	SceneActor _actor4;
+	SequenceManager _sequenceManager;
+
+	virtual void postInit(SceneObjectList *OwnerList = NULL);
+	virtual void remove();
+	virtual void signal();
+	virtual void dispatch();
+};
 } // End of namespace Ringworld2
 } // End of namespace TsAGE
 






More information about the Scummvm-git-logs mailing list