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); } } } }
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); } } } }
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); }
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]); } } } }
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); } } } }
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); }