/// <summary> /// Unsubscribe all subscribers from this instance events. /// </summary> private void UnsubscribeEvents() { if (OnHealthChanges != null) { foreach (Action <ChangedHealthArgs> handler in OnHealthChanges.GetInvocationList()) { OnHealthChanges -= handler; } } if (OnStopShowing != null) { foreach (Action <IShowable> handler in OnStopShowing.GetInvocationList()) { OnStopShowing -= handler; } } if (OnShowableDataChanges != null) { foreach (Action <ShowableData> handler in OnShowableDataChanges.GetInvocationList()) { OnShowableDataChanges -= handler; } } }
/// <summary> /// Dies this instance. /// </summary> protected virtual void Die() { ResetTarget(); EffectsInspector.ClearEffects(); OnDie?.Invoke(this); OnStopShowing?.Invoke(this); SetSelected(false); UpdateSelfTarget(show: false); DieFinalize(); }
/// <summary> /// Called when any squad unit has died. /// </summary> /// <param name="died">The died.</param> private void OnUnitDieHandler(IDying died) { died.OnDie -= OnUnitDieHandler; if (died is Unit unit) { unit.OnHealthChanges -= OnUnitHealthChangesHandler; units.Remove(unit); if (units.Count > 0) { var changedHealth = GetChangedHealthArgs(); OnHealthChanges?.Invoke(changedHealth); } else { OnStopShowing?.Invoke(this); OnDie?.Invoke(this); } } }
/// <summary> /// The throne is dying. /// </summary> private void Die() { OnStopShowing?.Invoke(this); UnsubscribeEvents(); Debug.Log("GAME OVER!!!"); }
/// <summary> /// Called when the attached Behaviour is destroying. /// </summary> private void OnDestroy() { PlayerResources.OnGoldChange -= OnGoldChangeHandler; OnStopShowing?.Invoke(this); }
/// <summary> /// Called when the attached Behaviour is destroying. /// </summary> private void OnDestroy() => OnStopShowing?.Invoke(this);