[Scummvm-cvs-logs] scummvm master -> 19e970e9e0fc85ea927dd604cf99832180fcb3a3

dreammaster dreammaster at scummvm.org
Sun Aug 25 02:46:20 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:
19e970e9e0 TSAGE: Further R2R scene 1550 renaming, and fixing tracking junk state


Commit: 19e970e9e0fc85ea927dd604cf99832180fcb3a3
    https://github.com/scummvm/scummvm/commit/19e970e9e0fc85ea927dd604cf99832180fcb3a3
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2013-08-24T17:45:18-07:00

Commit Message:
TSAGE: Further R2R scene 1550 renaming, and fixing tracking junk state

Changed paths:
    engines/tsage/globals.cpp
    engines/tsage/globals.h
    engines/tsage/ringworld2/ringworld2_scenes1.cpp
    engines/tsage/ringworld2/ringworld2_scenes1.h
    engines/tsage/staticres.cpp
    engines/tsage/staticres.h



diff --git a/engines/tsage/globals.cpp b/engines/tsage/globals.cpp
index e898558..e3aaeb4 100644
--- a/engines/tsage/globals.cpp
+++ b/engines/tsage/globals.cpp
@@ -26,6 +26,7 @@
 #include "tsage/ringworld/ringworld_demo.h"
 #include "tsage/ringworld/ringworld_logic.h"
 #include "tsage/ringworld2/ringworld2_logic.h"
