00001 #pragma once
00002
00003 #include "ZakEngine/defines.h"
00004 #include "ScriptMgr.h"
00005
00006 namespace zak {
00007
00008 #define SCRIPT_MAX_CHARS_NAME 100
00009
00064 class ZAKENGINE_API Script {
00065 friend class ScriptMgr;
00066
00067 public:
00068
00074 int GetFunctionIdByDecl(char *functionPrototype);
00075
00082 bool Prepare (char *functionPrototype);
00083
00090 bool Prepare (int funcId);
00091
00095 bool Execute();
00096
00100 bool LoadScript(char *filename);
00101
00106 bool LoadByteCode(char *filename);
00107 bool SaveByteCode(char *filename);
00108
00114 bool ExecuteString(char *script);
00115
00123 int SetArgDWord(int iArg, asDWORD value) { return _context->SetArgDWord(iArg, value); }
00124
00132 int SetArgQWord(int iArg, asQWORD value) { return _context->SetArgQWord(iArg, value); }
00133
00141 int SetArgFloat(int iArg, float value) { return _context->SetArgFloat(iArg, value); }
00142
00150 int SetArgDouble(int iArg, double value){ return _context->SetArgDouble(iArg, value); }
00151
00159 int SetArgObject(int iArg, void *object){ return _context->SetArgObject(iArg, object); }
00160
00166 asDWORD GetReturnDWord() { return _context->GetReturnDWord(); }
00167
00173 asQWORD GetReturnQWord() { return _context->GetReturnQWord(); }
00174
00180 float GetReturnFloat() { return _context->GetReturnFloat(); }
00181
00187 double GetReturnDouble() { return _context->GetReturnDouble(); }
00188
00194 void *GetReturnObject() { return _context->GetReturnObject(); }
00195
00196 private:
00197
00198 Script(char *moduleName, char *sectionName);
00199 ~Script();
00200
00201 char _moduleName[SCRIPT_MAX_CHARS_NAME];
00202 char _sectionName[SCRIPT_MAX_CHARS_NAME];
00203
00204 asIScriptContext* _context;
00205
00206 int _currentFunc;
00207
00208
00209 };
00210
00211 }