コード例 #1
0
 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);
 }
コード例 #2
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);
 }
コード例 #3
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);
        }
コード例 #4
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);
 }
コード例 #5
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);
 }
コード例 #6
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();
            });
        }
コード例 #7
0
 public static int ResetLuaEventReg(IntPtr l)
 {
     CrossEvent.ResetCrossEvent();
     return(0);
 }