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); }
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); }