protected void OnHit() { // Loop through all the OnHitEffects that are specified in the associated Tower's Weapon data. OnHitEffects.ForEach(x => { EffectController effectController = null; if (x.AreaOfEffect == 0f) { switch (x.Type) { case EffectType.Damage: effectController = EffectController.Create <EffectDamage>(x.Identity, Target); break; case EffectType.Slow: effectController = EffectController.Create <EffectSlow>(x.Identity, Target); break; } } else { switch (x.Type) { case EffectType.Damage: effectController = EffectControllerMulti.Create <EffectDamage>(TargetsInRange(x.AreaOfEffect)); break; case EffectType.Slow: effectController = EffectControllerMulti.Create <EffectSlow>(TargetsInRange(x.AreaOfEffect)); break; } } effectController.SetSource(cachedPosition); effectController.SetEffectData(x); effectController.SetParams(x); effectController.ApplyEffect(); }); }
public static EffectControllerMulti Create <T>(List <GameObject> targets, Action <T> onAddEffect = null) where T : Effect { var instance = new EffectControllerMulti(); instance.AddEffect(targets, onAddEffect); return(instance); }