public static IEnumerator DoSteamEffect(IPortraitable portrait, Color color) { ExplosionView ev = ObjectPoolManager.Instance.Get(EffectsManager.Instance.SteamBurst); ev.Play(); portrait.ParentToEffects(ev.gameObject); yield return(new WaitUntil(() => ev.IsDone)); ObjectPoolManager.Instance.Return(ev); }
public static IEnumerator DoSteamEffect(IPortraitable portrait, Color color) { ExplosionView ev = ObjectPoolManager.Instance.Get(EffectsManager.Instance.SteamBurst); ev.Play(); ev.Color = color; portrait.ParentToEffects(ev.gameObject); yield return(new WaitUntil(() => portrait.RectTransform != null)); Main.Instance.StartCoroutine(Shake(portrait.RectTransform, 100, 0.5f)); yield return(new WaitUntil(() => ev.IsDone)); ObjectPoolManager.Instance.Return(ev); }
/// <summary> /// Death effect for a portrait. /// </summary> /// <param name="portrait">The portrait.</param> /// <param name="effectHolder">The effect holder.</param> /// <param name="fadeDuration">Duration of the fade.</param> /// <returns></returns> public static IEnumerator DoDeathEffect(IPortraitable portrait, float fadeDuration) { Rect rect = portrait.RectTransform.rect; Vector2 dimensions = new Vector2(rect.width, rect.height); ExplosionView ev = ObjectPoolManager.Instance.Get(EffectsManager.Instance.Explosion); ev.Dimensions = dimensions; portrait.ParentToEffects(ev.gameObject); ev.Play(); yield return(DoHitSplat(portrait, "DEFEAT", Color.red, Util.GetSprite("skull-crossed-bones"))); yield return(new WaitUntil(() => ev)); ObjectPoolManager.Instance.Return(ev); }