}//effector public void RemoveStatusEffect(IStatusEffector effector) { if(this.Effectors == null) return; if(!this.Effectors.Contains(effector)) return; effector.RemoveEffect(this.Owner); this.Effectors.Remove(effector); this.DebugStatusApplied.Remove(effector.GetName()); }//RemoveStatusEffect
}//Update private void checkEffectorTimeout() { if(this.Effectors == null || this.Effectors.Count == 0) return; List<IStatusEffector> origEffectors = this.Effectors; for (int i = 0; i < origEffectors.Count; i++) { IStatusEffector effect = origEffectors[i]; float currDuration = effect.GetCurrentDuration(); if(currDuration < 0) continue; if(currDuration >= effect.GetMaxDuration()) RemoveStatusEffect(effect); }//for }//checkEffectorTImeout
}//checkEffectorTImeout public void ApplyStatusEffect(IStatusEffector effector) { if (this.Effectors == null) { this.Effectors = new List<IStatusEffector>(); return; } if(this.Effectors.Contains(effector)) return; if (effector == null) { #if UNITY_EDITOR Debug.LogWarning("ApplyStatusEffect: Effector is null! [" + this.name + "]"); #endif return; } effector.ApplyEffect(Owner); this.Effectors.Add(effector); this.DebugStatusApplied.Add(effector.GetName()); }//effector