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

bgk at users.sourceforge.net bgk at users.sourceforge.net
Mon Nov 29 21:50:25 CET 2010


Revision: 54596
          http://scummvm.svn.sourceforge.net/scummvm/?rev=54596&view=rev
Author:   bgk
Date:     2010-11-29 20:50:25 +0000 (Mon, 29 Nov 2010)

Log Message:
-----------
MOHAWK: Name selenitic opcodes, and implement opcode 204

Modified Paths:
--------------
    scummvm/trunk/engines/mohawk/myst_scripts_selenitic.cpp
    scummvm/trunk/engines/mohawk/myst_scripts_selenitic.h

Modified: scummvm/trunk/engines/mohawk/myst_scripts_selenitic.cpp
===================================================================
--- scummvm/trunk/engines/mohawk/myst_scripts_selenitic.cpp	2010-11-29 20:50:11 UTC (rev 54595)
+++ scummvm/trunk/engines/mohawk/myst_scripts_selenitic.cpp	2010-11-29 20:50:25 UTC (rev 54596)
@@ -114,7 +114,10 @@
 		SPECIFIC_OPCODE(109, o_105_109_soundReceiverSource),
 		SPECIFIC_OPCODE(110, opcode_110),
 		SPECIFIC_OPCODE(111, o_111_soundReceiverUpdateSound),
-		SPECIFIC_OPCODE(115, opcode_115),
+		SPECIFIC_OPCODE(112, o_112_soundLockMove),
+		SPECIFIC_OPCODE(113, o_113_soundLockStartMove),
+		SPECIFIC_OPCODE(114, o_114_soundLockEndMove),
+		SPECIFIC_OPCODE(115, o_115_soundLockButton),
 		SPECIFIC_OPCODE(116, NOP),
 		SPECIFIC_OPCODE(117, o_117_soundReceiverEndMove),
 
@@ -123,7 +126,7 @@
 		SPECIFIC_OPCODE(201, opcode_201),
 		SPECIFIC_OPCODE(202, opcode_202),
 		SPECIFIC_OPCODE(203, o_203_soundReceiver_init),
-		SPECIFIC_OPCODE(204, opcode_204),
+		SPECIFIC_OPCODE(204, o_204_soundLock_init),
 		SPECIFIC_OPCODE(205, opcode_205),
 		SPECIFIC_OPCODE(206, opcode_206),
 
@@ -180,6 +183,12 @@
 		return ((*_sound_receiver_position) / 10) % 10;
 	case 17:
 		return (*_sound_receiver_position) % 10;
+    case 20: // Sound lock sliders state
+    case 21:
+    case 22:
+    case 23:
+    case 24:
+    	return 1;
 	case 26:
 		return _sound_receiver_sigma_pressed;
 	default:
@@ -503,7 +512,22 @@
 	sound_receiver_update_sound();
 }
 
