Пример #1
0
    static int RemoveCallback(IntPtr L)
    {
        try
        {
            int count = LuaDLL.lua_gettop(L);

            if (count == 2 && TypeChecker.CheckTypes <LuaEventCallback>(L, 2))
            {
                QKEvent          obj  = (QKEvent)ToLua.CheckObject <QKEvent>(L, 1);
                LuaEventCallback arg0 = (LuaEventCallback)ToLua.ToObject(L, 2);
                obj.RemoveCallback(arg0);
                return(0);
            }
            else if (count == 2 && TypeChecker.CheckTypes <IEventCallback>(L, 2))
            {
                QKEvent        obj  = (QKEvent)ToLua.CheckObject <QKEvent>(L, 1);
                IEventCallback arg0 = (IEventCallback)ToLua.ToObject(L, 2);
                obj.RemoveCallback(arg0);
                return(0);
            }
            else
            {
                return(LuaDLL.luaL_throw(L, "invalid arguments to method: QKEvent.RemoveCallback"));
            }
        }
        catch (Exception e)
        {
            return(LuaDLL.toluaL_exception(L, e));
        }
    }
Пример #2
0
    static int AddCallback(IntPtr L)
    {
        try
        {
            int count = LuaDLL.lua_gettop(L);

            if (count == 2)
            {
                QKEvent        obj  = (QKEvent)ToLua.CheckObject <QKEvent>(L, 1);
                IEventCallback arg0 = (IEventCallback)ToLua.CheckObject <IEventCallback>(L, 2);
                obj.AddCallback(arg0);
                return(0);
            }
            else if (count == 3)
            {
                QKEvent          obj  = (QKEvent)ToLua.CheckObject <QKEvent>(L, 1);
                object           arg0 = ToLua.ToVarObject(L, 2);
                LuaFunction      arg1 = ToLua.CheckLuaFunction(L, 3);
                LuaEventCallback o    = obj.AddCallback(arg0, arg1);
                ToLua.PushObject(L, o);
                return(1);
            }
            else
            {
                return(LuaDLL.luaL_throw(L, "invalid arguments to method: QKEvent.AddCallback"));
            }
        }
        catch (Exception e)
        {
            return(LuaDLL.toluaL_exception(L, e));
        }
    }
Пример #3
0
    static int Call(IntPtr L)
    {
        try
        {
            int count = LuaDLL.lua_gettop(L);

            if (count == 2 && TypeChecker.CheckTypes <object[]>(L, 2))
            {
                QKEvent  obj  = (QKEvent)ToLua.CheckObject <QKEvent>(L, 1);
                object[] arg0 = ToLua.ToObjectArray(L, 2);
                obj.Call(arg0);
                return(0);
            }
            else if (count == 2 && TypeChecker.CheckTypes <object>(L, 2))
            {
                QKEvent obj  = (QKEvent)ToLua.CheckObject <QKEvent>(L, 1);
                object  arg0 = ToLua.ToVarObject(L, 2);
                obj.Call(arg0);
                return(0);
            }
            else
            {
                return(LuaDLL.luaL_throw(L, "invalid arguments to method: QKEvent.Call"));
            }
        }
        catch (Exception e)
        {
            return(LuaDLL.toluaL_exception(L, e));
        }
    }
Пример #4
0
 static int Dispose(IntPtr L)
 {
     try
     {
         ToLua.CheckArgsCount(L, 1);
         QKEvent obj = (QKEvent)ToLua.CheckObject <QKEvent>(L, 1);
         obj.Dispose();
         return(0);
     }
     catch (Exception e)
     {
         return(LuaDLL.toluaL_exception(L, e));
     }
 }
Пример #5
0
    static int set_OnWndOpen(IntPtr L)
    {
        object o = null;

        try
        {
            o = ToLua.ToObject(L, 1);
            WndManage obj  = (WndManage)o;
            QKEvent   arg0 = (QKEvent)ToLua.CheckObject(L, 2, typeof(QKEvent));
            obj.OnWndOpen = arg0;
            return(0);
        }
        catch (Exception e)
        {
            return(LuaDLL.toluaL_exception(L, e, o == null ? "attempt to index OnWndOpen on a nil value" : e.Message));
        }
    }
