Example #1
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);
        }
Example #2
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();
            });
        }