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

bgk at users.sourceforge.net bgk at users.sourceforge.net
Sat Jan 22 13:15:42 CET 2011


Revision: 55420
          http://scummvm.svn.sourceforge.net/scummvm/?rev=55420&view=rev
Author:   bgk
Date:     2011-01-22 12:15:42 +0000 (Sat, 22 Jan 2011)

Log Message:
-----------
MOHAWK: Implement Channelwood opcodes 106 and 109: Stair door switch

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

Modified: scummvm/trunk/engines/mohawk/myst_stacks/channelwood.cpp
===================================================================
--- scummvm/trunk/engines/mohawk/myst_stacks/channelwood.cpp	2011-01-22 12:12:07 UTC (rev 55419)
+++ scummvm/trunk/engines/mohawk/myst_stacks/channelwood.cpp	2011-01-22 12:15:42 UTC (rev 55420)
@@ -53,8 +53,10 @@
 	OPCODE(102, opcode_102);
 	OPCODE(104, o_waterTankValveOpen);
 	OPCODE(105, o_leverStartMove);
+	OPCODE(106, o_leverEndMove);
 	OPCODE(107, o_leverMoveFail);
 	OPCODE(108, o_leverMove);
+	OPCODE(109, o_stairsDoorToggle);
 	OPCODE(110, o_valveHandleMove1);
 	OPCODE(111, o_valveHandleMoveStart1);
 	OPCODE(112, o_valveHandleMoveStop);
@@ -69,7 +71,7 @@
 	OPCODE(123, o_executeMouseUp);
 	OPCODE(124, o_leverEndMoveWithSound);
 	OPCODE(127, o_elevatorMovies);
-	OPCODE(128, o_leverEndMove);
+	OPCODE(128, o_leverEndMoveResumeBackground);
 	OPCODE(129, o_soundReplace);
 
 	// "Init" Opcodes
@@ -152,9 +154,8 @@
 		return ((_state.waterValveStates & 0xe2) == 0x82) ? 1 : 0;
 	case 29: // Sound - Left Third Water Valve Flowing To Left (To Pipe In Water)
 		return ((_state.waterValveStates & 0xe2) == 0x80) ? 1 : 0;
-//	case 30: // Temple Door State
-//		return 0;
-//		return 1;
+	case 30: // Door State
+		return _doorOpened;
 	case 32: // Sound - Water Flowing in Pipe to Book Room Elevator
 		return ((_state.waterValveStates & 0xf8) == 0xb0 && _state.pipeState) ? 1 : 0;
 //	case 102: // Sirrus's Desk Drawer / Red Page State
@@ -177,6 +178,9 @@
 	case 6: // Pipe Bridge Extended
 		_state.pipeState ^= 1;
 		break;
+	case 16: // Channelwood Lower Walkway to Upper Walkway Spiral Stair Upper Door State
+		_state.stairsUpperDoorState ^= 1;
+		break;
 	default:
 		MystScriptParser::toggleVar(var);
 		break;
@@ -187,6 +191,12 @@
 	bool refresh = false;
 
 	switch (var) {
+	case 2: // Lower Walkway to Upper Walkway Elevator Raised
+		if (_state.elevatorState != value) {
+			_state.elevatorState = value;
+			refresh = true;
+		}
+		break;
 	case 9:
 		refresh = pipeChangeValve(value, 0x40);
 		break;
@@ -207,6 +217,9 @@
 		break;
 //	case 18: // Sirrus's Room Bed Drawer Open
 //	temp ^= 1;
+	case 30: // Door opened
+		_doorOpened = value;
+		break;
 	default:
 		refresh = MystScriptParser::setVarValue(var, value);
 		break;
@@ -383,6 +396,11 @@
 	_vm->checkCursorHints();
 }
 
+void MystScriptParser_Channelwood::o_leverEndMoveResumeBackground(uint16 op, uint16 var, uint16 argc, uint16 *argv) {
+	_vm->_sound->resumeBackgroundMyst();
+	o_leverEndMove(op, var, argc, argv);
+}
+
 void MystScriptParser_Channelwood::o_leverEndMoveWithSound(uint16 op, uint16 var, uint16 argc, uint16 *argv) {
 	o_leverEndMove(op, var, argc, argv);
 
@@ -392,6 +410,19 @@
 		_vm->_sound->replaceSoundMyst(soundId);
 }
 
+void MystScriptParser_Channelwood::o_stairsDoorToggle(uint16 op, uint16 var, uint16 argc, uint16 *argv) {
+	debugC(kDebugScript, "Opcode %d: Play stairs door video", op);
+
+	MystResourceType6 *movie = static_cast<MystResourceType6 *>(_invokingResource);
+
+	if (_state.stairsUpperDoorState) {
+		// TODO: Play backwards
+		movie->playMovie();
+	} else {
+		movie->playMovie();
+	}
+}
+
 void MystScriptParser_Channelwood::o_valveHandleMove1(uint16 op, uint16 var, uint16 argc, uint16 *argv) {
 	debugC(kDebugScript, "Opcode %d: Valve handle move", op);
 

Modified: scummvm/trunk/engines/mohawk/myst_stacks/channelwood.h
===================================================================
--- scummvm/trunk/engines/mohawk/myst_stacks/channelwood.h	2011-01-22 12:12:07 UTC (rev 55419)
+++ scummvm/trunk/engines/mohawk/myst_stacks/channelwood.h	2011-01-22 12:15:42 UTC (rev 55420)
@@ -62,7 +62,9 @@
 	DECLARE_OPCODE(o_leverMove);
 	DECLARE_OPCODE(o_leverMoveFail);
 	DECLARE_OPCODE(o_leverEndMove);
+	DECLARE_OPCODE(o_leverEndMoveResumeBackground);
 	DECLARE_OPCODE(o_leverEndMoveWithSound);
+	DECLARE_OPCODE(o_stairsDoorToggle);
 	DECLARE_OPCODE(o_valveHandleMove1);
 	DECLARE_OPCODE(o_valveHandleMoveStart1);
 	DECLARE_OPCODE(o_valveHandleMoveStop);
@@ -88,6 +90,8 @@
 
 	uint16 _valveVar; // 64
 
+	uint16 _doorOpened; // 68
+
 	bool _leverPulled;
 	MystResourceType5 *_leverAction; // 72
 


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