diff options
Diffstat (limited to 'engines/gob/inter.h')
-rw-r--r-- | engines/gob/inter.h | 49 |
1 files changed, 43 insertions, 6 deletions
diff --git a/engines/gob/inter.h b/engines/gob/inter.h index 2129a57b4b..be7ed9fe21 100644 --- a/engines/gob/inter.h +++ b/engines/gob/inter.h @@ -21,8 +21,8 @@ * */ -#ifndef GOB_INTERPRET_H -#define GOB_INTERPRET_H +#ifndef GOB_INTER_H +#define GOB_INTER_H #include "gob/goblin.h" @@ -401,15 +401,15 @@ protected: struct OpcodeDrawEntryBargon { OpcodeDrawProcBargon proc; const char *desc; - }; + }; struct OpcodeFuncEntryBargon { OpcodeFuncProcBargon proc; const char *desc; - }; + }; struct OpcodeGoblinEntryBargon { OpcodeGoblinProcBargon proc; const char *desc; - }; + }; const OpcodeDrawEntryBargon *_opcodesDrawBargon; const OpcodeFuncEntryBargon *_opcodesFuncBargon; const OpcodeGoblinEntryBargon *_opcodesGoblinBargon; @@ -435,6 +435,43 @@ protected: void oBargon_intro9(OpGobParams ¶ms); }; +class Inter_v3 : public Inter_v2 { +public: + Inter_v3(GobEngine *vm); + virtual ~Inter_v3() {}; + +protected: + typedef void (Inter_v3::*OpcodeDrawProcV3)(); + typedef bool (Inter_v3::*OpcodeFuncProcV3)(OpFuncParams &); + typedef void (Inter_v3::*OpcodeGoblinProcV3)(OpGobParams &); + struct OpcodeDrawEntryV3 { + OpcodeDrawProcV3 proc; + const char *desc; + }; + struct OpcodeFuncEntryV3 { + OpcodeFuncProcV3 proc; + const char *desc; + }; + struct OpcodeGoblinEntryV3 { + OpcodeGoblinProcV3 proc; + const char *desc; + }; + const OpcodeDrawEntryV3 *_opcodesDrawV3; + const OpcodeFuncEntryV3 *_opcodesFuncV3; + const OpcodeGoblinEntryV3 *_opcodesGoblinV3; + static const int _goblinFuncLookUp[][2]; + + virtual void setupOpcodes(); + virtual void executeDrawOpcode(byte i); + virtual bool executeFuncOpcode(byte i, byte j, OpFuncParams ¶ms); + virtual void executeGoblinOpcode(int i, OpGobParams ¶ms); + virtual const char *getOpcodeDrawDesc(byte i); + virtual const char *getOpcodeFuncDesc(byte i, byte j); + virtual const char *getOpcodeGoblinDesc(int i); + + bool o3_getTotTextItemPart(OpFuncParams ¶ms); +}; + } // End of namespace Gob -#endif // GOB_INTERPRET_H +#endif // GOB_INTER_H |