/// <summary> /// Add an effect into the holder then execute it, a copy will be made internaly to avoid references issues. /// </summary> /// <param name="ActiveSkillEffect"></param> /// <param name="ActiveSkillName"></param> public void AddAndExecuteEffect(BaseEffect ActiveSkillEffect, string ActiveSkillName) { ActiveSkillEffect = ActiveSkillEffect.Copy(); //Add the SkillEffect to the DicActiveEffect to activate them later. if (!DicActiveEffect.ContainsKey(ActiveSkillName)) { DicActiveEffect.Add(ActiveSkillName, new List <BaseEffect>()); } int EffectCount = 0; for (int i = DicActiveEffect[ActiveSkillName].Count - 1; i >= 0; --i) { if (DicActiveEffect[ActiveSkillName][i].Equals(ActiveSkillEffect)) { ++EffectCount; } } if ((ActiveSkillEffect.IsStacking && EffectCount < ActiveSkillEffect.MaximumStack) || EffectCount <= 0) { DicActiveEffect[ActiveSkillName].Add(ActiveSkillEffect); ActiveSkillEffect.ExecuteEffect(); } }
/// <summary> /// Add an effect into the holder then execute it. /// </summary> /// <param name="ActiveSkillEffect"></param> /// <param name="ActiveSkillName"></param> public void AddAndExecuteEffectWithoutCopy(BaseEffect ActiveSkillEffect, string ActiveSkillName) { if (CanAddEffect(ActiveSkillEffect, ActiveSkillName)) { ActiveSkillEffect.Lifetime = ActiveSkillEffect.LifetimeTypeValue; DicActiveEffect[ActiveSkillName].Add(ActiveSkillEffect); ActiveSkillEffect.ExecuteEffect(); } }
/// <summary> /// Add an effect into the holder then execute it, a copy will be made internaly to avoid references issues. /// </summary> /// <param name="ActiveSkillEffect"></param> /// <param name="ActiveSkillName"></param> public void AddAndExecuteEffect(BaseEffect ActiveSkillEffect, string ActiveSkillName, string NewLifetimeType = "") { ActiveSkillEffect = ActiveSkillEffect.Copy(); if (CanAddEffect(ActiveSkillEffect, ActiveSkillName)) { if (NewLifetimeType != string.Empty) { ActiveSkillEffect.LifetimeType = NewLifetimeType; } ActiveSkillEffect.Lifetime = ActiveSkillEffect.LifetimeTypeValue; DicActiveEffect[ActiveSkillName].Add(ActiveSkillEffect); ActiveSkillEffect.ExecuteEffect(); } }
public void ExecuteAllEffects(List <string> ListIgnoreSkill = null) { foreach (KeyValuePair <string, List <BaseEffect> > ActiveListEffect in DicActiveEffect) { if (ListIgnoreSkill != null && ListIgnoreSkill.Contains(ActiveListEffect.Key)) { continue; } for (int E = ActiveListEffect.Value.Count - 1; E >= 0; --E) { BaseEffect ActiveEffect = ActiveListEffect.Value[E]; ActiveEffect.ExecuteEffect(); } } }