diff options
author | Eugene Sandulenko | 2009-12-29 23:18:24 +0000 |
---|---|---|
committer | Eugene Sandulenko | 2009-12-29 23:18:24 +0000 |
commit | 0ea022d076c491d802431ee90b658d5e8c06d0e0 (patch) | |
tree | 23953ed8dbd2c1cc798b6aa9aa51df93c7041c7d /engines/mohawk/riven_scripts.h | |
parent | 5f1d2a88b51af43d8903866b46a424fe556abb3c (diff) | |
download | scummvm-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.h | 127 |
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 |