public static int UnregLuaEventHandler(IntPtr l) { if (l != IntPtr.Zero) { var cate = l.GetLua <string>(1); if (cate != null) { var refid = l.GetLua <int>(2); CrossEvent.UnregHandler(cate, refid); } } return(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); }
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); }
public static int SetEventParamNames(IntPtr l) { if (l != IntPtr.Zero) { int token = CrossEvent.TOKEN_CALL; var top = l.gettop(); CrossEvent.SetParamCount(token, top); for (int i = 1; i <= top; ++i) { var name = l.GetLua <string>(i); CrossEvent.SetValStr(name); CrossEvent.SetParamName(token, i - 1); } } return(0); }
public static int TrigLuaEvent(IntPtr l) { if (l != IntPtr.Zero) { var cate = l.GetLua <string>(1); if (cate == null) { return(0); } int token = CrossEvent.TOKEN_CALL; var top = l.gettop(); CrossEvent.SetParamCount(token, Math.Max(0, top - 1)); for (int i = 2; i <= top; ++i) { if (l.istable(i)) { CrossEvent.ContextExchangeObj = GetParams(l, i); } else { CrossEvent.ContextExchangeObj = l.GetLua(i); } CrossEvent.SetParam(token, i - 2); } CrossEvent.TrigEvent(cate); int rvcnt = CrossEvent.GetParamCount(token); for (int i = 0; i < rvcnt; ++i) { CrossEvent.GetParam(token, i); if (CrossEvent.ContextExchangeObj is List <CrossEvent.EventParam> ) { PushParams(l, CrossEvent.ContextExchangeObj as List <CrossEvent.EventParam>); } else { l.PushLua(CrossEvent.ContextExchangeObj); } } return(l.gettop() - top); } return(0); }
private static void RegCrossEvents() { CrossEvent.RegHandler("LockSptManifest", cate => { RuntimeManifestReady.Reset(); RuntimeManifestTaskIdle.Reset(); }); CrossEvent.RegHandler("SptManifestReady", cate => { CrossEvent.GetParam(CrossEvent.TOKEN_ARGS, 0); var vers = CrossEvent.ContextExchangeObj as CrossEvent.RawEventData <Dictionary <string, int> >; RecordedResVersions = null; if (vers != null) { RecordedResVersions = vers.Data; } StartLoadRuntimeManifest(); }); }
public static int ResetLuaEventReg(IntPtr l) { CrossEvent.ResetCrossEvent(); return(0); }