Пример #6
0
    static int get_OnWndOpen(IntPtr L)
    {
        object o = null;

        try
        {
            o = ToLua.ToObject(L, 1);
            WndManage obj = (WndManage)o;
            QKEvent   ret = obj.OnWndOpen;
            ToLua.PushObject(L, ret);
            return(1);
        }
        catch (Exception e)
        {
            return(LuaDLL.toluaL_exception(L, e, o == null ? "attempt to index OnWndOpen on a nil value" : e.Message));
        }
    }
Пример #7
0
    static int set_HandleDisConnect(IntPtr L)
    {
        object o = null;

        try
        {
            o = ToLua.ToObject(L, 1);
            NetworkManager obj  = (NetworkManager)o;
            QKEvent        arg0 = (QKEvent)ToLua.CheckObject <QKEvent>(L, 2);
            obj.HandleDisConnect = arg0;
            return(0);
        }
        catch (Exception e)
        {
            return(LuaDLL.toluaL_exception(L, e, o, "attempt to index HandleDisConnect on a nil value"));
        }
    }
Пример #8
0
    static int get_HandleDisConnect(IntPtr L)
    {
        object o = null;

        try
        {
            o = ToLua.ToObject(L, 1);
            NetworkManager obj = (NetworkManager)o;
            QKEvent        ret = obj.HandleDisConnect;
            ToLua.PushObject(L, ret);
            return(1);
        }
        catch (Exception e)
        {
            return(LuaDLL.toluaL_exception(L, e, o, "attempt to index HandleDisConnect on a nil value"));
        }
    }
Пример #9
0
    static int get_HasCallback(IntPtr L)
    {
        object o = null;

        try
        {
            o = ToLua.ToObject(L, 1);
            QKEvent obj = (QKEvent)o;
            bool    ret = obj.HasCallback;
            LuaDLL.lua_pushboolean(L, ret);
            return(1);
        }
        catch (Exception e)
        {
            return(LuaDLL.toluaL_exception(L, e, o, "attempt to index HasCallback on a nil value"));
        }
    }
Пример #10
0
    static int _CreateQKEvent(IntPtr L)
    {
        try
        {
            int count = LuaDLL.lua_gettop(L);

            if (count == 0)
            {
                QKEvent obj = new QKEvent();
                ToLua.PushObject(L, obj);
                return(1);
            }
            else
            {
                return(LuaDLL.luaL_throw(L, "invalid arguments to ctor method: QKEvent.New"));
            }
        }
        catch (Exception e)
        {
            return(LuaDLL.toluaL_exception(L, e));
        }
    }
Пример #11
0
        internal void PostEvent(SyncObj obj, string attrName)
        {
            //精确绑定的事件
            {
                QKEvent evt = GetValueChangedEvent(obj.sid, obj.Path, attrName);
                if (evt != null)
                {
                    evt.Call(attrName);
                }
            }

            //模糊绑定的事件
            {
                var evts = GetValueChangedEvents(obj.sid, obj.Path);
                if (evts != null)
                {
                    foreach (var evtkv in evts)
                    {
                        var kvAttrName = evtkv.Key;
                        var evt        = evtkv.Value;
                        if (kvAttrName == "" && evt != null)
                        {
                            evt.Call(attrName);
                        }
                    }
                }
            }

            //同时监听子对象的事件
            {
                var fullPath = obj.Path + "@" + attrName;
                var path     = obj.Path;
                do
                {
                    var evts = GetValueChangedEvents(obj.sid, path);
                    if (evts != null)
                    {
                        foreach (var evtkv in evts)
                        {
                            var kvAttrName = evtkv.Key;
                            var evt        = evtkv.Value;
                            if (kvAttrName == "*" && evt != null)
                            {
                                evt.Call(fullPath);
                            }
                        }
                    }

                    if (path == "")
                    {
                        path = null;
                    }
                    else
                    {
                        int idx = path.LastIndexOf('/');
                        if (idx < 0)
                        {
                            path = "";
                        }
                        else
                        {
                            path = path.Substring(0, idx);
                        }
                    }
                } while(path != null);
            }
        }