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

dreammaster dreammaster at scummvm.org
Fri Aug 2 04:22:24 CEST 2013


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:
cb7e9774b0 TSAGE: Implementing code for R2R scene 1000


Commit: cb7e9774b0200a7aa58df4508a992287375b1e12
    https://github.com/scummvm/scummvm/commit/cb7e9774b0200a7aa58df4508a992287375b1e12
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2013-08-01T19:21:22-07:00

Commit Message:
TSAGE: Implementing code for R2R scene 1000

Changed paths:
    engines/tsage/ringworld2/ringworld2_logic.cpp
    engines/tsage/ringworld2/ringworld2_logic.h
    engines/tsage/ringworld2/ringworld2_scenes0.h
    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 d9bb504..f872d8e 100644
--- a/engines/tsage/ringworld2/ringworld2_logic.cpp
+++ b/engines/tsage/ringworld2/ringworld2_logic.cpp
@@ -108,7 +108,8 @@ Scene *Ringworld2Game::createScene(int sceneNumber) {
 	/* Scene group #1 */
 	//
 	case 1000:
-		error("Missing scene %d from group 1", sceneNumber);
+		// Cutscene: Ship moving
+		return new Scene1000();
 	case 1010:
 		// Cutscene - trip in space
 		return new Scene1010();
@@ -2456,15 +2457,24 @@ void ScannerDialog::proc12(int visage, int stripFrameNum, int frameNum, int posX
 
 /*--------------------------------------------------------------------------*/
 
-FinePositionedObject::FinePositionedObject(): SceneObject() {
-	_x100 = _y100 = 0;
+DataManager::DataManager(): EventHandler() {
+
 }
 
-void FinePositionedObject::synchronize(Serializer &s) {
+void DataManager::synchronize(Serializer &s) {
 	EventHandler::synchronize(s);
 
-	s.syncAsSint32LE(_x100);
-	s.syncAsSint32LE(_y100);
+}
+
+void DataManager::load(int v) {
+	warning("TODO");
+}
+
+void DataManager::remove() {
+	if (_endHandler)
+		_endHandler->signal();
+
+	_endHandler = NULL;
 }
 
 } // End of namespace Ringworld2
diff --git a/engines/tsage/ringworld2/ringworld2_logic.h b/engines/tsage/ringworld2/ringworld2_logic.h
index 371ec6b..9ea2494 100644
--- a/engines/tsage/ringworld2/ringworld2_logic.h
+++ b/engines/tsage/ringworld2/ringworld2_logic.h
@@ -514,14 +514,23 @@ public:
 	void proc12(int visage, int stripFrameNum, int frameNum, int posX, int posY);
 };
 
-class FinePositionedObject: public SceneObject {
+class DataManager: public EventHandler {
 public:
-	int _x100, _y100;
+	int _field3C;
+	int _field56;
+
+	int _palStart;
+	int _palLength;
+	byte _palData[256 * 3];
+	EventHandler *_endHandler;
 public:
-	FinePositionedObject();
+	DataManager();
 
-	virtual Common::String getClassName() { return "FinePositionedObject"; }
+	virtual Common::String getClassName() { return "DataManager"; }
 	virtual void synchronize(Serializer &s);
+	virtual void remove();
+
+	void load(int v);
 };
 
 } // End of namespace Ringworld2
diff --git a/engines/tsage/ringworld2/ringworld2_scenes0.h b/engines/tsage/ringworld2/ringworld2_scenes0.h
index b7268da..bad946f 100644
--- a/engines/tsage/ringworld2/ringworld2_scenes0.h
+++ b/engines/tsage/ringworld2/ringworld2_scenes0.h
@@ -273,8 +273,11 @@ class Scene205: public SceneExt {
 	};
 
 	/* Objects */
-	class Object: public FinePositionedObject {
-		// TODO: More derived logic
+	class Object: public SceneObject {
+	public:
+		int _x100, _y100;
+	public:
+		// TODO: Check if this derives from DataManager? and flesh out
 	};
 private:
 	void setup();
diff --git a/engines/tsage/ringworld2/ringworld2_scenes1.cpp b/engines/tsage/ringworld2/ringworld2_scenes1.cpp
index ba62a11..ffc4917 100644
--- a/engines/tsage/ringworld2/ringworld2_scenes1.cpp
+++ b/engines/tsage/ringworld2/ringworld2_scenes1.cpp
@@ -30,9 +30,437 @@ namespace TsAGE {
 namespace Ringworld2 {
 
 /*--------------------------------------------------------------------------
+ * Scene 1000 - Cutscene: Ship moving
+ *
+ *--------------------------------------------------------------------------*/
+
+Scene1000::Scene1000(): SceneExt() {
+	R2_GLOBALS._sceneManager._hasPalette = false;
+	R2_GLOBALS._uiElements._active = false;
+	_gameTextSpeaker._displayMode = 9;
+	_fieldD2E = 0;
+}
+
+void Scene1000::postInit(SceneObjectList *OwnerList) {
+	SceneExt::postInit();
+
+	_stripManager.addSpeaker(&_gameTextSpeaker);
+	R2_GLOBALS._player.postInit();
+	R2_GLOBALS._player.hide();
+	R2_GLOBALS._player.disableControl();
+
+	switch (R2_GLOBALS._sceneManager._previousScene) {
+	case 300:
+		_sceneMode = R2_GLOBALS.getFlag(57) ? 40 : 0;
+		break;
+	case 1010:
+		_sceneMode = 30;
+		break;
+	case 1100:
+		_sceneMode = 10;
+		break;
+	case 1530:
+		_sceneMode = 20;
+		break;
+	case 2500:
+		_sceneMode = 100;
+		break;
+	case 2800:
+		_sceneMode = 2800;
+		break;
+	case 3100:
+		if (R2_GLOBALS._player._oldCharacterScene[R2_QUINN] == 1000)
+			_sceneMode = 90;
+		else
+			_sceneMode = 80;
+		break;
+	case 3500:
+		_sceneMode = 50;
+		break;
+	case 3700:
+		_sceneMode = 60;
+		break;
+	default:
+		_sceneMode = 999;
+		break;
+	}
+
+	setAction(&_sequenceManager1, this, 1, &R2_GLOBALS._player, NULL);
+}
+
+void Scene1000::remove() {
+	R2_GLOBALS._scenePalette.loadPalette(0);
+	R2_GLOBALS._scenePalette.setEntry(255, 0xff, 0xff, 0xff);
+	SceneExt::remove();
+}
+
+void Scene1000::signal() {
+	ScenePalette scenePalette1, scenePalette2;
+	uint32 black = 0;
+	
+	switch (R2_GLOBALS._sceneManager._previousScene) {
+	case 0:
+		// TODO: Sort out values
+		R2_GLOBALS._gfxColors.foreground = 191;
+		R2_GLOBALS._gfxColors.background = 144;
+		R2_GLOBALS._fontColors.background = 224;
+		R2_GLOBALS._fontColors.foreground = 119;
+
+		_dataManager._field56 = 2;
+		_dataManager._field3C = 2;
+		_dataManager.load(5);
+		R2_GLOBALS._scenePalette.loadPalette(_dataManager._palData, 0, 256);
+		R2_GLOBALS._sceneManager._hasPalette = false;
+
+		_dataManager.dispatch();
+		_fieldD2E = 1;
+		
+		R2_GLOBALS._scenePalette.fade((const byte *)&black, true, 0);
+		for (int percent = 0; percent < 100; percent += 5)
+			R2_GLOBALS._scenePalette.fade((const byte *)&black, true, percent);
+
+		R2_GLOBALS._sound1.play(67);
+		break;
+
+	case 1:
+		R2_GLOBALS._sound1.fadeOut2(NULL);
+
+		// TODO: Sort out values
+		R2_GLOBALS._gfxColors.foreground = 191;
+		R2_GLOBALS._gfxColors.background = 144;
+		R2_GLOBALS._fontColors.background = 224;
+		R2_GLOBALS._fontColors.foreground = 119;
+
+		R2_GLOBALS._scenePalette.loadPalette(0);
+		loadScene(9999);
+
+		R2_GLOBALS._player.setup(1140, 1, 1);
+		R2_GLOBALS._player.setPosition(Common::Point(160, 100));
+		R2_GLOBALS._player.show();
+
+		_field412 = 0;
+		_stripManager.start(29, this);
+		break;
+
+	case 2:
+		if (R2_GLOBALS._speechSubtitles & SPEECH_TEXT) {
+			setAction(&_sequenceManager1, this, &R2_GLOBALS._player, NULL);
+		} else {
+			if (++_field412 < 3)
+				_sceneMode = 2;
+
+			setAction(&_sequenceManager1, this, &R2_GLOBALS._player, NULL);
+		}
+		break;
+
+	case 3:
+		// TODO: Sort out values
+		R2_GLOBALS._gfxColors.foreground = 191;
+		R2_GLOBALS._gfxColors.background = 144;
+		R2_GLOBALS._fontColors.background = 224;
+		R2_GLOBALS._fontColors.foreground = 119;
+
+		for (int percent = 100; percent >= 0; percent += 5)
+			R2_GLOBALS._scenePalette.fade((const byte *)&black, true, percent);
+
+		_dataManager._field3C = 2;
+		_dataManager._field56 = 2;
+		_dataManager.load(7);
+		R2_GLOBALS._scenePalette.loadPalette(_dataManager._palData, 0, 256);
+		R2_GLOBALS._sceneManager._hasPalette = false;
+
+		_dataManager.dispatch();
+
+		_fieldD2E = 1;
+		R2_GLOBALS._scenePalette.fade((const byte *)&black, 1, 0);
+		for (int percent = 0; percent < 100; percent += 5)
+			R2_GLOBALS._scenePalette.fade((const byte *)&black, true, percent);
+
+		R2_GLOBALS._sound2.play(81);
+		R2_GLOBALS._sound1.play(80);
+		break;
+
+	case 4:
+		// TODO: Sort out values
+		R2_GLOBALS._gfxColors.foreground = 191;
+		R2_GLOBALS._gfxColors.background = 144;
+		R2_GLOBALS._fontColors.background = 224;
+		R2_GLOBALS._fontColors.foreground = 119;
+
+		R2_GLOBALS._sound2.fadeOut2(NULL);
+		R2_GLOBALS._sound1.fadeOut2(NULL);
+		R2_GLOBALS._sceneManager.changeScene(1100);
+		break;
+
+	case 10:
+		_dataManager._field3C = 2;
+		_dataManager._field56 = 2;
+		_dataManager.load(6);
+
+		R2_GLOBALS._scenePalette.loadPalette(_dataManager._palData, 0, 256);
+		R2_GLOBALS._sceneManager._hasPalette = false;
+		_dataManager.dispatch();
+
+		_fieldD2E = 1;
+		R2_GLOBALS._scenePalette.fade((const byte *)&black, 1, 0);
+		for (int percent = 0; percent < 100; percent += 5)
+			R2_GLOBALS._scenePalette.fade((const byte *)&black, true, percent);
+
+		R2_GLOBALS._sound1.play(55);
+		break;
+
+	case 11:
+		R2_GLOBALS._scenePalette.loadPalette(NULL);
+		R2_GLOBALS._sceneManager.changeScene(300);
+		break;
+
+	case 20:
+		_dataManager._field3C = 2;
+		_dataManager._field56 = 2;
+		_dataManager.load(8);
+
+		R2_GLOBALS._scenePalette.loadPalette(_dataManager._palData, 0, 256);
+		R2_GLOBALS._sceneManager._hasPalette = false;
+		_dataManager.dispatch();
+
+		_fieldD2E = 1;
+		R2_GLOBALS._scenePalette.fade((const byte *)&black, 1, 0);
+		for (int percent = 0; percent < 100; percent += 5)
+			R2_GLOBALS._scenePalette.fade((const byte *)&black, true, percent);
+		break;
+
+	case 21:
+		R2_GLOBALS._scenePalette.loadPalette(NULL);
+		R2_GLOBALS._sceneManager.changeScene(1530);
+		break;
+
+	case 30:
+		_dataManager._field3C = 2;
+		_dataManager._field56 = 2;
+		_dataManager.load(17);
+
+		R2_GLOBALS._scenePalette.loadPalette(_dataManager._palData, 0, 256);
+		R2_GLOBALS._sceneManager._hasPalette = false;
+		_dataManager.dispatch();
+
+		_fieldD2E = 1;
+		R2_GLOBALS._scenePalette.fade((const byte *)&black, 1, 0);
+		for (int percent = 0; percent < 100; percent += 5)
+			R2_GLOBALS._scenePalette.fade((const byte *)&black, true, percent);
+
+		R2_GLOBALS._sound2.play(91);
+		break;
+
+	case 31:
+		R2_GLOBALS._sound2.fadeOut2(NULL);
+		R2_GLOBALS._sound1.fadeOut2(NULL);
+		R2_GLOBALS._scenePalette.loadPalette(0);
+		R2_GLOBALS.setFlag(51);
+		R2_GLOBALS._sceneManager.changeScene(300);
+		break;
+
+	case 40:
+		_dataManager._field3C = 2;
+		_dataManager._field56 = 2;
+		_dataManager.load(18);
+
+		R2_GLOBALS._scenePalette.loadPalette(_dataManager._palData, 0, 256);
+		R2_GLOBALS._sceneManager._hasPalette = false;
+		_dataManager.dispatch();
+
+		_fieldD2E = 1;
+		R2_GLOBALS._scenePalette.fade((const byte *)&black, 1, 0);
+		for (int percent = 0; percent < 100; percent += 5)
+			R2_GLOBALS._scenePalette.fade((const byte *)&black, true, percent);
+
+		R2_GLOBALS._sound2.play(90);
+		break;
+
+	case 41:
+		R2_GLOBALS._scenePalette.loadPalette(0);
+		R2_GLOBALS._sceneManager.changeScene(1010);
+		break;
+
+	case 50:
+		R2_GLOBALS._sound2.play(306);
+		for (int percent = 100; percent >= 0; percent += 5)
+			R2_GLOBALS._scenePalette.fade((const byte *)&black, true, percent);
+
+		_dataManager._field3C = 2;
+		_dataManager._field56 = 2;
+		_dataManager.load(13);
+
+		R2_GLOBALS._scenePalette.loadPalette(_dataManager._palData, 0, 256);
+		R2_GLOBALS._sceneManager._hasPalette = false;
+		_dataManager.dispatch();
+
+		_fieldD2E = 1;
+		R2_GLOBALS._scenePalette.fade((const byte *)&black, 1, 0);
+		for (int percent = 0; percent < 100; percent += 5)
+			R2_GLOBALS._scenePalette.fade((const byte *)&black, true, percent);
+		break;
+
+	case 51:
+		R2_GLOBALS._sound2.stop();
+		R2_GLOBALS._sound2.play(307);
+		R2_GLOBALS._sound1.play(308);
+
+		for (int percent = 100; percent >= 0; percent += 5)
+			R2_GLOBALS._scenePalette.fade((const byte *)&black, true, percent);
+
+		_dataManager._field3C = 2;
+		_dataManager._field56 = 2;
+		_dataManager.load(14);
+
+		R2_GLOBALS._scenePalette.loadPalette(_dataManager._palData, 0, 256);
+		R2_GLOBALS._sceneManager._hasPalette = false;
+		_dataManager.dispatch();
+
+		_fieldD2E = 1;
+		R2_GLOBALS._scenePalette.fade((const byte *)&black, 1, 0);
+		for (int percent = 0; percent < 100; percent += 5)
+			R2_GLOBALS._scenePalette.fade((const byte *)&black, true, percent);
+		break;
+
+	case 52:
+		R2_GLOBALS._sound2.fadeOut2(NULL);
+		R2_GLOBALS._sound1.fadeOut2(NULL);
+		R2_GLOBALS._scenePalette.loadPalette(0);
+		R2_GLOBALS._sceneManager.changeScene(3350);
+		break;
+
+	case 60:
+		R2_GLOBALS._sound1.play(333);
+		
+		for (int percent = 100; percent >= 0; percent += 5)
+			R2_GLOBALS._scenePalette.fade((const byte *)&black, true, percent);
+
+		_dataManager._field3C = 2;
+		_dataManager._field56 = 2;
+		_dataManager.load(12);
+
+		R2_GLOBALS._scenePalette.loadPalette(_dataManager._palData, 0, 256);
+		R2_GLOBALS._sceneManager._hasPalette = false;
+		_dataManager.dispatch();
+
+		_fieldD2E = 1;
+		R2_GLOBALS._scenePalette.fade((const byte *)&black, 1, 0);
+		for (int percent = 0; percent < 100; percent += 5)
+			R2_GLOBALS._scenePalette.fade((const byte *)&black, true, percent);
+		break;
+
+	case 61:
+		R2_GLOBALS._sound1.fadeOut2(NULL);
+		R2_GLOBALS._scenePalette.loadPalette(0);
+		R2_GLOBALS._sceneManager.changeScene(160);
+		break;
+
+	case 70:
+		R2_GLOBALS._sound2.play(113);
+		for (int percent = 100; percent >= 0; percent += 5)
+			R2_GLOBALS._scenePalette.fade((const byte *)&black, true, percent);
+
+		_dataManager._field3C = 2;
+		_dataManager._field56 = 2;
+		_dataManager.load(9);
+
+		R2_GLOBALS._scenePalette.loadPalette(_dataManager._palData, 0, 256);
+		R2_GLOBALS._sceneManager._hasPalette = false;
+		_dataManager.dispatch();
+
+		_fieldD2E = 1;
+		R2_GLOBALS._scenePalette.fade((const byte *)&black, 1, 0);
+		for (int percent = 0; percent < 100; percent += 5)
+			R2_GLOBALS._scenePalette.fade((const byte *)&black, true, percent);
+		break;
+
+	case 71:
+	case 81:
+		R2_GLOBALS._sound1.fadeOut2(NULL);
+		R2_GLOBALS._sound2.fadeOut2(NULL);
+		R2_GLOBALS._scenePalette.loadPalette(0);
+		R2_GLOBALS._sceneManager.changeScene(3100);
+		break;
+
+	case 80:
+		_dataManager._field3C = 2;
+		_dataManager._field56 = 2;
+		_dataManager.load(10);
+
+		R2_GLOBALS._scenePalette.loadPalette(_dataManager._palData, 0, 256);
+		R2_GLOBALS._sceneManager._hasPalette = false;
+		_dataManager.dispatch();
+
+		_fieldD2E = 1;
+		R2_GLOBALS._scenePalette.fade((const byte *)&black, 1, 0);
+		for (int percent = 0; percent < 100; percent += 5)
+			R2_GLOBALS._scenePalette.fade((const byte *)&black, true, percent);
+
+		R2_GLOBALS._sound1.play(242);
+		R2_GLOBALS._sound2.play(286);
+		break;
+
+	case 90:
+		_dataManager._field3C = 2;
+		_dataManager._field56 = 2;
+		_dataManager.load(11);
+
+		R2_GLOBALS._scenePalette.loadPalette(_dataManager._palData, 0, 256);
+		R2_GLOBALS._sceneManager._hasPalette = false;
+		_dataManager.dispatch();
+
+		_fieldD2E = 1;
+		R2_GLOBALS._scenePalette.fade((const byte *)&black, 1, 0);
+		for (int percent = 0; percent < 100; percent += 5)
+			R2_GLOBALS._scenePalette.fade((const byte *)&black, true, percent);
+
+		R2_GLOBALS._sound1.play(277);
+		break;
+
+	case 91:
+		R2_GLOBALS._sound1.fadeOut2(NULL);
+		R2_GLOBALS._player._characterIndex = R2_SEEKER;
+		R2_GLOBALS._player._oldCharacterScene[R2_SEEKER] = 3100;
+		R2_GLOBALS._sceneManager.changeScene(2500);
+		break;
+
+	case 100:
+		R2_GLOBALS._sound1.play(304);
+		R2_GLOBALS._sound2.play(82);
+
+		_dataManager._field3C = 2;
+		_dataManager._field56 = 2;
+		_dataManager.load(19);
+
+		R2_GLOBALS._scenePalette.loadPalette(_dataManager._palData, 0, 256);
+		R2_GLOBALS._sceneManager._hasPalette = false;
+		_dataManager.dispatch();
+
+		_fieldD2E = 1;
+		R2_GLOBALS._scenePalette.fade((const byte *)&black, 1, 0);
+		for (int percent = 0; percent < 100; percent += 5)
+			R2_GLOBALS._scenePalette.fade((const byte *)&black, true, percent);
+		break;		
+
+	case 101:
+		R2_GLOBALS._sound1.fadeOut2(NULL);
+		R2_GLOBALS._sound2.fadeOut2(NULL);
+		R2_GLOBALS._scenePalette.loadPalette(0);
+		R2_GLOBALS._sceneManager.changeScene(3500);
+		break;
+	}
+}
+
+void Scene1000::dispatch() {
+
+}
+
+
+/*--------------------------------------------------------------------------
  * Scene 1010 - Cutscene: A pixel lost in space!
  *
  *--------------------------------------------------------------------------*/
+
 void Scene1010::postInit(SceneObjectList *OwnerList) {
 	SceneExt::postInit();
 	loadScene(1010);
diff --git a/engines/tsage/ringworld2/ringworld2_scenes1.h b/engines/tsage/ringworld2/ringworld2_scenes1.h
index f3e9436..4ee0c29 100644
--- a/engines/tsage/ringworld2/ringworld2_scenes1.h
+++ b/engines/tsage/ringworld2/ringworld2_scenes1.h
@@ -44,8 +44,13 @@ public:
 	SequenceManager _sequenceManager1;
 	SequenceManager _sequenceManager2;
 	SpeakerGameText _gameTextSpeaker;
+	DataManager _dataManager;
 
+	int _field412;
+	int _fieldD2E;
 public:
+	Scene1000();
+
 	virtual void postInit(SceneObjectList *OwnerList = NULL);
 	virtual void remove();
 	virtual void signal();






More information about the Scummvm-git-logs mailing list