Example #1
0
 public static int SetHandlerOrder(IntPtr l)
 {
     if (l != IntPtr.Zero)
     {
         var cate = l.GetLua <string>(1);
         if (cate != null)
         {
             int refid = l.GetLua <int>(2);
             int order = l.GetLua <int>(3);
             CrossEvent.SetHandlerOrder(cate, refid, order);
         }
     }
     return(0);
 }
Example #2
0
        public static int RegLuaEventHandler(IntPtr l)
        {
            if (l != IntPtr.Zero)
            {
                int order = 0;
                if (l.gettop() >= 3)
                {
                    order = l.GetLua <int>(3);
                }
                var cate = l.GetLua <string>(1);
                if (cate != null)
                {
                    var refid = CrossEvent.RegHandler(cate, (CrossEvent.ICEventHandler)null);
                    if (order != 0)
                    {
                        CrossEvent.SetHandlerOrder(cate, refid, order);
                    }
                    using (var lr = new LuaStateRecover(l))
                    {
                        l.GetField(lua.LUA_REGISTRYINDEX, "___levt");
                        if (!l.istable(-1))
                        {
                            l.pop(1);
                            l.newtable();
                            l.pushvalue(-1);
                            l.SetField(lua.LUA_REGISTRYINDEX, "___levt");
                        }

                        l.pushvalue(1); // levt cate
                        l.gettable(-2); // levt cate list
                        if (!l.istable(-1))
                        {
                            l.pop(1);        // levt cate
                            l.newtable();    // levt cate list
                            l.pushvalue(1);  // levt cate list cate
                            l.pushvalue(-2); // levt cate list cate list
                            l.settable(-4);  // levt cate list
                        }
                        l.pushnumber(refid); // levt cate list refid
                        l.pushvalue(2);      // levt cate list refid handler
                        l.settable(-3);      //  levt cate list
                    }
                    l.pushnumber(refid);
                    return(1);
                }
            }
            return(0);
        }