diff options
Diffstat (limited to 'engines/toltecs/script.h')
-rw-r--r-- | engines/toltecs/script.h | 73 |
1 files changed, 70 insertions, 3 deletions
diff --git a/engines/toltecs/script.h b/engines/toltecs/script.h index 8f4ae80818..c35a2e4184 100644 --- a/engines/toltecs/script.h +++ b/engines/toltecs/script.h @@ -34,6 +34,7 @@ #include "common/events.h" #include "common/keyboard.h" #include "common/array.h" +#include "common/func.h" #include "sound/audiostream.h" #include "sound/mixer.h" @@ -52,6 +53,8 @@ enum VarType { vtWord }; +typedef Common::Functor0<void> ScriptFunction; + class ScriptInterpreter { public: ScriptInterpreter(ToltecsEngine *vm); @@ -90,6 +93,8 @@ protected: }; ToltecsEngine *_vm; + Common::Array<const ScriptFunction*> _scriptFuncs; + Common::Array<const char *> _scriptFuncNames; byte *_stack; @@ -107,13 +112,13 @@ protected: int16 readInt16(); void execOpcode(byte opcode); - void execKernelOpcode(uint16 kernelOpcode); + + void setupScriptFunctions(); + void execScriptFunction(uint16 index); byte arg8(int16 offset); int16 arg16(int16 offset); - void pushByte(byte value); - byte popByte(); void pushInt16(int16 value); int16 popInt16(); @@ -123,6 +128,68 @@ protected: int16 localRead16(int16 offset); byte *localPtr(int16 offset); + void sfNop(); + void sfGetGameVar(); + void sfSetGameVar(); + void sfUpdateScreen(); + void sfGetRandomNumber(); + void sfDrawGuiTextMulti(); + void sfUpdateVerbLine(); + void sfSetFontColor(); + void sfGetTalkTextDuration(); + void sfTalk(); + void sfFindPaletteFragment(); + void sfClearPaletteFragments(); + void sfAddPaletteFragment(); + void sfSetDeltaAnimPalette(); + void sfBuildColorTransTable(); + void sfSetDeltaMainPalette(); + void sfLoadScript(); + void sfRegisterFont(); + void sfLoadAddPalette(); + void sfLoadScene(); + void sfSetGuiHeight(); + void sfFindMouseInRectIndex1(); + void sfFindMouseInRectIndex2(); + void sfDrawGuiImage(); + void sfAddAnimatedSpriteNoLoop(); + void sfAddAnimatedSprite(); + void sfAddStaticSprite(); + void sfAddAnimatedSpriteScaled(); + void sfFindPath(); + void sfWalk(); + void sfScrollCameraUp(); + void sfScrollCameraDown(); + void sfScrollCameraLeft(); + void sfScrollCameraRight(); + void sfScrollCameraUpEx(); + void sfScrollCameraDownEx(); + void sfScrollCameraLeftEx(); + void sfScrollCameraRightEx(); + void sfSetCamera(); + void sfGetRgbModifiertAtPoint(); + void sfStartAnim(); + void sfAnimNextFrame(); + void sfGetAnimFrameNumber(); + void sfGetAnimStatus(); + void sfStartShakeScreen(); + void sfStopShakeScreen(); + void sfStartSequence(); + void sfEndSequence(); + void sfSequenceVolumeStuff(); + void sfPlaySound1(); + void sfPlaySound2(); + void sfClearScreen(); + void sfHandleInput(); + void sfRunOptionsScreen(); + void sfPrecacheSprites(); + void sfPrecacheSounds1(); + void sfDeleteAllPbfFilesByExternalArray(); + void sfPrecacheSounds2(); + void sfRestoreStackPtr(); + void sfSaveStackPtr(); + void sfPlayMovie(); + }; |