[Scummvm-cvs-logs] SF.net SVN: scummvm:[54758] scummvm/trunk/engines/mohawk

bgk at users.sourceforge.net bgk at users.sourceforge.net
Sat Dec 4 10:26:45 CET 2010


Revision: 54758
          http://scummvm.svn.sourceforge.net/scummvm/?rev=54758&view=rev
Author:   bgk
Date:     2010-12-04 09:26:44 +0000 (Sat, 04 Dec 2010)

Log Message:
-----------
MOHAWK: Give meaningful names to the game global vars and selenitic vars

Modified Paths:
--------------
    scummvm/trunk/engines/mohawk/myst_saveload.cpp
    scummvm/trunk/engines/mohawk/myst_saveload.h
    scummvm/trunk/engines/mohawk/myst_scripts.cpp
    scummvm/trunk/engines/mohawk/myst_stacks/selenitic.cpp

Modified: scummvm/trunk/engines/mohawk/myst_saveload.cpp
===================================================================
--- scummvm/trunk/engines/mohawk/myst_saveload.cpp	2010-12-04 02:50:27 UTC (rev 54757)
+++ scummvm/trunk/engines/mohawk/myst_saveload.cpp	2010-12-04 09:26:44 UTC (rev 54758)
@@ -66,19 +66,19 @@
 
 	// Now, we'll read in the variable values.
 	// Lots of checking code here so that save files with differing formats are flagged...
-	if ((_v->game_globals[0] = loadFile->readUint16LE()) != 2)
-		warning("Unexpected value at 0x%03X - Found %u Expected %u", loadFile->pos(), _v->game_globals[0], 2);
+	if ((_v->globals.u0 = loadFile->readUint16LE()) != 2)
+		warning("Unexpected value at 0x%03X - Found %u Expected %u", loadFile->pos(), _v->globals.u0, 2);
 
-	_v->game_globals[1] = loadFile->readUint16LE();
-	_v->game_globals[2] = loadFile->readUint16LE();
+	_v->globals.currentAge = loadFile->readUint16LE();
+	_v->globals.heldPage = loadFile->readUint16LE();
 
-	if ((_v->game_globals[3] = loadFile->readUint16LE()) != 1)
-		warning("Unexpected value at 0x%03X - Found %u Expected %u", loadFile->pos(), _v->game_globals[3], 1);
+	if ((_v->globals.u1 = loadFile->readUint16LE()) != 1)
+		warning("Unexpected value at 0x%03X - Found %u Expected %u", loadFile->pos(), _v->globals.u1, 1);
 
