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