示例#1
0
    public static Delegate MyFrameWork_StateChangedEvent(LuaFunction func)
    {
        if (func == null)
        {
            MyFrameWork.StateChangedEvent fn = delegate { };
            return(fn);
        }

        MyFrameWork.StateChangedEvent d = (new MyFrameWork_StateChangedEvent_Event(func)).Call;
        return(d);
    }
示例#2
0
    static int set_StateChanged(IntPtr L)
    {
        MyFrameWork.BaseUI obj  = (MyFrameWork.BaseUI)ToLua.CheckObject(L, 1, typeof(MyFrameWork.BaseUI));
        EventObject        arg0 = null;

        if (LuaDLL.lua_isuserdata(L, 2) != 0)
        {
            arg0 = (EventObject)ToLua.ToObject(L, 2);
        }
        else
        {
            return(LuaDLL.luaL_error(L, "The event 'MyFrameWork.BaseUI.StateChanged' can only appear on the left hand side of += or -= when used outside of the type 'MyFrameWork.BaseUI'"));
        }

        if (arg0.op == EventOp.Add)
        {
            MyFrameWork.StateChangedEvent ev = (MyFrameWork.StateChangedEvent)DelegateFactory.CreateDelegate(typeof(MyFrameWork.StateChangedEvent), arg0.func);
            obj.StateChanged += ev;
        }
        else if (arg0.op == EventOp.Sub)
        {
            MyFrameWork.StateChangedEvent ev = (MyFrameWork.StateChangedEvent)LuaMisc.GetEventHandler(obj, typeof(MyFrameWork.BaseUI), "StateChanged");
            Delegate[] ds    = ev.GetInvocationList();
            LuaState   state = LuaState.Get(L);

            for (int i = 0; i < ds.Length; i++)
            {
                ev = (MyFrameWork.StateChangedEvent)ds[i];
                LuaDelegate ld = ev.Target as LuaDelegate;

                if (ld != null && ld.func == arg0.func)
                {
                    obj.StateChanged -= ev;
                    state.DelayDispose(ld.func);
                    break;
                }
            }

            arg0.func.Dispose();
        }

        return(0);
    }