Example #1
0
        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();
            });
        }