예제 #1
0
        public void RemoveEventListener(int _index)
        {
            if (dic.ContainsKey(_index))
            {
                SuperFunctionUnit unit = dic[_index];

                dic.Remove(_index);

                Dictionary <string, List <SuperFunctionUnit> > tmpDic = dic2[unit.target];

                List <SuperFunctionUnit> tmpList = tmpDic[unit.eventName];

                tmpList.Remove(unit);

                if (tmpList.Count == 0)
                {
                    tmpDic.Remove(unit.eventName);

                    if (tmpDic.Count == 0)
                    {
                        DestroyControl(unit.target);
                    }
                }
            }
        }
예제 #2
0
        public void RemoveEventListener(int _index)
        {
            if (dic.ContainsKey(_index))
            {
                SuperFunctionUnit unit = dic[_index];

                dic.Remove(_index);

                Dictionary <string, List <SuperFunctionUnit> > tmpDic = dic2[unit.target];

                List <SuperFunctionUnit> tmpList = tmpDic[unit.eventName];

                tmpList.Remove(unit);

                if (tmpList.Count == 0)
                {
                    tmpDic.Remove(unit.eventName);

                    if (tmpDic.Count == 0)
                    {
                        SuperFunctionControl control = unit.target.GetComponent <SuperFunctionControl>();

                        control.isDestroy = true;

                        GameObject.Destroy(control);

                        dic2.Remove(unit.target);
                    }
                }
            }
        }
예제 #3
0
        public int AddEventListener(GameObject _target, string _eventName, Action <SuperEvent> _callBack)
        {
            int result = GetIndex();

            SuperFunctionUnit unit = new SuperFunctionUnit(_target, _eventName, _callBack, result);

            dic.Add(result, unit);

            Dictionary <string, List <SuperFunctionUnit> > tmpDic;

            if (dic2.ContainsKey(_target))
            {
                tmpDic = dic2[_target];
            }
            else
            {
                _target.AddComponent <SuperFunctionControl>();

                tmpDic = new Dictionary <string, List <SuperFunctionUnit> >();

                dic2.Add(_target, tmpDic);
            }

            List <SuperFunctionUnit> tmpList;

            if (tmpDic.ContainsKey(_eventName))
            {
                tmpList = tmpDic[_eventName];
            }
            else
            {
                tmpList = new List <SuperFunctionUnit>();

                tmpDic.Add(_eventName, tmpList);
            }

            tmpList.Add(unit);

            return(result);
        }
예제 #4
0
        public void DispatchEvent(GameObject _target, SuperEvent _event)
        {
            if (dic2.ContainsKey(_target))
            {
                Dictionary <string, List <SuperFunctionUnit> > tmpDic = dic2[_target];

                if (tmpDic.ContainsKey(_event.eventName))
                {
                    List <SuperFunctionUnit> tmpList = tmpDic[_event.eventName];

                    SuperEvent[] eventList = new SuperEvent[tmpList.Count];

                    SuperFunctionUnit[] unitList = new SuperFunctionUnit[tmpList.Count];

                    for (int i = 0; i < tmpList.Count; i++)
                    {
                        SuperFunctionUnit unit = tmpList[i];

                        SuperEvent tmpEvent = new SuperEvent(_event.eventName);

                        tmpEvent.target = _target;

                        tmpEvent.data = _event.data;

                        tmpEvent.index = unit.index;

                        eventList[i] = tmpEvent;

                        unitList[i] = unit;
                    }

                    for (int i = 0; i < eventList.Length; i++)
                    {
                        unitList[i].callBack(eventList[i]);
                    }
                }
            }
        }
예제 #5
0
        public void RemoveEventListener(int _index)
        {
            if (dispatchEventIndex > 0)
            {
                Action del = delegate() {
                    RemoveEventListener(_index);
                };

                delegateList.Add(del);

                return;
            }

            if (dic.ContainsKey(_index))
            {
                SuperFunctionUnit unit = dic[_index];

                dic.Remove(_index);

                Dictionary <string, List <SuperFunctionUnit> > tmpDic = dic2[unit.target];

                List <SuperFunctionUnit> tmpList = tmpDic[unit.eventName];

                tmpList.Remove(unit);

                if (tmpList.Count == 0)
                {
                    tmpDic.Remove(unit.eventName);

                    if (tmpDic.Count == 0)
                    {
                        dic2.Remove(unit.target);
                    }
                }
            }
        }
예제 #6
0
        private int AddEventListener(GameObject _target, string _eventName, Action <SuperEvent> _callBack, int _index)
        {
            SuperFunctionUnit unit = new SuperFunctionUnit(_target, _eventName, _callBack, _index);

            dic.Add(_index, unit);

            Dictionary <string, List <SuperFunctionUnit> > tmpDic;

            if (dic2.ContainsKey(_target))
            {
                tmpDic = dic2[_target];
            }
            else
            {
                tmpDic = new Dictionary <string, List <SuperFunctionUnit> >();

                dic2.Add(_target, tmpDic);
            }

            List <SuperFunctionUnit> tmpList;

            if (tmpDic.ContainsKey(_eventName))
            {
                tmpList = tmpDic[_eventName];
            }
            else
            {
                tmpList = new List <SuperFunctionUnit>();

                tmpDic.Add(_eventName, tmpList);
            }

            tmpList.Add(unit);

            return(_index);
        }