-	_v->game_globals[4] = loadFile->readUint16LE();
-	_v->game_globals[5] = loadFile->readUint16LE();
-	_v->game_globals[6] = loadFile->readUint16LE();
-	_v->game_globals[7] = loadFile->readUint16LE();
+	_v->globals.transitions = loadFile->readUint16LE();
+	_v->globals.zipMode = loadFile->readUint16LE();
+	_v->globals.redPagesInBook = loadFile->readUint16LE();
+	_v->globals.bluePagesInBook = loadFile->readUint16LE();
 
 	for (byte i = 0; i < 8; i++) {
 		if (_vm->getFeatures() & GF_ME) {
@@ -234,21 +234,31 @@
 		if ((_v->mech_vars[i] = loadFile->readUint16LE()) > 9)
 			warning("Value exceeds maximum of %u found at 0x%03X - Found %u", 9, loadFile->pos(), _v->mech_vars[i]);
 
-	for (byte i = 0; i < 7; i++) {
-		if (_vm->getFeatures() & GF_ME) {
-			_v->selenitic_vars[i] = loadFile->readUint16LE();
+	if (_vm->getFeatures() & GF_ME) {
+		_v->selenitic.emitterEnabledWater = loadFile->readUint32LE();
+		_v->selenitic.emitterEnabledVolcano = loadFile->readUint32LE();
+		_v->selenitic.emitterEnabledClock = loadFile->readUint32LE();
+		_v->selenitic.emitterEnabledCrystal = loadFile->readUint32LE();
+		_v->selenitic.emitterEnabledWind = loadFile->readUint32LE();
+		_v->selenitic.soundReceiverOpened = loadFile->readUint32LE();
+		_v->selenitic.tunnelLightsSwitchedOn = loadFile->readUint32LE();
+	} else {
+		_v->selenitic.emitterEnabledWater = loadFile->readByte();
+		_v->selenitic.emitterEnabledVolcano = loadFile->readByte();
+		_v->selenitic.emitterEnabledClock = loadFile->readByte();
+		_v->selenitic.emitterEnabledCrystal = loadFile->readByte();
+		_v->selenitic.emitterEnabledWind = loadFile->readByte();
+		_v->selenitic.soundReceiverOpened = loadFile->readByte();
+		_v->selenitic.tunnelLightsSwitchedOn = loadFile->readByte();
+	}
 
-			if (loadFile->readUint16LE() != 0)
-				warning("Non-zero value at 0x%03X", loadFile->pos());
-		} else
-			_v->selenitic_vars[i] = loadFile->readByte();
+	_v->selenitic.soundReceiverCurrentSource = loadFile->readUint16LE();
 
-		if (_v->selenitic_vars[i] > 1)
-			warning("Non-Boolean value found at 0x%03X - Found %u", loadFile->pos(), _v->selenitic_vars[i]);
-	}
+	for(byte i = 0; i < 5; i++)
+		_v->selenitic.soundReceiverPositions[i] = loadFile->readUint16LE();
 
-	for(byte i = 7; i < 18; i++)
-		_v->selenitic_vars[i] = loadFile->readUint16LE();
+	for(byte i = 0; i < 5; i++)
+		_v->selenitic.soundLockSliderPositions[i] = loadFile->readUint16LE();
 
 	for (byte i = 0; i < 3; i++) {
 		if (_vm->getFeatures() & GF_ME) {
@@ -257,7 +267,7 @@
 			_v->stoneship_vars[i] = loadFile->readByte();
 
 		if (_v->stoneship_vars[i] > 1)
-			warning("Non-Boolean value found at 0x%03X - Found %u", loadFile->pos(), _v->selenitic_vars[i]);
+			warning("Non-Boolean value found at 0x%03X - Found %u", loadFile->pos(), _v->stoneship_vars[i]);
 	}
 	for (byte i = 3; i < 14; i++)
 		_v->stoneship_vars[i] = loadFile->readUint16LE();
@@ -338,8 +348,14 @@
 	debug_printMystVariables(_v);
 
 	// Performs no validation of variable values - Assumes they are valid.
-	for (byte i = 0; i < 8; i++)
-		saveFile->writeUint16LE(_v->game_globals[i]);
+	saveFile->writeUint16LE(_v->globals.u0);
+	saveFile->writeUint16LE(_v->globals.currentAge);
+	saveFile->writeUint16LE(_v->globals.heldPage);
+	saveFile->writeUint16LE(_v->globals.u1);
+	saveFile->writeUint16LE(_v->globals.transitions);
+	saveFile->writeUint16LE(_v->globals.zipMode);
+	saveFile->writeUint16LE(_v->globals.redPagesInBook);
+	saveFile->writeUint16LE(_v->globals.bluePagesInBook);
 
 	for (byte i = 0; i < 8; i++) {
 		if (_vm->getFeatures() & GF_ME) {
@@ -372,17 +388,32 @@
 	for (byte i = 0; i < 8; i++)
 		saveFile->writeUint16LE(_v->mech_vars[i]);
 
-	for (byte i = 0; i < 7; i++) {
-		if (_vm->getFeatures() & GF_ME) {
-			saveFile->writeUint16LE(_v->selenitic_vars[i]);
-			saveFile->writeUint16LE(0);
-		} else
-			saveFile->writeByte(_v->selenitic_vars[i]);
+	if (_vm->getFeatures() & GF_ME) {
+		saveFile->writeUint32LE(_v->selenitic.emitterEnabledWater);
+		saveFile->writeUint32LE(_v->selenitic.emitterEnabledVolcano);
+		saveFile->writeUint32LE(_v->selenitic.emitterEnabledClock);
+		saveFile->writeUint32LE(_v->selenitic.emitterEnabledCrystal);
+		saveFile->writeUint32LE(_v->selenitic.emitterEnabledWind);
+		saveFile->writeUint32LE(_v->selenitic.soundReceiverOpened);
+		saveFile->writeUint32LE(_v->selenitic.tunnelLightsSwitchedOn);
+	} else {
+		saveFile->writeByte(_v->selenitic.emitterEnabledWater);
+		saveFile->writeByte(_v->selenitic.emitterEnabledVolcano);
+		saveFile->writeByte(_v->selenitic.emitterEnabledClock);
+		saveFile->writeByte(_v->selenitic.emitterEnabledCrystal);
+		saveFile->writeByte(_v->selenitic.emitterEnabledWind);
+		saveFile->writeByte(_v->selenitic.soundReceiverOpened);
+		saveFile->writeByte(_v->selenitic.tunnelLightsSwitchedOn);
 	}
 
-	for(byte i = 7; i < 18; i++)
-		saveFile->writeUint16LE(_v->selenitic_vars[i]);
+	saveFile->writeUint16LE(_v->selenitic.soundReceiverCurrentSource);
 
+	for(byte i = 0; i < 5; i++)
+		saveFile->writeUint16LE(_v->selenitic.soundReceiverPositions[i]);
+
+	for(byte i = 0; i < 5; i++)
+		saveFile->writeUint16LE(_v->selenitic.soundLockSliderPositions[i]);
+
 	for (byte i = 0; i < 3; i++) {
 		if (_vm->getFeatures() & GF_ME) {
 			saveFile->writeUint16LE(_v->stoneship_vars[i]);
@@ -441,16 +472,38 @@
 	uint8 i;
 
 	// Most of the variables are zero at game start.
-	for (i = 0; i < ARRAYSIZE(_tv->game_globals); i++)
-		_tv->game_globals[i] = 0;
+	_v->globals.u0 = 2;
+	// Current Age / Stack - Start in Myst
+	_v->globals.currentAge = 2;
+	_v->globals.heldPage = 0;
+	_v->globals.u1 = 1;
+	_v->globals.transitions = 0;
+	_v->globals.zipMode = 0;
+	_v->globals.redPagesInBook = 0;
+	_v->globals.bluePagesInBook = 0;
+
 	for (i = 0; i < ARRAYSIZE(_tv->myst_vars); i++)
 		_tv->myst_vars[i] = 0;
 	for (i = 0; i < ARRAYSIZE(_tv->channelwood_vars); i++)
 		_tv->channelwood_vars[i] = 0;
 	for (i = 0; i < ARRAYSIZE(_tv->mech_vars); i++)
 		_tv->mech_vars[i] = 0;
-	for (i = 0; i < ARRAYSIZE(_tv->selenitic_vars); i++)
-		_tv->selenitic_vars[i] = 0;
+
+	_tv->selenitic.emitterEnabledWater = 0;
+	_tv->selenitic.emitterEnabledVolcano = 0;
+	_tv->selenitic.emitterEnabledClock = 0;
+	_tv->selenitic.emitterEnabledCrystal = 0;
+	_tv->selenitic.emitterEnabledWind = 0;
+	_tv->selenitic.soundReceiverOpened = 0;
+	_tv->selenitic.tunnelLightsSwitchedOn = 0;
+	_tv->selenitic.soundReceiverCurrentSource = 0;
+
+	for(i = 0; i < 5; i++)
+		_tv->selenitic.soundReceiverPositions[i] = 0;
+
+	for(i = 0; i < 5; i++)
+		_tv->selenitic.soundLockSliderPositions[i] = 0;
+
 	for (i = 0; i < ARRAYSIZE(_tv->stoneship_vars); i++)
 		_tv->stoneship_vars[i] = 0;
 	for (i = 0; i < ARRAYSIZE(_tv->dunny_vars); i++)
@@ -469,13 +522,6 @@
 	// TODO: Not all these may be needed as some of the unknown opcodes
 	//        called by init scripts may set these up as per the others..
 
-	// Unknown - Fixed at 2
-	_tv->game_globals[0] = 2;
-	// Current Age / Stack - Start in Myst
-	_tv->game_globals[1] = 2;
-	// Unknown - Fixed at 1
-	_tv->game_globals[3] = 1;
-
 	// Library Bookcase Door - Default to Up
 	_tv->myst_vars[18] = 1;
 	// Dock Imager Numeric Selection - Default to 67
@@ -491,16 +537,16 @@
 	_tv->stoneship_vars[5] = 1;
 }
 
-static const char *game_globals_names[] = {
-	"Unknown - Fixed at 2",
-	"Current Age / Stack",
-	"Page Being Held",
-	"Unknown - Fixed at 1",
-	"Slide Transitions",
-	"Zip Mode",
-	"Red Pages in Book",
-	"Blue Pages in Book"
-};
+//static const char *game_globals_names[] = {
+//	"Unknown - Fixed at 2",
+//	"Current Age / Stack",
+//	"Page Being Held",
+//	"Unknown - Fixed at 1",
+//	"Slide Transitions",
+//	"Zip Mode",
+//	"Red Pages in Book",
+//	"Blue Pages in Book"
+//};
 
 static const char *myst_vars_names[] = {
 	"Marker Switch Near Cabin",
@@ -576,26 +622,26 @@
 	"Code Lock Shape #4 (Right)"
 };
 
-static const char *selenitic_vars_names[] = {
-	"Sound Pickup At Water Pool",
-	"Sound Pickup At Volcanic Crack",
-	"Sound Pickup At Clock",
-	"Sound Pickup At Crystal Rocks",
-	"Sound Pickup At Windy Tunnel",
-	"Sound Receiver Doors",
-	"Windy Tunnel Lights",
-	"Sound Receiver Current Input",
-	"Sound Receiver Input #0 (Water Pool) Angle Value",
-	"Sound Receiver Input #1 (Volcanic Crack) Angle Value",
-	"Sound Receiver Input #2 (Clock) Angle Value",
-	"Sound Receiver Input #3 (Crystal Rocks) Angle Value",
-	"Sound Receiver Input #4 (Windy Tunnel) Angle Value",
-	"Sound Lock Slider #1 (Left) Position",
-	"Sound Lock Slider #2 Position",
-	"Sound Lock Slider #3 Position",
-	"Sound Lock Slider #4 Position",
-	"Sound Lock Slider #5 (Right) Position"
-};
+//static const char *selenitic_vars_names[] = {
+//	"Sound Pickup At Water Pool",
+//	"Sound Pickup At Volcanic Crack",
+//	"Sound Pickup At Clock",
+//	"Sound Pickup At Crystal Rocks",
+//	"Sound Pickup At Windy Tunnel",
+//	"Sound Receiver Doors",
+//	"Windy Tunnel Lights",
+//	"Sound Receiver Current Input",
+//	"Sound Receiver Input #0 (Water Pool) Angle Value",
+//	"Sound Receiver Input #1 (Volcanic Crack) Angle Value",
+//	"Sound Receiver Input #2 (Clock) Angle Value",
+//	"Sound Receiver Input #3 (Crystal Rocks) Angle Value",
+//	"Sound Receiver Input #4 (Windy Tunnel) Angle Value",
+//	"Sound Lock Slider #1 (Left) Position",
+//	"Sound Lock Slider #2 Position",
+//	"Sound Lock Slider #3 Position",
+//	"Sound Lock Slider #4 Position",
+//	"Sound Lock Slider #5 (Right) Position"
+//};
 
 static const char *stoneship_vars_names[] = {
 	"Light State",
@@ -623,9 +669,9 @@
 
 	debugC(kDebugSaveLoad, "Printing Myst Variable State:");
 
-	debugC(kDebugSaveLoad, "  Game Globals:");
-	for (i = 0; i < ARRAYSIZE(_tv->game_globals); i++)
-		debugC(kDebugSaveLoad, "    %s: %u", game_globals_names[i], _tv->game_globals[i]);
+//	debugC(kDebugSaveLoad, "  Game Globals:");
+//	for (i = 0; i < ARRAYSIZE(_tv->game_globals); i++)
+//		debugC(kDebugSaveLoad, "    %s: %u", game_globals_names[i], _tv->game_globals[i]);
 
 	debugC(kDebugSaveLoad, "  Myst Variables:");
 	for (i = 0; i < ARRAYSIZE(_tv->myst_vars); i++)
@@ -639,9 +685,9 @@
 	for (i = 0; i < ARRAYSIZE(_tv->mech_vars); i++)
 		debugC(kDebugSaveLoad, "    %s: %u", mech_vars_names[i], _tv->mech_vars[i]);
 
-	debugC(kDebugSaveLoad, "  Selenitic Variables:");
-	for (i = 0; i < ARRAYSIZE(_tv->selenitic_vars); i++)
-		debugC(kDebugSaveLoad, "    %s: %u", selenitic_vars_names[i], _tv->selenitic_vars[i]);
+//	debugC(kDebugSaveLoad, "  Selenitic Variables:");
+//	for (i = 0; i < ARRAYSIZE(_tv->selenitic_vars); i++)
+//		debugC(kDebugSaveLoad, "    %s: %u", selenitic_vars_names[i], _tv->selenitic_vars[i]);
 
 	debugC(kDebugSaveLoad, "  Stoneship Variables:");
 	for (i = 0; i < ARRAYSIZE(_tv->stoneship_vars); i++)

Modified: scummvm/trunk/engines/mohawk/myst_saveload.h
===================================================================
--- scummvm/trunk/engines/mohawk/myst_saveload.h	2010-12-04 02:50:27 UTC (rev 54757)
+++ scummvm/trunk/engines/mohawk/myst_saveload.h	2010-12-04 09:26:44 UTC (rev 54758)
@@ -50,7 +50,16 @@
 	   6 = Red Pages in Book
 	   7 = Blue Pages in Book
 	*/
-	uint16 game_globals[8];
+	struct Globals {
+		uint16 u0;
+		uint16 currentAge;
+		uint16 heldPage;
+		uint16 u1;
+		uint16 transitions;
+		uint16 zipMode;
+		uint16 redPagesInBook;
+		uint16 bluePagesInBook;
+	} globals;
 
 	/* 50 Myst Specific Variables :
 	   0  = Marker Switch Near Cabin
@@ -149,7 +158,18 @@
 	   16 = Sound Lock Slider #4 Position
 	   17 = Sound Lock Slider #5 (Right) Position
 	*/
-	uint16 selenitic_vars[18];
+	struct Selenitic {
+		uint32 emitterEnabledWater;
+		uint32 emitterEnabledVolcano;
+		uint32 emitterEnabledClock;
+		uint32 emitterEnabledCrystal;
+		uint32 emitterEnabledWind;
+		uint32 soundReceiverOpened;
+		uint32 tunnelLightsSwitchedOn;
+		uint16 soundReceiverCurrentSource;
+		uint16 soundReceiverPositions[5];
+		uint16 soundLockSliderPositions[5];
+	} selenitic;
 
 	/* 14 Stoneship Specific Variables :
 	    0 = Light State

Modified: scummvm/trunk/engines/mohawk/myst_scripts.cpp
===================================================================
--- scummvm/trunk/engines/mohawk/myst_scripts.cpp	2010-12-04 02:50:27 UTC (rev 54757)
+++ scummvm/trunk/engines/mohawk/myst_scripts.cpp	2010-12-04 09:26:44 UTC (rev 54758)
@@ -327,22 +327,22 @@
 }
 
 void MystScriptParser::o_takePage(uint16 op, uint16 var, uint16 argc, uint16 *argv) {
-	uint16 *game_globals = _vm->_saveLoad->_v->game_globals;
+	MystVariables::Globals &globals = _vm->_saveLoad->_v->globals;
 
 	uint16 cursorId = argv[0];
-	uint16 oldPage = game_globals[2];
+	uint16 oldPage = globals.heldPage;
 
 	debugC(kDebugScript, "Opcode %d: takePage Var %d CursorId %d", op, var, cursorId);
 
 	// Take / drop page
 	toggleVar(var);
 
-	if (oldPage != game_globals[2]) {
+	if (oldPage != globals.heldPage) {
 		_vm->_cursor->hideCursor();
 		_vm->redrawArea(var);
 
 		// Set new cursor
-		if (game_globals[2])
+		if (globals.heldPage)
 			_vm->setMainCursor(cursorId);
 		else
 			_vm->setMainCursor(kDefaultMystCursor);

Modified: scummvm/trunk/engines/mohawk/myst_stacks/selenitic.cpp
===================================================================
--- scummvm/trunk/engines/mohawk/myst_stacks/selenitic.cpp	2010-12-04 02:50:27 UTC (rev 54757)
+++ scummvm/trunk/engines/mohawk/myst_stacks/selenitic.cpp	2010-12-04 09:26:44 UTC (rev 54758)
@@ -91,24 +91,24 @@
 }
 
 uint16 MystScriptParser_Selenitic::getVar(uint16 var) {
-	uint16 *game_globals = _vm->_saveLoad->_v->game_globals;
-	uint16 *selenitic_vars = _vm->_saveLoad->_v->selenitic_vars;
+	MystVariables::Globals &globals = _vm->_saveLoad->_v->globals;
+	MystVariables::Selenitic &selenitic = _vm->_saveLoad->_v->selenitic;
 
 	switch(var) {
 	case 0: // Sound receiver emitters enabled
-		return selenitic_vars[4];
+		return selenitic.emitterEnabledWind;
 	case 1:
-		return selenitic_vars[1];
+		return selenitic.emitterEnabledVolcano;
 	case 2:
-		return selenitic_vars[2];
+		return selenitic.emitterEnabledClock;
 	case 3:
-		return selenitic_vars[0];
+		return selenitic.emitterEnabledWater;
 	case 4:
-		return selenitic_vars[3];
+		return selenitic.emitterEnabledCrystal;
 	case 5: // Sound receiver opened
-		return selenitic_vars[5];
+		return selenitic.soundReceiverOpened;
 	case 6: // Tunnel lights
-		return selenitic_vars[6];
+		return selenitic.tunnelLightsSwitchedOn;
 	case 7:// Maze runner display
 		if (_mazeRunnerPosition == 288) {
 			return 0;
@@ -122,15 +122,15 @@
 	case 8: // Viewer
 		return 0;
 	case 9: // Sound receiver selected source
-		return selenitic_vars[7] == 0;
+		return selenitic.soundReceiverCurrentSource == 0;
 	case 10:
-		return selenitic_vars[7] == 1;
+		return selenitic.soundReceiverCurrentSource == 1;
 	case 11:
-		return selenitic_vars[7] == 2;
+		return selenitic.soundReceiverCurrentSource == 2;
 	case 12:
-		return selenitic_vars[7] == 3;
+		return selenitic.soundReceiverCurrentSource == 3;
 	case 13:
-		return selenitic_vars[7] == 4;
+		return selenitic.soundReceiverCurrentSource == 4;
 	case 14: // Sound receiver position
 		return (*_soundReceiverPosition) / 1000;
 	case 15:
@@ -161,55 +161,55 @@
 	case 33: // Maze runner at entry
 		return _mazeRunnerPosition != 288;
 	case 102: // Red page
-		return !(game_globals[6] & 2) && (game_globals[2] != 8);
+		return !(globals.redPagesInBook & 2) && (globals.heldPage != 8);
 	case 103: // Blue page
-		return !(game_globals[7] & 2) && (game_globals[2] != 2);
+		return !(globals.bluePagesInBook & 2) && (globals.heldPage != 2);
 	default:
 		return MystScriptParser::getVar(var);
 	}
 }
 
 void MystScriptParser_Selenitic::toggleVar(uint16 var) {
-	uint16 *game_globals = _vm->_saveLoad->_v->game_globals;
-	uint16 *selenitic_vars = _vm->_saveLoad->_v->selenitic_vars;
+	MystVariables::Globals &globals = _vm->_saveLoad->_v->globals;
+	MystVariables::Selenitic &selenitic = _vm->_saveLoad->_v->selenitic;
 
 	switch(var) {
 	case 0: // Sound receiver emitters enabled
-		selenitic_vars[4] = (selenitic_vars[4] + 1) % 2;
+		selenitic.emitterEnabledWind = (selenitic.emitterEnabledWind + 1) % 2;
 		break;
 	case 1:
-		selenitic_vars[1] = (selenitic_vars[1] + 1) % 2;
+		selenitic.emitterEnabledVolcano = (selenitic.emitterEnabledVolcano + 1) % 2;
 		break;
 	case 2:
-		selenitic_vars[2] = (selenitic_vars[2] + 1) % 2;
+		selenitic.emitterEnabledClock = (selenitic.emitterEnabledClock + 1) % 2;
 		break;
 	case 3:
-		selenitic_vars[0] = (selenitic_vars[0] + 1) % 2;
+		selenitic.emitterEnabledWater = (selenitic.emitterEnabledWater + 1) % 2;
 		break;
 	case 4:
-		selenitic_vars[3] = (selenitic_vars[3] + 1) % 2;
+		selenitic.emitterEnabledCrystal = (selenitic.emitterEnabledCrystal + 1) % 2;
 		break;
 	case 5: // Sound receiver opened
-		selenitic_vars[5] = (selenitic_vars[5] + 1) % 2;
+		selenitic.soundReceiverOpened = (selenitic.soundReceiverOpened + 1) % 2;
 		break;
 	case 6: // Tunnel lights
-		selenitic_vars[6] = (selenitic_vars[6] + 1) % 2;
+		selenitic.tunnelLightsSwitchedOn = (selenitic.tunnelLightsSwitchedOn + 1) % 2;
 		break;
 	case 102: // Red page
-		if (!(game_globals[6] & 2)) {
-			if (game_globals[2] == 8)
-				game_globals[2] = 0;
+		if (!(globals.redPagesInBook & 2)) {
+			if (globals.heldPage == 8)
+				globals.heldPage = 0;
 			else {
-				game_globals[2] = 8;
+				globals.heldPage = 8;
 			}
 		}
 		break;
 	case 103: // Blue page
-		if (!(game_globals[7] & 2)) {
-			if (game_globals[2] == 2)
-				game_globals[2] = 0;
+		if (!(globals.bluePagesInBook & 2)) {
+			if (globals.heldPage == 2)
+				globals.heldPage = 0;
 			else {
-				game_globals[2] = 2;
+				globals.heldPage = 2;
 			}
 		}
 		break;
@@ -220,66 +220,66 @@
 }
 
 bool MystScriptParser_Selenitic::setVarValue(uint16 var, uint16 value) {
-	uint16 *selenitic_vars = _vm->_saveLoad->_v->selenitic_vars;
+	MystVariables::Selenitic &selenitic = _vm->_saveLoad->_v->selenitic;
 	bool refresh = false;
 
 	switch (var) {
 	case 0: // Sound receiver emitters enabled
-		if (selenitic_vars[4] != value) {
-			selenitic_vars[4] = value;
+		if (selenitic.emitterEnabledWind != value) {
+			selenitic.emitterEnabledWind = value;
 			refresh = true;
 		}
 		break;
 	case 1:
-		if (selenitic_vars[1] != value) {
-			selenitic_vars[1] = value;
+		if (selenitic.emitterEnabledVolcano != value) {
+			selenitic.emitterEnabledVolcano = value;
 			refresh = true;
 		}
 		break;
 	case 2:
-		if (selenitic_vars[2] != value) {
-			selenitic_vars[2] = value;
+		if (selenitic.emitterEnabledClock != value) {
+			selenitic.emitterEnabledClock = value;
 			refresh = true;
 		}
 		break;
 	case 3:
-		if (selenitic_vars[0] != value) {
-			selenitic_vars[0] = value;
+		if (selenitic.emitterEnabledWater != value) {
+			selenitic.emitterEnabledWater = value;
 			refresh = true;
 		}
 		break;
 	case 4:
-		if (selenitic_vars[3] != value) {
-			selenitic_vars[3] = value;
+		if (selenitic.emitterEnabledCrystal != value) {
+			selenitic.emitterEnabledCrystal = value;
 			refresh = true;
 		}
 		break;
 	case 5: // Sound receiver opened
-		if (selenitic_vars[5] != value) {
-			selenitic_vars[5] = value;
+		if (selenitic.soundReceiverOpened != value) {
+			selenitic.soundReceiverOpened = value;
 			refresh = true;
 		}
 		break;
 	case 6: // Tunnel lights
-		if (selenitic_vars[6] != value) {
-			selenitic_vars[6] = value;
+		if (selenitic.tunnelLightsSwitchedOn != value) {
+			selenitic.tunnelLightsSwitchedOn = value;
 			refresh = true;
 		}
 		break;
 	case 20: // Sound lock sliders
-		selenitic_vars[13] = value;
+		selenitic.soundLockSliderPositions[0] = value;
 		break;
 	case 21:
-		selenitic_vars[14] = value;
+		selenitic.soundLockSliderPositions[1] = value;
 		break;
 	case 22:
-		selenitic_vars[15] = value;
+		selenitic.soundLockSliderPositions[2] = value;
 		break;
 	case 23:
-		selenitic_vars[16] = value;
+		selenitic.soundLockSliderPositions[3] = value;
 		break;
 	case 24:
-		selenitic_vars[17] = value;
+		selenitic.soundLockSliderPositions[4] = value;
 		break;
 	case 30:
 		_mazeRunnerDoorOpened = value;
@@ -372,7 +372,6 @@
 		_mazeRunnerCompass->drawConditionalDataToScreen(_mazeRunnerDirection);
 		_vm->_system->delayMillis(150);
 	}
-
 }
 
 void MystScriptParser_Selenitic::mazeRunnerPlayVideo(uint16 video, uint16 pos) {
@@ -593,7 +592,7 @@
  * Sound receiver sigma button
  */
 void MystScriptParser_Selenitic::o_soundReceiverSigma(uint16 op, uint16 var, uint16 argc, uint16 *argv) {
-	uint16 *selenitic_vars = _vm->_saveLoad->_v->selenitic_vars;
+	MystVariables::Selenitic &selenitic = _vm->_saveLoad->_v->selenitic;
 
 	debugC(kDebugScript, "Opcode %d: Sound receiver sigma button", op);
 
@@ -623,7 +622,7 @@
 			break;
 		}
 
-		_soundReceiverPosition = &selenitic_vars[8 + source];
+		_soundReceiverPosition = &selenitic.soundReceiverPositions[source];
 		_vm->_sound->stopSound();
 		_vm->_sound->playSound(2287);
 		soundReceiverDrawView();
@@ -636,7 +635,7 @@
 	_soundReceiverSigmaPressed = true;
 	_vm->_sound->stopSound();
 
-	_soundReceiverSources[selenitic_vars[7]]->drawConditionalDataToScreen(1);
+	_soundReceiverSources[selenitic.soundReceiverCurrentSource]->drawConditionalDataToScreen(1);
 
 	soundReceiverDrawView();
 
@@ -715,7 +714,7 @@
  * Sound receiver source selection buttons
  */
 void MystScriptParser_Selenitic::o_soundReceiverSource(uint16 op, uint16 var, uint16 argc, uint16 *argv) {
-	uint16 *selenitic_vars = _vm->_saveLoad->_v->selenitic_vars;
+	MystVariables::Selenitic &selenitic = _vm->_saveLoad->_v->selenitic;
 
 	debugC(kDebugScript, "Opcode %d: Sound receiver source", op);
 
@@ -728,12 +727,12 @@
 
 	uint pressedButton = var - 9;
 
-	if (selenitic_vars[7] != pressedButton) {
-		selenitic_vars[7] = pressedButton;
+	if (selenitic.soundReceiverCurrentSource != pressedButton) {
+		selenitic.soundReceiverCurrentSource = pressedButton;
 
 		_soundReceiverCurrentSource->drawConditionalDataToScreen(0);
 
-		_soundReceiverPosition = &selenitic_vars[8 + pressedButton];
+		_soundReceiverPosition = &selenitic.soundReceiverPositions[pressedButton];
 		_soundReceiverCurrentSource = _soundReceiverSources[pressedButton];
 
 		_vm->_sound->stopSound();
@@ -841,25 +840,25 @@
 void MystScriptParser_Selenitic::o_soundLockEndMove(uint16 op, uint16 var, uint16 argc, uint16 *argv) {
 	debugC(kDebugScript, "Opcode %d: Sound lock end move", op);
 
-	uint16 *selenitic_vars = _vm->_saveLoad->_v->selenitic_vars;
+	MystVariables::Selenitic &selenitic = _vm->_saveLoad->_v->selenitic;
 	MystResourceType10 *slider = soundLockSliderFromVar(var);
 	uint16 *value = 0;
 
 	switch (var) {
 	case 20: // Sound lock sliders
-		value = &selenitic_vars[13];
+		value = &selenitic.soundLockSliderPositions[0];
 		break;
 	case 21:
-		value = &selenitic_vars[14];
+		value = &selenitic.soundLockSliderPositions[1];
 		break;
 	case 22:
-		value = &selenitic_vars[15];
+		value = &selenitic.soundLockSliderPositions[2];
 		break;
 	case 23:
-		value = &selenitic_vars[16];
+		value = &selenitic.soundLockSliderPositions[3];
 		break;
 	case 24:
-		value = &selenitic_vars[17];
+		value = &selenitic.soundLockSliderPositions[4];
 		break;
 	}
 
@@ -900,7 +899,7 @@
 void MystScriptParser_Selenitic::o_soundLockButton(uint16 op, uint16 var, uint16 argc, uint16 *argv) {
 	debugC(kDebugScript, "Opcode %d: Sound lock button", op);
 
-	uint16 *selenitic_vars = _vm->_saveLoad->_v->selenitic_vars;
+	MystVariables::Selenitic &selenitic = _vm->_saveLoad->_v->selenitic;
 	bool solved = true;
 
 	_vm->_sound->pauseBackground();
@@ -908,11 +907,11 @@
 	_soundLockButton->drawConditionalDataToScreen(1);
 	_vm->_cursor->hideCursor();
 
-	soundLockCheckSolution(_soundLockSlider1, selenitic_vars[13], 5, solved);
-	soundLockCheckSolution(_soundLockSlider2, selenitic_vars[14], 9, solved);
-	soundLockCheckSolution(_soundLockSlider3, selenitic_vars[15], 0, solved);
-	soundLockCheckSolution(_soundLockSlider4, selenitic_vars[16], 6, solved);
-	soundLockCheckSolution(_soundLockSlider5, selenitic_vars[17], 7, solved);
+	soundLockCheckSolution(_soundLockSlider1, selenitic.soundLockSliderPositions[0], 5, solved);
+	soundLockCheckSolution(_soundLockSlider2, selenitic.soundLockSliderPositions[1], 9, solved);
+	soundLockCheckSolution(_soundLockSlider3, selenitic.soundLockSliderPositions[2], 0, solved);
+	soundLockCheckSolution(_soundLockSlider4, selenitic.soundLockSliderPositions[3], 6, solved);
+	soundLockCheckSolution(_soundLockSlider5, selenitic.soundLockSliderPositions[4], 7, solved);
 
 	_vm->_sound->playSound(1148);
 	_vm->_sound->resumeBackground();
@@ -1007,9 +1006,9 @@
 }
 
 void MystScriptParser_Selenitic::soundReceiverUpdateSound() {
-	uint16 *selenitic_vars = _vm->_saveLoad->_v->selenitic_vars;
+	MystVariables::Selenitic &selenitic = _vm->_saveLoad->_v->selenitic;
 
-	uint16 soundId = soundReceiverCurrentSound(selenitic_vars[7], *_soundReceiverPosition);
+	uint16 soundId = soundReceiverCurrentSound(selenitic.soundReceiverCurrentSource, *_soundReceiverPosition);
 	_vm->_sound->replaceSound(soundId);
 }
 
@@ -1065,34 +1064,34 @@
 }
 
 void MystScriptParser_Selenitic::soundReceiverSolution(uint16 source, uint16 &solution, bool &enabled) {
-	uint16 *selenitic_vars = _vm->_saveLoad->_v->selenitic_vars;
+	MystVariables::Selenitic &selenitic = _vm->_saveLoad->_v->selenitic;
 
 	switch (source) {
 	case 0:
-		enabled = selenitic_vars[0];
+		enabled = selenitic.emitterEnabledWater;
 		solution = 1534;
 		break;
 	case 1:
-		enabled = selenitic_vars[1];
+		enabled = selenitic.emitterEnabledVolcano;
 		solution = 1303;
 		break;
 	case 2:
-		enabled = selenitic_vars[2];
+		enabled = selenitic.emitterEnabledClock;
 		solution = 556;
 		break;
 	case 3:
-		enabled = selenitic_vars[3];
+		enabled = selenitic.emitterEnabledCrystal;
 		solution = 150;
 		break;
 	case 4:
-		enabled = selenitic_vars[4];
+		enabled = selenitic.emitterEnabledWind;
 		solution = 2122;
 		break;
 	}
 }
 
 void MystScriptParser_Selenitic::o_soundReceiver_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) {
-	uint16 *selenitic_vars = _vm->_saveLoad->_v->selenitic_vars;
+	MystVariables::Selenitic &selenitic = _vm->_saveLoad->_v->selenitic;
 
 	debugC(kDebugScript, "Opcode %d: Sound receiver init", op);
 
@@ -1113,15 +1112,15 @@
 	_soundReceiverAngle3 = static_cast<MystResourceType8 *>(_vm->_resources[12]);
 	_soundReceiverAngle4 = static_cast<MystResourceType8 *>(_vm->_resources[13]);
 
-	uint16 currentSource = selenitic_vars[7];
-	_soundReceiverPosition = &selenitic_vars[8 + currentSource];
+	uint16 currentSource = selenitic.soundReceiverCurrentSource;
+	_soundReceiverPosition = &selenitic.soundReceiverPositions[currentSource];
 	_soundReceiverCurrentSource = _soundReceiverSources[currentSource];
 
 	_soundReceiverSigmaPressed = false;
 }
 
 void MystScriptParser_Selenitic::o_soundLock_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) {
-	uint16 *selenitic_vars = _vm->_saveLoad->_v->selenitic_vars;
+	MystVariables::Selenitic &selenitic = _vm->_saveLoad->_v->selenitic;
 
 	debugC(kDebugScript, "Opcode %d: Sound lock init", op);
 
@@ -1130,23 +1129,23 @@
 			switch (_vm->_resources[i]->getType8Var()) {
 			case 20:
 				_soundLockSlider1 = static_cast<MystResourceType10 *>(_vm->_resources[i]);
-				_soundLockSlider1->setStep(selenitic_vars[13]);
+				_soundLockSlider1->setStep(selenitic.soundLockSliderPositions[0]);
 				break;
 			case 21:
 				_soundLockSlider2 = static_cast<MystResourceType10 *>(_vm->_resources[i]);
-				_soundLockSlider2->setStep(selenitic_vars[14]);
+				_soundLockSlider2->setStep(selenitic.soundLockSliderPositions[1]);
 				break;
 			case 22:
 				_soundLockSlider3 = static_cast<MystResourceType10 *>(_vm->_resources[i]);
-				_soundLockSlider3->setStep(selenitic_vars[15]);
+				_soundLockSlider3->setStep(selenitic.soundLockSliderPositions[2]);
 				break;
 			case 23:
 				_soundLockSlider4 = static_cast<MystResourceType10 *>(_vm->_resources[i]);
-				_soundLockSlider4->setStep(selenitic_vars[16]);
+				_soundLockSlider4->setStep(selenitic.soundLockSliderPositions[3]);
 				break;
 			case 24:
 				_soundLockSlider5 = static_cast<MystResourceType10 *>(_vm->_resources[i]);
-				_soundLockSlider5->setStep(selenitic_vars[17]);
+				_soundLockSlider5->setStep(selenitic.soundLockSliderPositions[4]);
 				break;
 			}
 		} else if (_vm->_resources[i]->type == kMystConditionalImage) {


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list