aboutsummaryrefslogtreecommitdiff
path: root/engines/mohawk/riven_scripts.h
diff options
context:
space:
mode:
authorEugene Sandulenko2009-12-29 23:18:24 +0000
committerEugene Sandulenko2009-12-29 23:18:24 +0000
commit0ea022d076c491d802431ee90b658d5e8c06d0e0 (patch)
tree23953ed8dbd2c1cc798b6aa9aa51df93c7041c7d /engines/mohawk/riven_scripts.h
parent5f1d2a88b51af43d8903866b46a424fe556abb3c (diff)
downloadscummvm-rg350-0ea022d076c491d802431ee90b658d5e8c06d0e0.tar.gz
scummvm-rg350-0ea022d076c491d802431ee90b658d5e8c06d0e0.tar.bz2
scummvm-rg350-0ea022d076c491d802431ee90b658d5e8c06d0e0.zip
Add Mohawk engine code. Part 1/3: main code.
svn-id: r46727
Diffstat (limited to 'engines/mohawk/riven_scripts.h')
-rw-r--r--engines/mohawk/riven_scripts.h127
1 files changed, 127 insertions, 0 deletions
diff --git a/engines/mohawk/riven_scripts.h b/engines/mohawk/riven_scripts.h
new file mode 100644
index 0000000000..36fce259f0
--- /dev/null
+++ b/engines/mohawk/riven_scripts.h
@@ -0,0 +1,127 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * $URL$
+ * $Id$
+ *
+ */
+
+#ifndef RIVEN_SCRIPTS_H
+#define RIVEN_SCRIPTS_H
+
+class MohawkEngine_Riven;
+
+#define DECLARE_OPCODE(x) void x(uint16 op, uint16 argc, uint16 *argv)
+
+namespace Mohawk {
+// Script Types
+enum {
+ kMouseDownScript = 0,
+ kMouseDownScriptAlt = 1,
+ kMouseUpScript = 2,
+ kMouseMovedPressedReleasedScript = 3,
+ kMouseInsideScript = 4,
+ kMouseLeaveScript = 5, // This is unconfirmed
+
+ kCardLoadScript = 6,
+ kCardLeaveScript = 7,
+ kCardOpenScript = 9,
+ kCardUpdateScript = 10
+};
+
+class RivenScript;
+typedef Common::Array<Common::SharedPtr<RivenScript> > RivenScriptList;
+
+class RivenScript {
+public:
+ RivenScript(MohawkEngine_Riven *vm, Common::SeekableReadStream *stream, uint16 scriptType);
+ ~RivenScript();
+
+ void runScript();
+ void dumpScript(Common::StringList varNames, Common::StringList xNames, byte tabs);
+ uint16 getScriptType() { return _scriptType; }
+
+ // Read in an array of script objects from a stream
+ static RivenScriptList readScripts(MohawkEngine_Riven *vm, Common::SeekableReadStream *stream);
+
+private:
+ typedef void (RivenScript::*OpcodeProcRiven)(uint16 op, uint16 argc, uint16 *argv);
+ struct RivenOpcode {
+ OpcodeProcRiven proc;
+ const char *desc;
+ };
+ const RivenOpcode* _opcodes;
+ void setupOpcodes();
+
+ MohawkEngine_Riven *_vm;
+ Common::SeekableReadStream *_stream;
+ uint16 _scriptType;
+
+ void dumpCommands(Common::StringList varNames, Common::StringList xNames, byte tabs);
+ void processCommands(bool runCommands);
+
+ static uint32 calculateCommandSize(Common::SeekableReadStream* script);
+ static uint32 calculateScriptSize(Common::SeekableReadStream* script);
+
+ DECLARE_OPCODE(empty) { warning ("Unknown Opcode %04x", op); }
+
+ //Opcodes
+ DECLARE_OPCODE(drawBitmap);
+ DECLARE_OPCODE(switchCard);
+ DECLARE_OPCODE(playScriptSLST);
+ DECLARE_OPCODE(playSound);
+ DECLARE_OPCODE(setVariable);
+ DECLARE_OPCODE(mohawkSwitch);
+ DECLARE_OPCODE(enableHotspot);
+ DECLARE_OPCODE(disableHotspot);
+ DECLARE_OPCODE(clearSLST);
+ DECLARE_OPCODE(changeCursor);
+ DECLARE_OPCODE(delay);
+ DECLARE_OPCODE(runExternalCommand);
+ DECLARE_OPCODE(transition);
+ DECLARE_OPCODE(refreshCard);
+ DECLARE_OPCODE(disableScreenUpdate);
+ DECLARE_OPCODE(enableScreenUpdate);
+ DECLARE_OPCODE(incrementVariable);
+ DECLARE_OPCODE(changeStack);
+ DECLARE_OPCODE(disableMovie);
+ DECLARE_OPCODE(disableAllMovies);
+ DECLARE_OPCODE(enableMovie);
+ DECLARE_OPCODE(playMovie);
+ DECLARE_OPCODE(playMovieBg);
+ DECLARE_OPCODE(stopMovie);
+ DECLARE_OPCODE(unk_36);
+ DECLARE_OPCODE(fadeAmbientSounds);
+ DECLARE_OPCODE(complexPlayMovie);
+ DECLARE_OPCODE(activatePLST);
+ DECLARE_OPCODE(activateSLST);
+ DECLARE_OPCODE(activateMLSTAndPlay);
+ DECLARE_OPCODE(activateBLST);
+ DECLARE_OPCODE(activateFLST);
+ DECLARE_OPCODE(zipMode);
+ DECLARE_OPCODE(activateMLST);
+ DECLARE_OPCODE(activateSLSTWithVolume);
+};
+
+} // End of namespace Mohawk
+
+#undef DECLARE_OPCODE
+
+#endif