/// <summary> /// Initializes a new instance of the <see cref="MagicEffect"/> class. /// </summary> /// <param name="duration">The duration.</param> /// <param name="definition">The definition.</param> /// <param name="powerUps">The power ups.</param> public MagicEffect(TimeSpan duration, MagicEffectDefinition definition, params ElementWithTarget[] powerUps) { this.PowerUpElements = powerUps; this.Definition = definition; this.Duration = duration; this.finishTimer = new Timer(o => this.OnEffectTimeOut(), null, (int)this.Duration.TotalMilliseconds, Timeout.Infinite); }
/// <summary> /// Initializes a new instance of the <see cref="MagicEffect"/> class. /// </summary> /// <param name="powerUp">The power up.</param> /// <param name="definition">The definition.</param> /// <param name="duration">The duration.</param> public MagicEffect(IElement powerUp, MagicEffectDefinition definition, TimeSpan duration) { this.PowerUpElements = Enumerable.Repeat(new ElementWithTarget(powerUp, definition.PowerUpDefinition.TargetAttribute), 1); this.Definition = definition; this.Duration = duration; this.finishTimer = new Timer(o => this.OnEffectTimeOut(), null, (int)this.Duration.TotalMilliseconds, Timeout.Infinite); }
/// <summary> /// Initializes a new instance of the <see cref="PoisonMagicEffect"/> class. /// </summary> /// <param name="powerUp">The power up.</param> /// <param name="definition">The definition.</param> /// <param name="duration">The duration.</param> /// <param name="attacker">The attacker.</param> /// <param name="owner">The owner.</param> public PoisonMagicEffect(IElement powerUp, MagicEffectDefinition definition, TimeSpan duration, IAttacker attacker, IAttackable owner) : base(powerUp, definition, duration) { this.Attacker = attacker; this.Owner = owner; this.damageTimer = new System.Timers.Timer(3000); this.damageTimer.Elapsed += this.OnDamageTimerElapsed; this.damageTimer.Start(); }
/// <summary> /// Initializes a new instance of the <see cref="MagicEffect"/> class. /// </summary> /// <param name="powerUp">The power up.</param> /// <param name="definition">The definition.</param> /// <param name="duration">The duration.</param> public MagicEffect(IElement powerUp, MagicEffectDefinition definition, TimeSpan duration) : this(duration, definition, new ElementWithTarget(powerUp, definition.PowerUpDefinition.TargetAttribute)) { }
/// <summary> /// Initializes a new instance of the <see cref="MagicEffect"/> class. /// </summary> /// <param name="powerUp">The power up.</param> /// <param name="definition">The definition.</param> /// <param name="duration">The duration.</param> public MagicEffect(IElement powerUp, MagicEffectDefinition definition, TimeSpan duration) : this(duration, definition, new ElementWithTarget(powerUp, definition.PowerUpDefinition?.TargetAttribute ?? throw new InvalidOperationException($"MagicEffectDefinition {definition.GetId()} has no target attribute.")))