-void MystScriptParser_Selenitic::opcode_115(uint16 op, uint16 var, uint16 argc, uint16 *argv) {
+void MystScriptParser_Selenitic::o_112_soundLockMove(uint16 op, uint16 var, uint16 argc, uint16 *argv) {
+	//varUnusedCheck(op, var);
+	//unknown(op, var, argc, argv);
+}
+
+void MystScriptParser_Selenitic::o_113_soundLockStartMove(uint16 op, uint16 var, uint16 argc, uint16 *argv) {
+	varUnusedCheck(op, var);
+	unknown(op, var, argc, argv);
+}
+
+void MystScriptParser_Selenitic::o_114_soundLockEndMove(uint16 op, uint16 var, uint16 argc, uint16 *argv) {
+	varUnusedCheck(op, var);
+	unknown(op, var, argc, argv);
+}
+
+void MystScriptParser_Selenitic::o_115_soundLockButton(uint16 op, uint16 var, uint16 argc, uint16 *argv) {
 	if (argc == 11) {
 		// Used for Selenitic Card 1147 (Musical Door Lock Button)
 		uint16 imageIdClose = argv[0]; // TODO: Sound Id?
@@ -790,16 +814,47 @@
 	_sound_receiver_sigma_pressed = false;
 }
 
-void MystScriptParser_Selenitic::opcode_204(uint16 op, uint16 var, uint16 argc, uint16 *argv) {
-	varUnusedCheck(op, var);
+void MystScriptParser_Selenitic::o_204_soundLock_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) {
+	uint16 *selenitic_vars = _vm->_saveLoad->_v->selenitic_vars;
 
-	// Used for Card 1147 (Sound Code Lock)
-	if (argc == 0) {
+	debugC(kDebugScript, "Opcode %d: Sound lock init", op);
 
-	} else
-		unknown(op, var, argc, argv);
+	for (uint i = 0; i < _vm->_resources.size(); i++) {
+		if (_vm->_resources[i]->type == 10) {
+			switch (_vm->_resources[i]->getType8Var()) {
+			case 20:
+				_sound_lock_slider_1 = _vm->_resources[i];
+				soundLockSliderSetPosition(_sound_lock_slider_1, selenitic_vars[13]);
+				break;
+			case 21:
+				_sound_lock_slider_2 = _vm->_resources[i];
+				soundLockSliderSetPosition(_sound_lock_slider_2, selenitic_vars[14]);
+				break;
+			case 22:
+				_sound_lock_slider_3 = _vm->_resources[i];
+				soundLockSliderSetPosition(_sound_lock_slider_3, selenitic_vars[15]);
+				break;
+			case 23:
+				_sound_lock_slider_4 = _vm->_resources[i];
+				soundLockSliderSetPosition(_sound_lock_slider_4, selenitic_vars[16]);
+				break;
+			case 24:
+				_sound_lock_slider_5 = _vm->_resources[i];
+				soundLockSliderSetPosition(_sound_lock_slider_5, selenitic_vars[17]);
+				break;
+			}
+		} else if (_vm->_resources[i]->type == 8) {
+			if (_vm->_resources[i]->getType8Var() == 28) {
+				_sound_lock_button = _vm->_resources[i];
+			}
+		}
+	}
 }
 
+void MystScriptParser_Selenitic::soundLockSliderSetPosition(MystResource* slider, uint16 value) {
+// TODO: implement
+}
+
 void MystScriptParser_Selenitic::opcode_205(uint16 op, uint16 var, uint16 argc, uint16 *argv) {
 	varUnusedCheck(op, var);
 

Modified: scummvm/trunk/engines/mohawk/myst_scripts_selenitic.h
===================================================================
--- scummvm/trunk/engines/mohawk/myst_scripts_selenitic.h	2010-11-29 20:50:11 UTC (rev 54595)
+++ scummvm/trunk/engines/mohawk/myst_scripts_selenitic.h	2010-11-29 20:50:25 UTC (rev 54596)
@@ -62,14 +62,17 @@
 	DECLARE_OPCODE(o_105_109_soundReceiverSource);
 	DECLARE_OPCODE(opcode_110);
 	DECLARE_OPCODE(o_111_soundReceiverUpdateSound);
-	DECLARE_OPCODE(opcode_115);
+	DECLARE_OPCODE(o_112_soundLockMove);
+	DECLARE_OPCODE(o_113_soundLockStartMove);
+	DECLARE_OPCODE(o_114_soundLockEndMove);
+	DECLARE_OPCODE(o_115_soundLockButton);
 	DECLARE_OPCODE(o_117_soundReceiverEndMove);
 
 	DECLARE_OPCODE(opcode_200);
 	DECLARE_OPCODE(opcode_201);
 	DECLARE_OPCODE(opcode_202);
 	DECLARE_OPCODE(o_203_soundReceiver_init);
-	DECLARE_OPCODE(opcode_204);
+	DECLARE_OPCODE(o_204_soundLock_init);
 	DECLARE_OPCODE(opcode_205);
 	DECLARE_OPCODE(opcode_206);
 
@@ -89,6 +92,13 @@
 	MystResource *_sound_receiver_angle_4; // 152
 	MystResource *_sound_receiver_sigma_button; // 156
 
+	MystResource *_sound_lock_slider_1; // 164
+	MystResource *_sound_lock_slider_2; // 168
+	MystResource *_sound_lock_slider_3; // 172
+	MystResource *_sound_lock_slider_4; // 176
+	MystResource *_sound_lock_slider_5; // 180
+	MystResource *_sound_lock_button; // 184
+
 	void sound_receiver_left_right(uint direction);
 	void sound_receiver_update();
 	void sound_receiver_draw_view();
@@ -98,6 +108,8 @@
 	uint16 sound_receiver_current_sound(uint16 source, uint16 position);
 	void sound_receiver_solution(uint16 source, uint16 &solution, bool &enabled);
 
+	void soundLockSliderSetPosition(MystResource* slider, uint16 value);
+
 	void draw_digit(MystResource *_resource);
 };
 


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