/// <summary> /// 广播事件; /// </summary> /// <param name="receiver">接收者</param> /// <param name="type">事件类型</param> /// <param name="eventArgs">事件参数</param> public void FireEvent(ObjectEx receiver, EventType type, IEventArgs eventArgs) { if (null == receiver) { LogHelper.PrintError("[EventMgr]FireEvent error,the receiver is null."); return; } Dictionary <EventType, List <EventHandler> > dict; List <EventHandler> list; if (EventDict.TryGetValue(receiver, out dict)) { if (null != dict && dict.Count > 0) { if (dict.TryGetValue(type, out list)) { if (null != list && list.Count > 0) { foreach (var callback in list) { if (callback != null) { callback(eventArgs); } } } } } } }
/// <summary> /// 添加事件; /// </summary> /// <param name="receiver">接收者</param> /// <param name="type">事件类型</param> /// <param name="callBack">事件回调</param> public void AddEvent(ObjectEx receiver, EventType type, EventHandler callBack) { if (null == receiver) { LogHelper.PrintError("[EventMgr]AddEvent error,the receiver is null."); return; } Dictionary <EventType, List <EventHandler> > dict; List <EventHandler> list; if (!EventDict.TryGetValue(receiver, out dict)) { EventDict[receiver] = new Dictionary <EventType, List <EventHandler> >(); } dict = EventDict[receiver]; if (!dict.TryGetValue(type, out list)) { list = new List <EventHandler>(); dict[type] = list; } list = dict[type]; if (list.Contains(callBack)) { LogHelper.PrintWarning(string.Format("[EventMgr]AddEvent repeat,receiver:{0},eventType:{1}.", receiver.ID, type.ToString())); } else { list.Add(callBack); } }
protected override void OnAttachObject(ObjectEx owner) { base.OnAttachObject(owner); //初始化; _initModel = true; CombineModel(); }
/// <summary> /// 移除Component; /// </summary> /// <typeparam name="T"></typeparam> /// <param name="owner"></param> public void ReleaseComponent <T>(ObjectEx owner) where T : AbsComponent, new() { if (null == owner) { return; } owner.ReleaseComponent <T>(); }
/// <summary> /// 创建Component; /// </summary> /// <typeparam name="T"></typeparam> /// <param name="owner"></param> /// <returns></returns> public T CreateComponent <T>(ObjectEx owner) where T : AbsComponent, new() { if (null != owner && owner.AddComponent <T>()) { return(owner.GetComponent <T>()); } else { LogHelper.PrintError("[ComponentMgr]CreateComponent " + typeof(T).ToString() + " error!"); return(null); } }
/// <summary> /// 移除事件; /// </summary> /// <param name="receiver">接收者</param> public void RemoveEvent(ObjectEx receiver) { if (null == receiver) { LogHelper.PrintError("[EventMgr]RemoveEvent error,the receiver is null."); return; } if (EventDict.TryGetValue(receiver, out var dict)) { EventDict.Remove(receiver); } }
/// <summary> /// 移除事件; /// </summary> /// <param name="receiver">接收者</param> public void RemoveEvent(ObjectEx receiver) { if (null == receiver) { LogHelper.PrintError("[EventMgr]RemoveEvent error,the receiver is null."); return; } Dictionary <EventType, List <EventHandler> > dict; if (EventDict.TryGetValue(receiver, out dict)) { EventDict.Remove(receiver); } }
/// <summary> /// 初始化Component; /// </summary> /// <param name="entity">entity</param> /// <param name="go">gameObject</param> public void Initialize(ObjectEx owner) { Enable = true; OnAttachObjectEx(owner); if (Entity.gameObjectEx.IsLoadFinish) { OnAttachGoEx(Entity.gameObjectEx); } else { Entity.gameObjectEx.AddLoadFinishHandler(OnAttachGoEx); } EventSubscribe(); InitializeEx(); }
/// <summary> /// 移除事件; /// </summary> /// <param name="receiver">接收者</param> /// <param name="type">事件类型</param> public void RemoveEvent(ObjectEx receiver, EventType type) { if (null == receiver) { LogHelper.PrintError("[EventMgr]RemoveEvent error,the receiver is null."); return; } if (EventDict.TryGetValue(receiver, out var dict) && null != dict && dict.Count > 0) { if (dict.ContainsKey(type)) { dict.Remove(type); } } }
/// <summary> /// 广播事件; /// </summary> /// <param name="receiver">接收者</param> /// <param name="type">事件类型</param> /// <param name="eventArgs">事件参数</param> public void FireEvent(ObjectEx receiver, EventType type, IEventArgs eventArgs) { if (null == receiver) { LogHelper.PrintError("[EventMgr]FireEvent error,the receiver is null."); return; } if (EventDict.TryGetValue(receiver, out var dict) && null != dict && dict.Count > 0) { if (dict.TryGetValue(type, out var list) && null != list && list.Count > 0) { foreach (var callback in list) { callback?.Invoke(eventArgs); } } } }
/// <summary> /// Component附加Entity; /// </summary> /// <param name="entity"></param> protected virtual void OnAttachObjectEx(ObjectEx owner) { Owner = owner; Entity = owner as AbsEntity; }