+#include "tsage/staticres.h"
 
 namespace TsAGE {
 
@@ -493,6 +494,10 @@ void Ringworld2Globals::reset() {
 	_stripManager_lookupList[10] = 1;
 	_stripManager_lookupList[11] = 1;
 
+	// Reset junk/component data in scene 1550
+	Common::copy(&scene1550JunkLocationsDefault[0], &scene1550JunkLocationsDefault[508],
+		&_scene1550JunkLocations[0]);
+
 	// Reset fields stored in the player class
 	_player._characterIndex = R2_QUINN;
 	_player._characterScene[1] = 100;
@@ -568,6 +573,9 @@ void Ringworld2Globals::synchronize(Serializer &s) {
 
 	s.syncAsSint16LE(_insetUp);
 	s.syncAsByte(_frameEdgeColor);
+
+	for (int i = 0; i < 508; i += 4)
+		s.syncAsByte(_scene1550JunkLocations[i + 2]);
 }
 
 } // end of namespace Ringworld2
diff --git a/engines/tsage/globals.h b/engines/tsage/globals.h
index 0c4f84e..7dac8aa 100644
--- a/engines/tsage/globals.h
+++ b/engines/tsage/globals.h
@@ -307,6 +307,7 @@ public:
 	Common::Point _s1550PlayerArea[3]; // only used for Quinn and Seeker
 	byte _scannerFrequencies[4];
 	byte _stripManager_lookupList[12];
+	byte _scene1550JunkLocations[508];
 	ScannerDialog *_scannerDialog;
 
 	Ringworld2Globals();
diff --git a/engines/tsage/ringworld2/ringworld2_scenes1.cpp b/engines/tsage/ringworld2/ringworld2_scenes1.cpp
index 9e03bc1..c49f5f0 100644
--- a/engines/tsage/ringworld2/ringworld2_scenes1.cpp
+++ b/engines/tsage/ringworld2/ringworld2_scenes1.cpp
@@ -7015,7 +7015,7 @@ void Scene1500::signal() {
 		}
 		break;
 	case 24:
-		R2_GLOBALS._sceneManager.changeScene(300);
+		R2_GLOBALS._sceneManager.changeScene(1550);
 		break;
 	default:
 		break;
@@ -7181,14 +7181,14 @@ void Scene1530::dispatch() {
  *--------------------------------------------------------------------------*/
 
 Scene1550::Junk::Junk() {
-	_fieldA4 = _fieldA6 = 0;
+	_fieldA4 = _junkNumber = 0;
 }
 
 void Scene1550::Junk::synchronize(Serializer &s) {
 	SceneActor::synchronize(s);
 
 	s.syncAsSint16LE(_fieldA4);
-	s.syncAsSint16LE(_fieldA6);
+	s.syncAsSint16LE(_junkNumber);
 }
 
 bool Scene1550::Junk::startAction(CursorType action, Event &event) {
@@ -7944,36 +7944,41 @@ void Scene1550::signal() {
 		}
 		R2_GLOBALS._player.animate(ANIM_MODE_5, this);
 		break;
-	case 42:
+
+	case 42: {
 		_sceneMode = 43;
-		warning("TODO: unknown use of arrUnkObj15501[0]._fieldA6");
-		switch (_junk[0]._frame - 1) {
-		case 0:
+		int junkRegionIndex = R2_GLOBALS._scene1550JunkLocations[_junk[0]._junkNumber + 3];
+		R2_GLOBALS._walkRegions.disableRegion(scene1550JunkRegions[junkRegionIndex]);
+
+		switch (_junk[0]._frame) {
+		case 1:
 			R2_INVENTORY.setObjectScene(R2_JOYSTICK, R2_GLOBALS._player._characterIndex);
 			break;
-		case 1:
+		case 2:
 			R2_INVENTORY.setObjectScene(R2_FUEL_CELL, R2_GLOBALS._player._characterIndex);
 			break;
-		case 2:
+		case 3:
 			R2_INVENTORY.setObjectScene(R2_GUIDANCE_MODULE, R2_GLOBALS._player._characterIndex);
 			break;
-		case 3:
+		case 4:
 			R2_INVENTORY.setObjectScene(R2_RADAR_MECHANISM, R2_GLOBALS._player._characterIndex);
 			break;
-		case 4:
+		case 5:
 			R2_INVENTORY.setObjectScene(R2_BATTERY, R2_GLOBALS._player._characterIndex);
 			break;
-		case 5:
+		case 6:
 			R2_INVENTORY.setObjectScene(R2_DIAGNOSTICS_DISPLAY, R2_GLOBALS._player._characterIndex);
 			break;
 		default:
 			break;
 		}
+
 		_junk[0].remove();
 		R2_GLOBALS._player.animate(ANIM_MODE_6, this);
 		break;
+	}
 	case 43:
-		warning("TODO: unknown use of arrUnkObj15501[0]._fieldA6");
+		R2_GLOBALS._scene1550JunkLocations[_junk[0]._junkNumber + 2] = 0;
 		if (R2_GLOBALS._player._characterIndex == R2_QUINN)
 			R2_GLOBALS._player.setVisage(1500);
 		else {
@@ -8584,9 +8589,9 @@ void Scene1550::enterArea() {
 	tmpRect = R2_GLOBALS._v5589E;
 
 	_actor14.remove();
-	_actor17.remove();
+	_westWall.remove();
 	_northWall.remove();
-	_actor19.remove();
+	_southWall.remove();
 	_actor16.remove();
 	_eastWall.remove();
 
@@ -8870,7 +8875,7 @@ void Scene1550::enterArea() {
 		R2_GLOBALS._walkRegions.load(1561);
 		_field419 = 1561;
 		_actor14.subA4D14(2, 1);
-		_actor17.subA4D14(2, 2);
+		_westWall.subA4D14(2, 2);
 		_northWall.subA4D14(1, 3);
 		_actor16.subA4D14(2, 5);
 		break;
@@ -8890,31 +8895,31 @@ void Scene1550::enterArea() {
 	case 5:
 		R2_GLOBALS._walkRegions.load(1564);
 		_field419 = 1564;
-		_actor19.subA4D14(2, 4);
+		_southWall.subA4D14(2, 4);
 		break;
 	case 6:
 		R2_GLOBALS._walkRegions.load(1565);
 		_field419 = 1565;
 		_actor14.subA4D14(1, 1);
-		_actor17.subA4D14(1, 2);
+		_westWall.subA4D14(1, 2);
 		_northWall.subA4D14(3, 3);
 		break;
 	case 7:
 		R2_GLOBALS._walkRegions.load(1566);
 		_field419 = 1566;
 		_actor14.subA4D14(1, 1);
-		_actor17.subA4D14(1, 2);
+		_westWall.subA4D14(1, 2);
 		_northWall.subA4D14(2, 4);
 		break;
 	case 8:
 		R2_GLOBALS._walkRegions.load(1567);
 		_field419 = 1567;
-		_actor17.subA4D14(5, 2);
+		_westWall.subA4D14(5, 2);
 		break;
 	case 9:
 		R2_GLOBALS._walkRegions.load(1568);
 		_field419 = 1568;
-		_actor17.subA4D14(4, 2);
+		_westWall.subA4D14(4, 2);
 		break;
 	case 10:
 		R2_GLOBALS._walkRegions.load(1569);
@@ -8925,7 +8930,7 @@ void Scene1550::enterArea() {
 		R2_GLOBALS._walkRegions.load(1570);
 		_field419 = 1570;
 		_actor14.subA4D14(1, 1);
-		_actor17.subA4D14(1, 2);
+		_westWall.subA4D14(1, 2);
 		break;
 	case 12:
 		R2_GLOBALS._walkRegions.load(1571);
@@ -8937,32 +8942,33 @@ void Scene1550::enterArea() {
 		R2_GLOBALS._walkRegions.load(1572);
 		_field419 = 1572;
 		_actor14.subA4D14(1, 1);
-		_actor17.subA4D14(1, 2);
-		_actor19.subA4D14(1, 4);
+		_westWall.subA4D14(1, 2);
+		_southWall.subA4D14(1, 4);
 		break;
 	case 14:
 		R2_GLOBALS._walkRegions.load(1573);
 		_field419 = 1573;
-		_actor19.subA4D14(1, 4);
+		_southWall.subA4D14(1, 4);
 		_actor16.subA4D14(1, 5);
 		_eastWall.subA4D14(1, 6);
 		break;
 	case 15:
+		// South wall
 		R2_GLOBALS._walkRegions.load(1574);
 		_field419 = 1574;
-		_actor19.subA4D14(1, 4);
+		_southWall.subA4D14(1, 4);
 		break;
 	case 16:
 		R2_GLOBALS._walkRegions.load(1570);
 		_field419 = 1570;
 		_actor14.subA4D14(2, 1);
-		_actor17.subA4D14(2, 2);
+		_westWall.subA4D14(2, 2);
 		break;
 	case 17:
 		R2_GLOBALS._walkRegions.load(1570);
 		_field419 = 1570;
 		_actor14.subA4D14(2, 1);
-		_actor17.subA4D14(3, 2);
+		_westWall.subA4D14(3, 2);
 		break;
 	case 18:
 		R2_GLOBALS._walkRegions.load(1571);
@@ -8982,24 +8988,27 @@ void Scene1550::enterArea() {
 
 	int di = 0;
 	int tmpIdx = 0;
-	// Original game was checking "i < 129" but it was clearly a bug as it's out of bounds
 	for (int i = 0; i < 129 * 4; i += 4) {
-		if ((R2_GLOBALS._s1550PlayerArea[R2_GLOBALS._player._characterIndex].x == k562CC[i]) && (R2_GLOBALS._s1550PlayerArea[R2_GLOBALS._player._characterIndex].y == k562CC[i + 1]) && (k562CC[i + 2] != 0)) {
-			tmpIdx = k562CC[i + 3];
+		if ((R2_GLOBALS._s1550PlayerArea[R2_GLOBALS._player._characterIndex].x == R2_GLOBALS._scene1550JunkLocations[i]) && 
+				(R2_GLOBALS._s1550PlayerArea[R2_GLOBALS._player._characterIndex].y == R2_GLOBALS._scene1550JunkLocations[i + 1]) && 
+				(R2_GLOBALS._scene1550JunkLocations[i + 2] != 0)) {
+			tmpIdx = R2_GLOBALS._scene1550JunkLocations[i + 3];
 			_junk[di].postInit();
 			_junk[di]._effect = 6;
 			_junk[di]._shade = 0;
 			_junk[di]._fieldA4 = tmpIdx;
-			_junk[di]._fieldA6 = i;
+			_junk[di]._junkNumber = i;
 			_junk[di].setDetails(1550, 62, -1, 63, 2, (SceneItem *) NULL);
-			if (k562CC[i + 2] == 41) {
+			if (R2_GLOBALS._scene1550JunkLocations[i + 2] == 41) {
 				_junk[di].changeZoom(-1);
 				_junk[di].setPosition(Common::Point(150, 70));
 				_junk[di].setup(1562, 1, 1);
+
 				R2_GLOBALS._walkRegions.enableRegion(k5A78C);
 				R2_GLOBALS._walkRegions.enableRegion(k5A78D);
 				R2_GLOBALS._walkRegions.enableRegion(k5A790);
 				R2_GLOBALS._walkRegions.enableRegion(k5A791);
+
 				if (R2_INVENTORY.getObjectScene(R2_JOYSTICK) == 1550) {
 					_actor9.postInit();
 					_actor9.setup(1562, 3, 1);
@@ -9008,16 +9017,16 @@ void Scene1550::enterArea() {
 					_actor9.setDetails(1550, 41, -1, 42, 2, (SceneItem *) NULL);
 				}
 			} else {
-				if (k562CC[i + 2] > 40) {
+				if (R2_GLOBALS._scene1550JunkLocations[i + 2] > 40) {
 					_junk[di].changeZoom(100);
-					_junk[di].setup(1561, 1, k562CC[i + 2] - 40);
+					_junk[di].setup(1561, 1, R2_GLOBALS._scene1550JunkLocations[i + 2] - 40);
 				} else {
 					_junk[di].changeZoom(-1);
-					_junk[di].setup(1552, ((k562CC[i + 2] - 1) / 5) + 1, ((k562CC[i + 2] - 1) % 5) + 1);
+					_junk[di].setup(1552, ((R2_GLOBALS._scene1550JunkLocations[i + 2] - 1) / 5) + 1, ((R2_GLOBALS._scene1550JunkLocations[i + 2] - 1) % 5) + 1);
 				}
 				_junk[di].setPosition(Common::Point(k5A72E[tmpIdx], k5A73F[tmpIdx]));
-				if (k5A78A[tmpIdx] != 0)
-					R2_GLOBALS._walkRegions.enableRegion(k5A78A[tmpIdx]);
+				if (scene1550JunkRegions[tmpIdx] != 0)
+					R2_GLOBALS._walkRegions.enableRegion(scene1550JunkRegions[tmpIdx]);
 				di++;
 			}
 		}
@@ -9076,7 +9085,7 @@ void Scene1550::enterArea() {
 
 				_actor4.setPosition(Common::Point(172, 48));
 				_actor4.fixPriority(169);
-				R2_GLOBALS._walkRegions.enableRegion(k5A78A[15]);
+				R2_GLOBALS._walkRegions.enableRegion(scene1550JunkRegions[15]);
 				break;
 			case 2:
 				_wreckage.postInit();
diff --git a/engines/tsage/ringworld2/ringworld2_scenes1.h b/engines/tsage/ringworld2/ringworld2_scenes1.h
index 807b48c..3b0d2c7 100644
--- a/engines/tsage/ringworld2/ringworld2_scenes1.h
+++ b/engines/tsage/ringworld2/ringworld2_scenes1.h
@@ -430,7 +430,7 @@ class Scene1550 : public SceneExt {
 	class Junk : public SceneActor {
 	public:
 		int _fieldA4;
-		int _fieldA6;
+		int _junkNumber;
 
 		Junk();
 		void synchronize(Serializer &s);
@@ -548,11 +548,11 @@ public:
 	Actor13 _actor13;
 	Junk _junk[8];
 	Wall _actor14;
-	Wall _northWall;
+	Wall _northWall;	// Is also reused for landing strip
 	Wall _actor16;
-	Wall _actor17;
+	Wall _westWall;		// Is also reused for left hand space
 	Wall _eastWall;
-	Wall _actor19;
+	Wall _southWall;
 	UnkObj15502 _arrUnkObj15502[8];
 	UnkArea1550 _unkArea1;
 	SequenceManager _sequenceManager1;
diff --git a/engines/tsage/staticres.cpp b/engines/tsage/staticres.cpp
index dda6fac..db38862 100644
--- a/engines/tsage/staticres.cpp
+++ b/engines/tsage/staticres.cpp
@@ -244,7 +244,7 @@ char const *const USE_INTERCEPTOR = "Do you want to use your interceptor card?";
 char const *const USE_DOUBLE_AGENT = "Do you want to use your double agent?";
 char const *const NEED_INSTRUCTIONS = "Do you want instructions?";
 char const *const WRONG_ANSWER_MSG = "Wrong respond value sent.";
-const byte k562CC[] = {
+const byte scene1550JunkLocationsDefault[] = {
 	20, 7,  41, 6,
 	3,  6,  42, 11,
 	10, 15, 43, 6,
@@ -409,7 +409,7 @@ const byte k5A76D[] = {
 	3, 3,  3, 7,  3, 7, 3,  3, 3, 3,
 	3, 3,  3, 3,  3, 3, 3,  3, 3
 };
-const byte k5A78A[] = {0,  8,  15,  16,  12,  7,  18,  17,  13,  6,  19,  20,  14,  5,   11,  10,  9};
+const byte scene1550JunkRegions[] = {0,  8,  15,  16,  12,  7,  18,  17,  13,  6,  19,  20,  14,  5,   11,  10,  9};
 const byte k5A79B[] = {
 	23, 3,  1,
 	23, 4,  1,
diff --git a/engines/tsage/staticres.h b/engines/tsage/staticres.h
index 0ccd03b..8c21147 100644
--- a/engines/tsage/staticres.h
+++ b/engines/tsage/staticres.h
@@ -199,13 +199,13 @@ extern char const *const NEED_INSTRUCTIONS;
 extern char const *const WRONG_ANSWER_MSG;
 
 // Scene 1550 arrays of constants
-extern const byte k562CC[];
+extern const byte scene1550JunkLocationsDefault[];
 extern const byte scene1550AreaMap[];
 extern const byte k5A72E[];
 extern const byte k5A73F[];
 extern const byte k5A750[];
 extern const byte k5A76D[];
-extern const byte k5A78A[];
+extern const byte scene1550JunkRegions[];
 extern const byte k5A79B[];
 extern const byte k5A7F6[];
 






More information about the Scummvm-git-logs mailing list