00001 #pragma once00002
00003
00004 extern"C"00005 {
00006 #include "./script_lua/lua_main/lua-5.1.2/src/lua.h"00007 #include "./script_lua/lua_main/lua-5.1.2/src/lauxlib.h"00008 #include "./script_lua/lua_main/lua-5.1.2/src/lualib.h"00009 }
00010 #include "geSCRIPT.h"00011 #include "lua_Singleton.h"00012
00013
00014
00015
00016 class Script;
00017class ScriptEngine : public Singleton<ScriptEngine>
00018 {
00019 lua_State* m_pLuaState;
00020
00021 // This allows us to bind static functions to LUA00022typedefintpScriptFunction(lua_State*);
00023 // std::map<gvStringc, pScriptFunction*> m_FunctionMap;00024
00025 // The list of executing scripts00026Script* m_pScriptList;
00027Script* m_pBaseMainScript; // base script.00028
00029 public:
00030
00031 ScriptEngine(void);
00032 ~ScriptEngine(void);
00033
00034 lua_State* GetLua() const { returnm_pLuaState; } // returns the LUA state00035 intNumScripts() const; // returns how many scripts are in the list00036
00037 // Any classes that will be bound to LUA need to be registered with00038 // the script engine00039 voidRegisterClass(constchar* class_name);
00040 voidRegisterScriptClasses();
00041
00042 // This returns a properly linked script00043 Script* Create();
00044Script* GetBaseMainScript(void) { returnm_pBaseMainScript; };
00045 // Remove a script from the list00046 voidUnlinkScript(Script* pScript);
00047
00048 // Calls Update for every script on the list00049 voidUpdate(float fElapsed);
00050
00051 // This initializes the script engine, you must call this before using 00052 // the 00053 boolStart();
00054
00055 private:
00056
00057 // This will destroy all scripts and close the LUA state00058 voidStop();
00059
00060 };
00061
00062 externScriptEngine* gScriptEngine;
00063 externScriptEngine& GetScriptEngine();
00064 externvoidReleaseScriptEngine();
00065
00066
00067
Copyright(C) gvSystem & GamePlus All Rights Reserved.