public IGameEventSubject GetGameEventSub(GameEventType eventType) { IGameEventSubject sub = null; if (mGameEvents.ContainsKey(eventType)) { sub = mGameEvents[eventType]; } else { switch (eventType) { case GameEventType.EnemyKilled: sub = new EnemyKilledSubject(); mGameEvents.Add(GameEventType.EnemyKilled, sub); break; case GameEventType.SoldierKilled: sub = new SoldierKilledSubject(); mGameEvents.Add(GameEventType.SoldierKilled, sub); break; case GameEventType.NewStage: sub = new NewStageSubject(); mGameEvents.Add(GameEventType.NewStage, sub); break; default: Debug.LogError("没有对应被观察事件类型:" + eventType + "的主题类!"); break; } } return(sub); }
private IGameEventSubject GetGameEventSubject(ENUM_GameEvent emGameEvent) { if (m_GameEvents.ContainsKey(emGameEvent)) { return(m_GameEvents[emGameEvent]); } IGameEventSubject rtsSubject = null; switch (emGameEvent) { case ENUM_GameEvent.EnemyKilled: rtsSubject = new EnemyKilledSubject(); break; case ENUM_GameEvent.SoldierKilled: rtsSubject = new SoldierKilledSubject(); break; case ENUM_GameEvent.SoldierUpgate: rtsSubject = new SoldierUpgateSubject(); break; case ENUM_GameEvent.NewStage: rtsSubject = new NewStageSubject(); break; default: Debug.Log("还没有针对[" + emGameEvent + "]指定要产生的Subject类"); return(null); } m_GameEvents.Add(emGameEvent, rtsSubject); return(rtsSubject); }
// 設定觀察的主題 public override void SetSubject( IGameEventSubject theSubject ) { if( theSubject is SoldierKilledSubject ) m_SoldierKilledSubject = theSubject as SoldierKilledSubject; if( theSubject is EnemyKilledSubject) m_EnemyKilledSubject = theSubject as EnemyKilledSubject; }
/// <summary> /// 获取游戏事件的主题 /// </summary> /// <param name="emGameEvnet"></param> /// <returns></returns> private IGameEventSubject GetGameEventSubject(ENUM_GameEvent emGameEvnet) { // 判断库里是否存在这个监听 if (m_GameEvents.ContainsKey(emGameEvnet)) { return(m_GameEvents[emGameEvnet]); } IGameEventSubject pSujbect = null; switch (emGameEvnet) { /*************根据对应的枚举生成不同的子类**************/ case ENUM_GameEvent.Null: break; default: Debug.LogError("无对应子类模块关联"); return(null); } m_GameEvents.Add(emGameEvnet, pSujbect); return(pSujbect); }
private IGameEventSubject GetGameEvent(GameEventType eventType) { if (mGameEvents.ContainsKey(eventType) == false) { switch (eventType) { case GameEventType.EnemyKilled: mGameEvents.Add(GameEventType.EnemyKilled, new EnemyKilledSubject()); break; case GameEventType.NewStage: mGameEvents.Add(GameEventType.NewStage, new NewStageSubject()); break; case GameEventType.SoldierKilled: mGameEvents.Add(GameEventType.SoldierKilled, new SoldierKilledSubject()); break; default: Debug.LogError("没有对应事件类型"); break; } } IGameEventSubject sub = mGameEvents[eventType]; return(sub); }
public void NotifySubject(GameEventType eventType) { IGameEventSubject sub = GetGameEvent(eventType); if (sub != null) { sub.Notify(); } }
/// <summary> /// 广播 /// </summary> /// <param name="eventType"></param> /// <param name="args"></param> public void NotifySubject(GameEventType eventType, params int[] args) { IGameEventSubject subject = GetGameEventSubject(eventType); if (subject == null) { return; } subject.Notify(args); }
/// <summary> /// 触发 /// </summary> /// <param name="gameEventType"></param> public void NotifySubject(GameEventType gameEventType) { IGameEventSubject sub = GetGameEventSubject(gameEventType); if (sub == null) { return; } sub.Notify(); }
public void NotifySubjects(GameEventType eventType) { IGameEventSubject sub = GetGameEventSub(eventType); if (sub == null) { return; } sub.NotifyObserver(); }
/// <summary> /// 发布消息,带参数 /// </summary> /// <param name="eventType">消息类型</param> /// <param name="paremter">需要传递的参数(Object方便转换,比如Struct或者Class)</param> public void NotyfySubject(GameEventType eventType, System.Object paremter) { IGameEventSubject sub = GetGameEventSub(eventType); if (sub == null) { return; } sub.Notify(paremter); }
public void RemoveObserver(GameEventType eventType, IGameEventObserver observer) { IGameEventSubject sub = GetGameEvent(eventType); if (sub != null) { sub.RemoveObserver(observer); observer.SetSubject(null); } }
/// <summary> /// 移除 /// </summary> /// <param name="eventType"></param> /// <param name="observer"></param> public void RemoveObserver(GameEventType eventType, IGameEventObserver observer) { IGameEventSubject subject = GetGameEventSubject(eventType); if (subject == null) { return; } subject.RemoveObserver(observer); observer.SetSubject(null); }
// 設定觀察的主題 public override void SetSubject(IGameEventSubject theSubject) { if (theSubject is SoldierKilledSubject) { m_SoldierKilledSubject = theSubject as SoldierKilledSubject; } if (theSubject is EnemyKilledSubject) { m_EnemyKilledSubject = theSubject as EnemyKilledSubject; } }
// 替某一主题注册一个观測者 public void RegisterObserver(ENUM_GameEvent emGameEvnet, IGameEventObserver Observer) { // 取得事件 IGameEventSubject Subject = GetGameEventSubject(emGameEvnet); if (Subject != null) { Subject.Attach(Observer); Observer.SetSubject(Subject); } }
//移除 public void RemoveObserver(GameEventType gameEventType, IGameEventObserver eventObserver) { IGameEventSubject sub = GetGameEventSubject(gameEventType); if (sub == null) { return; } sub.RemoveObserver(eventObserver); eventObserver.SetSubject(null); }
public void RegisterObserver(GameEventType eventType, IGameEventObserver observer) { IGameEventSubject sub = GetGameEvent(eventType); if (sub == null) { return; } sub.RegisterObserver(observer); observer.SetSubject(sub); }
/// <summary> /// 给某一个主题注册观察者 /// </summary> /// <param name="emGameEvnet"></param> /// <param name="Observer"></param> public void RegisterObserver(ENUM_GameEvent emGameEvnet, IGameEventObserver Observer) { IGameEventSubject Subject = GetGameEventSubject(emGameEvnet); //当事件主题不为空,注册进去 if (Subject != null) { Subject.Attach(Observer); Observer.SetSubject(Subject); } }
// 注册一个事件 private IGameEventSubject GetGameEventSubject(ENUM_GameEvent emGameEvnet) { // 是否已經存在 if (m_GameEvents.ContainsKey(emGameEvnet)) { return(m_GameEvents[emGameEvnet]); } // 产生对应的GameEvent IGameEventSubject pSujbect = null; switch (emGameEvnet) { case ENUM_GameEvent.EnemyKilled: pSujbect = new EnemyKilledSubject(); break; case ENUM_GameEvent.SoldierKilled: pSujbect = new SoldierKilledSubject(); break; case ENUM_GameEvent.SoldierUpgate: pSujbect = new SoldierUpgateSubject(); break; case ENUM_GameEvent.NewStage: pSujbect = new NewStageSubject(); break; default: Debug.LogWarning("还沒有针对[" + emGameEvnet + "]指定要产生的Subject类别"); return(null); } // 加入后并回传 m_GameEvents.Add(emGameEvnet, pSujbect); return(pSujbect); }
public void RemoveObserver(GameEventType eventType, IGameEventObserver observer) { //if (mGameEvents.ContainsKey(eventType)) //{ // IGameEventSubject sub = mGameEvents[eventType]; // sub.RemoveObserver(observer); //注册sub事件的观察者 // observer.SetSubject(null); // 设置观察者观察的主题。 //} //else //{ // Debug.LogError("没有对应被观察事件类型:" + eventType + "的主题类!"); //} IGameEventSubject sub = GetGameEventSub(eventType); if (sub == null) { return; } sub.RemoveObserver(observer); //注册sub事件的观察者 observer.SetSubject(null); // 设置观察者观察的主题。 }
// 註冊一個事件 private IGameEventSubject GetGameEventSubject(ENUM_GameEvent emGameEvnet) { // 是否已經存在 if (m_GameEvents.ContainsKey(emGameEvnet)) { return(m_GameEvents[emGameEvnet]); } // 產生對映的GameEvent IGameEventSubject pSujbect = null; switch (emGameEvnet) { /* * case ENUM_GameEvent.EnemyKilled: * pSujbect = new EnemyKilledSubject(); * break; * case ENUM_GameEvent.SoldierKilled: * pSujbect = new SoldierKilledSubject(); * break; * case ENUM_GameEvent.SoldierUpgate: * pSujbect = new SoldierUpgateSubject(); * break; * case ENUM_GameEvent.NewStage: * pSujbect = new NewStageSubject(); * break; */ default: Debug.LogWarning("還沒有針對[" + emGameEvnet + "]指定要產生的Subject類別"); return(null); } // 加入後並回傳 m_GameEvents.Add(emGameEvnet, pSujbect); return(pSujbect); }
public override void SetSubject(IGameEventSubject subject) { return; }
public override void SetSubject(IGameEventSubject sub) { NewDaySubject = sub as NewDaySubject; }
public abstract void SetSubject( IGameEventSubject Subject );
// 設定觀察的主題 public override void SetSubject( IGameEventSubject Subject ) { m_Subject = Subject as NewStageSubject; }
public override void SetSubject(IGameEventSubject sub) { mSubject = sub as PlayerOnHurtSubject; }
public override void SetSubject(IGameEventSubject sub) { mSubject = sub as NewStageSubject; }
// 設定觀察的主題 public override void SetSubject( IGameEventSubject Subject ) { m_Subject = Subject as EnemyKilledSubject; }
public override void SetSubject(IGameEventSubject eventSubject) { }
// 设定观察的主题 public override void SetSubject(IGameEventSubject Subject) { m_Subject = Subject as SoldierKilledSubject; }
public override void SetSubject(IGameEventSubject sub) { mSubject = sub as CheckPullWaterSubject; }
// 設定觀察的主題 public override void SetSubject( IGameEventSubject Subject ) { m_Subject = Subject as SoldierKilledSubject; }
public override void SetSubject(IGameEventSubject sub) { //m_Subject = sub as EnemyKilledSubject; }
public abstract void SetSubject(IGameEventSubject theSubject);
public override void SetSubject(IGameEventSubject subject) { mSubject = subject as EnemyKilledSubject;; }
public abstract void SetSubject(IGameEventSubject sub);
// 設定觀察的主題 public override void SetSubject( IGameEventSubject Subject ) { m_Subject = Subject as SoldierUpgateSubject; }