public void AddBuffDebuff(IEffect effect) { { switch (effect.TimeType) { case TimeTypeEnum.Instant: effect.Action(this); break; case TimeTypeEnum.Uniform: if (effect.Buff) { StartCoroutine(TimeCycle( effect.ActionTime / (effect.Point * effect.ActionTime), effect.MaxTime, effect.Action, effect.EffectTag)); } else { if (!uniformDebuffDictionary.ContainsKey(effect.EffectTag)) { uniformDebuffDictionary.Add(effect.EffectTag, new UniformDebuffBuffer(this)); } uniformDebuffDictionary[effect.EffectTag].AddEffect(effect); } break; case TimeTypeEnum.Stable: if (effect.Buff) { effect.Action(this); StartCoroutine(TimeCycle(effect.MaxTime, effect.MaxTime, effect.DisableAction, effect.EffectTag)); } else { if (!stableDebuffDictionary.ContainsKey(effect.EffectTag)) { stableDebuffDictionary.Add(effect.EffectTag, new StableDebuffBuffer(this)); } stableDebuffDictionary[effect.EffectTag].AddEffect(effect); } break; } } }
public int AddStableEffect(IEffect effect) { stableEffects.Add(effect); effect.Action(this); return(stableEffects.Count - 1); }