Пример #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();
            });
        }
Пример #2
0
        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);
        }