示例#1
0
 /// <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);
 }
示例#2
0
        /// <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);
        }
示例#3
0
 /// <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();
 }
示例#4
0
 /// <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))
 {
 }
示例#5
0
 /// <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.")))