Beispiel #1
0
    public bool AddEffect(UnitEffect new_effect)
    {
        if (ActiveEffects == null)
        {
            ActiveEffects = new List <UnitEffect>();
        }


        if (!ActiveEffects.Contains(new_effect))
        {
            if (new_effect.ReplaceEffect)
            {
                UnitEffect duplicate_on_unit = GetEffect(new_effect.Unique_ID);
                if (duplicate_on_unit != null)
                {
                    int duplicate_duration = duplicate_on_unit.GetTicksAlive();
                    new_effect.SetDurationAlive(duplicate_duration);
                    new_effect.MaxDuration = duplicate_duration + new_effect.GetMaxDuration();

                    ;                    MDebug.Log("^effects Removing Duplicate " + duplicate_on_unit.ToString());
                    ActiveEffects.Remove(duplicate_on_unit);
                    Destroy(duplicate_on_unit);
                }
            }

            ActiveEffects.Add(new_effect);
            MDebug.Log("^effects Added Effect to " + m_Unit.GetID() + " \n" + new_effect.ToString());
            new_effect.OnEffectTick += OnEffectTick;

            //MDebug.Log(" EFFECT_ADDED " + new_effect.GetShortHandle());
            new_effect.OnEffectExpired += OnEffectExpired;

            if (OnEffectAdded != null)
            {
                OnEffectAdded(new_effect);
            }
            return(true);
        }
        else
        {
            MDebug.Log("^effects Already has this effect");
        }

        MDebug.Log("^effects COULD NOT ADD EFFECT " + new_effect.ToString());
        return(false);
    }