public bool OnReceiverEffect(List <EffectReceiver> effectList) { foreach (EffectReceiver baseEffect in effectList) { EffectReceiver newEffect = new EffectReceiver(baseEffect); if ((int)newEffect.Status == 0) { if (!TakeDamage(PrototypeGameMode.Instance.GetPoringByIndex(newEffect.OwnerId), newEffect.Damage)) { return(false); } continue; } if (newEffect.Status.CheckHasStatus(SkillStatus.Posion) && PrototypeGameMode.Instance.IsMineTurn()) { newEffect.EffectDuration -= 1; } var v = m_currentEffects.Find(fx => fx.Status == newEffect.Status); if (v != null) { m_currentEffects[m_currentEffects.IndexOf(v)] = newEffect; } else { m_currentEffects.Add(newEffect); StatusIconData icon = new StatusIconData() { status = newEffect.Status, image = StatusIconCreater.Instance.CreateIcon(newEffect.Status, iconRoot) }; m_currentIconEffects.Add(icon); } } return(true); }
private void CountDownEffectDuration() { List <EffectReceiver> removeKey = new List <EffectReceiver>(); m_currentEffects.ForEach(item => { item.EffectDuration--; if (item.EffectDuration <= 0) { removeKey.Add(item); } }); removeKey.ForEach(statusKey => { m_currentEffects.Remove(statusKey); StatusIconData i = m_currentIconEffects.Find(ci => ci.status == statusKey.Status); Destroy(i.image.gameObject); m_currentIconEffects.Remove(i); }); }