aboutsummaryrefslogtreecommitdiff
path: root/engines/mohawk/myst_stacks
diff options
context:
space:
mode:
authorDavid Turner2010-12-22 02:46:30 +0000
committerDavid Turner2010-12-22 02:46:30 +0000
commit67cf6a0601f42f8e43d52a194f8d7c00608d977f (patch)
tree68bdc5af1006e5a4dc1ddb70c37d00eb4ebd695f /engines/mohawk/myst_stacks
parenta87c52bdb0d66007f9a2f03777bc1da6ba361ca9 (diff)
downloadscummvm-rg350-67cf6a0601f42f8e43d52a194f8d7c00608d977f.tar.gz
scummvm-rg350-67cf6a0601f42f8e43d52a194f8d7c00608d977f.tar.bz2
scummvm-rg350-67cf6a0601f42f8e43d52a194f8d7c00608d977f.zip
MOHAWK: Add Framework of getVar(), setVar() and toggleVar() to Myst Channelwood Age Script Parser.
svn-id: r54997
Diffstat (limited to 'engines/mohawk/myst_stacks')
-rw-r--r--engines/mohawk/myst_stacks/channelwood.cpp87
-rw-r--r--engines/mohawk/myst_stacks/channelwood.h3
2 files changed, 90 insertions, 0 deletions
diff --git a/engines/mohawk/myst_stacks/channelwood.cpp b/engines/mohawk/myst_stacks/channelwood.cpp
index 4ab5491240..5593e6cc72 100644
--- a/engines/mohawk/myst_stacks/channelwood.cpp
+++ b/engines/mohawk/myst_stacks/channelwood.cpp
@@ -26,6 +26,7 @@
#include "mohawk/myst.h"
#include "mohawk/graphics.h"
#include "mohawk/myst_areas.h"
+#include "mohawk/myst_saveload.h"
#include "mohawk/sound.h"
#include "mohawk/video.h"
#include "mohawk/myst_stacks/channelwood.h"
@@ -76,6 +77,92 @@ void MystScriptParser_Channelwood::runPersistentScripts() {
opcode_203_run();
}
+uint16 MystScriptParser_Channelwood::getVar(uint16 var) {
+// MystVariables::Globals &globals = _vm->_saveLoad->_v->globals;
+ MystVariables::Channelwood &channelwood = _vm->_saveLoad->_v->channelwood;
+
+ switch(var) {
+ case 1: // Water Pump Bridge Raised
+ return channelwood.waterPumpBridgeState;
+ case 2: // Lower Walkway to Upper Walkway Elevator Raised
+ return channelwood.elevatorState;
+// case 4: // Water Flowing To Book Room Elevator
+// based on channelwood.waterValveStates;
+// return 0;
+// return 1;
+ case 5: // Lower Walkway to Upper Walkway Spiral Stair Lower Door State
+ return channelwood.stairsLowerDoorState;
+ case 6: // Pipe Bridge Extended
+ return channelwood.pipeState;
+// case 7: // Water Flowing To Water Pump For Bridge
+// return 0;
+// return 1;
+ case 8: // Water Tank Valve
+ return (channelwood.waterValveStates & 0x80) ? 1 : 0;
+// case 13: // Valve State
+// based on channelwood.waterValveStates;
+// return 0;
+// return 1;
+ case 16: // Channelwood Lower Walkway to Upper Walkway Spiral Stair Upper Door State
+ return channelwood.stairsUpperDoorState;
+ case 17: // Achenar's Holoprojector Selection
+ return channelwood.holoprojectorSelection;
+// case 18: // Sirrus's Room Bed Drawer Open
+// return 0;
+// return 1;
+ case 19: // Sound - Water Tank Valve
+ return (channelwood.waterValveStates & 0x80) ? 1 : 0;
+// case 26: // Sound - Water Flowing in <TODO>
+// based on channelwood.waterValveStates;
+// return 0;
+// return 1;
+// case 30: // Temple Door State
+// return 0;
+// return 1;
+// case 32: // Sound - Water Flowing in Pipe to Book Room Elevator
+// based on channelwood.waterValveStates;
+// return 0;
+// return 1;
+// case 102: // Sirrus's Desk Drawer / Red Page State
+// return 0; // Drawer Closed
+// return 1; // Drawer Open, Red Page Taken
+// return 2; // Drawer Open, Red Page Present
+// case 103: // Blue Page Present
+// return 0; // Blue Page Taken
+// return 1; // Blue Page Present
+ default:
+ return MystScriptParser::getVar(var);
+ }
+}
+
+void MystScriptParser_Channelwood::toggleVar(uint16 var) {
+// MystVariables::Globals &globals = _vm->_saveLoad->_v->globals;
+ MystVariables::Channelwood &channelwood = _vm->_saveLoad->_v->channelwood;
+
+ switch(var) {
+ case 6: // Pipe Bridge Extended
+ channelwood.pipeState ^= 1;
+ default:
+ MystScriptParser::toggleVar(var);
+ break;
+ }
+}
+
+bool MystScriptParser_Channelwood::setVarValue(uint16 var, uint16 value) {
+// MystVariables::Channelwood &channelwood = _vm->_saveLoad->_v->channelwood;
+ bool refresh = false;
+
+ switch (var) {
+// case 18: // Sirrus's Room Bed Drawer Open
+// temp ^= 1;
+ default:
+ refresh = MystScriptParser::setVarValue(var, value);
+ break;
+ }
+
+ return refresh;
+}
+
void MystScriptParser_Channelwood::opcode_101(uint16 op, uint16 var, uint16 argc, uint16 *argv) {
varUnusedCheck(op, var);
diff --git a/engines/mohawk/myst_stacks/channelwood.h b/engines/mohawk/myst_stacks/channelwood.h
index 4ea55f6d46..2c88f72442 100644
--- a/engines/mohawk/myst_stacks/channelwood.h
+++ b/engines/mohawk/myst_stacks/channelwood.h
@@ -47,6 +47,9 @@ public:
private:
void setupOpcodes();
+ uint16 getVar(uint16 var);
+ void toggleVar(uint16 var);
+ bool setVarValue(uint16 var, uint16 value);
void opcode_202_run();
void opcode_202_disable();