public void UnsubscribeToSpellCooldownEvents(SpellCooldownEventHandler newObserver) { if (IsObserverSpellCooldownInList(newObserver)) { m_spellCooldownsEvents -= new SpellCooldownEventHandler(newObserver); } }
public void SubscribeToSpellCooldownEvents(SpellCooldownEventHandler newObserver) { if (!IsObserverSpellCooldownInList(newObserver)) { m_spellCooldownsEvents += new SpellCooldownEventHandler(newObserver); m_spellCooldownsEvents.Invoke(GetSpellCooldownsAsPercent()); } }
private bool IsObserverSpellCooldownInList(SpellCooldownEventHandler newObserver) { if (m_spellCooldownsEvents != null) { foreach (var existingHandler in m_spellCooldownsEvents.GetInvocationList()) { if (Delegate.Equals(existingHandler, newObserver))//existingHandler == newObserver) //If it doesn't work use : if(objA.Method.Name == objB.Method.Name && objA.Target.GetType().FullName == objB.Target.GetType().FullName) OR Delegate.Equals(objA, objB) { return(true); } } } return(false); }