/* 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$ * */ #if !defined(SCUMM_HE_LOGIC_HE_H) && defined(ENABLE_HE) #define SCUMM_HE_LOGIC_HE_H namespace Scumm { class ScummEngine_v90he; class LogicHE { public: ScummEngine_v90he *_vm; LogicHE(ScummEngine_v90he *vm); virtual ~LogicHE(); void writeScummVar(int var, int32 value); int getFromArray(int arg0, int idx2, int idx1); void putInArray(int arg0, int idx2, int idx1, int val); virtual void beforeBootScript() {} virtual void initOnce() {} virtual int startOfFrame() { return 1; } void endOfFrame() {} void processKeyStroke(int keyPressed) {} virtual int versionID(); virtual int32 dispatch(int op, int numArgs, int32 *args); }; class LogicHErace : public LogicHE { private: float *_userData; double *_userDataD; public: LogicHErace(ScummEngine_v90he *vm); ~LogicHErace(); int versionID(); int32 dispatch(int op, int numArgs, int32 *args); private: int32 op_1003(int32 *args); int32 op_1004(int32 *args); int32 op_1100(int32 *args); int32 op_1101(int32 *args); int32 op_1102(int32 *args); int32 op_1103(int32 *args); int32 op_1110(); int32 op_1120(int32 *args); int32 op_1130(int32 *args); int32 op_1140(int32 *args); void op_sub1(float arg); void op_sub2(float arg); void op_sub3(float arg); }; class LogicHEfunshop : public LogicHE { public: LogicHEfunshop(ScummEngine_v90he *vm) : LogicHE(vm) {} int versionID(); int32 dispatch(int op, int numArgs, int32 *args); private: void op_1004(int32 *args); void op_1005(int32 *args); int checkShape(int32 data0, int32 data1, int32 data4, int32 data5, int32 data2, int32 data3, int32 data6, int32 data7, int32 *x, int32 *y); }; class LogicHEfootball : public LogicHE { public: LogicHEfootball(ScummEngine_v90he *vm) : LogicHE(vm) {} int versionID(); int32 dispatch(int op, int numArgs, int32 *args); private: int op_1004(int32 *args); int op_1006(int32 *args); int op_1007(int32 *args); int op_1010(int32 *args); int op_1022(int32 *args); int op_1023(int32 *args); int op_1024(int32 *args); }; class LogicHEsoccer : public LogicHE { private: byte *_userData; double *_userDataD; public: LogicHEsoccer(ScummEngine_v90he *vm); ~LogicHEsoccer(); int versionID(); int32 dispatch(int op, int numArgs, int32 *args); void beforeBootScript(); void initOnce(); int startOfFrame(); private: int op_1001(int32 *args); int op_1002(int32 *args); int op_1003(int32 *args); int op_1004(int32 *args); // op_1006 can be called from other opcodes! int op_1006(int32 a1, int32 a2, int32 a3, int32 a4); int op_1007(int32 *args); int op_1008(int32 *args); // op_1011 can be called from other opcodes! int op_1011(int32 a1, int32 a2, int32 a3, int32 a4, int32 a5); void op_1011_sub(int32 a1, int32 a2, int32 a3, int32 a4); int op_1012(int32 *args); // op_1013 can be called from other opcodes! int op_1013(int32 a1, int32 a2, int32 a3); int op_1014(int32 *args); int op_1019(int32 *args); // op_1020 can be called from other opcodes! int op_1020(); int op_1021(int32 *args); }; class LogicHEbaseball2001 : public LogicHE { public: LogicHEbaseball2001(ScummEngine_v90he *vm) : LogicHE(vm) {} int versionID(); int32 dispatch(int op, int numArgs, int32 *args); }; class LogicHEbasketball : public LogicHE { public: LogicHEbasketball(ScummEngine_v90he *vm) : LogicHE(vm) {} int versionID(); int32 dispatch(int op, int numArgs, int32 *args); }; class LogicHEmoonbase : public LogicHE { public: LogicHEmoonbase(ScummEngine_v90he *vm) : LogicHE(vm) {} int versionID(); }; } // End of namespace Scumm #endif