Ejemplo n.º 1
0
        /// <summary>
        /// Equality operator.
        /// </summary>

        public override bool Equals(object obj)
        {
            if (obj == null)
            {
                return(!isValid);
            }

            if (obj is Callback)
            {
                Callback callback = obj as Callback;
        #if REFLECTION_SUPPORT
                if (callback.Equals(mCachedCallback))
                {
                    return(true);
                }
                MonoBehaviour mb = callback.Target as MonoBehaviour;
                return(mTarget == mb && string.Equals(mMethodName, GetMethodName(callback)));
        #elif UNITY_FLASH
                return(callback == mCachedCallback);
        #else
                return(callback.Equals(mCachedCallback));
        #endif
            }

            if (obj is KGUIEventDelegate)
            {
                KGUIEventDelegate del = obj as KGUIEventDelegate;
                return(mTarget == del.mTarget && string.Equals(mMethodName, del.mMethodName));
            }
            return(false);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Assign a new event delegate.
        /// </summary>

        static public void Set(List <KGUIEventDelegate> list, KGUIEventDelegate del)
        {
            if (list != null)
            {
                list.Clear();
                list.Add(del);
            }
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Assign a new event delegate.
        /// </summary>

        static public KGUIEventDelegate Set(List <KGUIEventDelegate> list, Callback callback)
        {
            if (list != null)
            {
                KGUIEventDelegate del = new KGUIEventDelegate(callback);
                list.Clear();
                list.Add(del);
                return(del);
            }
            return(null);
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Execute an entire list of delegates.
        /// </summary>

        static public void Execute(List <KGUIEventDelegate> list)
        {
            if (list != null)
            {
                for (int i = 0; i < list.Count;)
                {
                    KGUIEventDelegate del = list[i];

                    if (del != null)
                    {
        #if !UNITY_EDITOR && !UNITY_FLASH
                        try
                        {
                            del.Execute();
                        }
                        catch (System.Exception ex)
                        {
                            if (ex.InnerException != null)
                            {
                                Debug.LogException(ex.InnerException);
                            }
                            else
                            {
                                Debug.LogException(ex);
                            }
                        }
        #else
                        del.Execute();
        #endif

                        if (i >= list.Count)
                        {
                            break;
                        }
                        if (list[i] != del)
                        {
                            continue;
                        }

                        if (del.oneShot)
                        {
                            list.RemoveAt(i);
                            continue;
                        }
                    }
                    ++i;
                }
            }
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Convenience function to check if the specified list of delegates can be executed.
        /// </summary>

        static public bool IsValid(List <KGUIEventDelegate> list)
        {
            if (list != null)
            {
                for (int i = 0, imax = list.Count; i < imax; ++i)
                {
                    KGUIEventDelegate del = list[i];
                    if (del != null && del.isValid)
                    {
                        return(true);
                    }
                }
            }
            return(false);
        }
Ejemplo n.º 6
0
        /// <summary>
        /// Remove an existing event delegate from the list.
        /// </summary>

        static public bool Remove(List <KGUIEventDelegate> list, Callback callback)
        {
            if (list != null)
            {
                for (int i = 0, imax = list.Count; i < imax; ++i)
                {
                    KGUIEventDelegate del = list[i];

                    if (del != null && del.Equals(callback))
                    {
                        list.RemoveAt(i);
                        return(true);
                    }
                }
            }
            return(false);
        }
Ejemplo n.º 7
0
        /// <summary>
        /// Append a new event delegate to the list.
        /// </summary>

        static public KGUIEventDelegate Add(List <KGUIEventDelegate> list, Callback callback, bool oneShot)
        {
            if (list != null)
            {
                for (int i = 0, imax = list.Count; i < imax; ++i)
                {
                    KGUIEventDelegate del = list[i];
                    if (del != null && del.Equals(callback))
                    {
                        return(del);
                    }
                }

                KGUIEventDelegate ed = new KGUIEventDelegate(callback);
                ed.oneShot = oneShot;
                list.Add(ed);
                return(ed);
            }
            Debug.LogWarning("Attempting to add a callback to a list that's null");
            return(null);
        }
Ejemplo n.º 8
0
        /// <summary>
        /// Append a new event delegate to the list.
        /// </summary>

        static public void Add(List <KGUIEventDelegate> list, KGUIEventDelegate ev, bool oneShot)
        {
            if (ev.mRawDelegate || ev.target == null || string.IsNullOrEmpty(ev.methodName))
            {
                Add(list, ev.mCachedCallback, oneShot);
            }
            else if (list != null)
            {
                for (int i = 0, imax = list.Count; i < imax; ++i)
                {
                    KGUIEventDelegate del = list[i];
                    if (del != null && del.Equals(ev))
                    {
                        return;
                    }
                }

                KGUIEventDelegate copy = new KGUIEventDelegate(ev.target, ev.methodName);
                copy.oneShot = oneShot;

                if (ev.mParameters != null && ev.mParameters.Length > 0)
                {
                    copy.mParameters = new Parameter[ev.mParameters.Length];
                    for (int i = 0; i < ev.mParameters.Length; ++i)
                    {
                        copy.mParameters[i] = ev.mParameters[i];
                    }
                }

                list.Add(copy);
            }
            else
            {
                Debug.LogWarning("Attempting to add a callback to a list that's null");
            }
        }
Ejemplo n.º 9
0
        /// <summary>
        /// Append a new event delegate to the list.
        /// </summary>

        static public void Add(List <KGUIEventDelegate> list, KGUIEventDelegate ev)
        {
            Add(list, ev, ev.oneShot);
        }