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

mthreepwood at users.sourceforge.net mthreepwood at users.sourceforge.net
Thu Jun 24 07:31:07 CEST 2010


Revision: 50200
          http://scummvm.svn.sourceforge.net/scummvm/?rev=50200&view=rev
Author:   mthreepwood
Date:     2010-06-24 05:31:07 +0000 (Thu, 24 Jun 2010)

Log Message:
-----------
Implement the rest of xvalvecontrol for the boiler puzzle in Riven, initialize a variable for the boiler platform switch.

Modified Paths:
--------------
    scummvm/trunk/engines/mohawk/riven_external.cpp
    scummvm/trunk/engines/mohawk/riven_vars.cpp

Modified: scummvm/trunk/engines/mohawk/riven_external.cpp
===================================================================
--- scummvm/trunk/engines/mohawk/riven_external.cpp	2010-06-24 04:31:53 UTC (rev 50199)
+++ scummvm/trunk/engines/mohawk/riven_external.cpp	2010-06-24 05:31:07 UTC (rev 50200)
@@ -662,15 +662,17 @@
 	// Get the variable for the valve
 	uint32 *valve = _vm->matchVarToString("bvalve");
 
-	Common::Event event;
 	int changeX = 0;
 	int changeY = 0;
+	bool done = false;
 
 	// Set the cursor to the closed position
 	_vm->_gfx->changeCursor(2004);
 	_vm->_system->updateScreen();
 
-	for (;;) {
+	while (!done) {
+		Common::Event event;
+
 		while (_vm->_system->getEventManager()->pollEvent(event)) {
 			switch (event.type) {
 			case Common::EVENT_MOUSEMOVE:
@@ -682,30 +684,53 @@
 				// FIXME: These values for changes in x/y could be tweaked.
 				if (*valve == 0 && changeY <= -10) {
 					*valve = 1;
-					// TODO: Play movie
+					_vm->_gfx->changeCursor(kRivenHideCursor);
+					_vm->_video->playMovieBlocking(2);
 					_vm->refreshCard();
 				} else if (*valve == 1) {
 					if (changeX >= 0 && changeY >= 10) {
 						*valve = 0;
-						// TODO: Play movie
+						_vm->_gfx->changeCursor(kRivenHideCursor);
+						_vm->_video->playMovieBlocking(3);
 						_vm->refreshCard();
 					} else if (changeX <= -10 && changeY <= 10) {
 						*valve = 2;
-						// TODO: Play movie
+						_vm->_gfx->changeCursor(kRivenHideCursor);
+						_vm->_video->playMovieBlocking(1);
 						_vm->refreshCard();
 					}
 				} else if (*valve == 2 && changeX >= 10) {
 					*valve = 1;
-					// TODO: Play movie
+					_vm->_gfx->changeCursor(kRivenHideCursor);
+					_vm->_video->playMovieBlocking(4);
 					_vm->refreshCard();
 				}
-				return;
+				done = true;
 			default:
 				break;
 			}
 		}
 		_vm->_system->delayMillis(10);
 	}
+
+	// If we changed state and the new state is that the valve is flowing to
+	// the boiler, we need to update the boiler state.
+	if (*valve == 1) {
+		if (*_vm->matchVarToString("bidvlv") == 1) { // Check which way the water is going at the boiler
+			if (*_vm->matchVarToString("bblrarm") == 1) {
+				// If the pipe is open, make sure the water is drained out
+				*_vm->matchVarToString("bheat") = 0;
+				*_vm->matchVarToString("bblrwtr") = 0;
+			} else {
+				// If the pipe is closed, fill the boiler again
+				*_vm->matchVarToString("bheat") = *_vm->matchVarToString("bblrvalve");
+				*_vm->matchVarToString("bblrwtr") = 1;
+			}
+		} else {
+			// Have the grating inside the boiler match the switch outside
+			*_vm->matchVarToString("bblrgrt") = (*_vm->matchVarToString("bblrsw") == 1) ? 0 : 1;
+		}
+	}
 }
 
 void RivenExternal::xbchipper(uint16 argc, uint16 *argv) {

Modified: scummvm/trunk/engines/mohawk/riven_vars.cpp
===================================================================
--- scummvm/trunk/engines/mohawk/riven_vars.cpp	2010-06-24 04:31:53 UTC (rev 50199)
+++ scummvm/trunk/engines/mohawk/riven_vars.cpp	2010-06-24 05:31:07 UTC (rev 50200)
@@ -319,6 +319,7 @@
 	*matchVarToString("bheat") = 1;
 	*matchVarToString("waterenabled") = 1;
 	*matchVarToString("ogehnpage") = 1;
+	*matchVarToString("bblrsw") = 1;
 
 	// Randomize the telescope combination
 	uint32 *teleCombo = matchVarToString("tcorrectorder");


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