예제 #1
0
        public static int CreateThread(int channel, string recvFileName, string recvClassName, bool main, int sleepTime)
        {
            if (createdThread.ContainsKey(channel))
            {
                return(-1000);
            }
            LuaContext luaContext;

            if (main)
            {
                luaContext = LuaManager.GetLuaContext();
            }
            else
            {
                //luaContext = new LuaContext(LuaManager.GetRegisterGameCall());
                luaContext = LuaContext.Create(LuaManager.GetRegisterGameCall());
                luaContext.RegisterLibs();

                DllHelper.SNavLua_Init(luaContext.GetLuaState().GetL());
            }

            luaContext.Require(recvFileName);
            LuaFunction initFunc   = luaContext.GetFunction(recvClassName + ".Init");
            LuaFunction updateFunc = luaContext.GetFunction(recvClassName + ".Update");

            int re = sthread_lcreate(luaContext.GetLuaState().GetL(), channel, initFunc.GetReference(), updateFunc.GetReference(), sleepTime);

            if (re >= 0)
            {
                createdThread.Add(channel, luaContext);
            }

            return(re);
        }
예제 #2
0
        public static void Init(Action <LuaState> call)
        {
            if (inited)
            {
                return;
            }
            inited           = true;
            registerGameCall = call;
            lua = LuaContext.Create(call);

            LuaStart();
        }