예제 #1
0
    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);
    }
예제 #2
0
    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);
        });
    }