/// <summary>
 /// Initializes a new instance of the <see cref="SniperProjectile"/> class.
 /// </summary>
 /// <param name="enemy"> The enemy to follow. </param>
 /// <param name="spawnPosition"> The spawn position. </param>
 /// <param name="attackDamage"> The attack damage. </param>
 /// <param name="towerSource"> The tower that spawned this projectile. </param>
 public SniperProjectile(Enemy enemy, PointF spawnPosition, float attackDamage, Tower towerSource)
     : base(enemy, attackDamage, towerSource, spawnPosition)
 {
     // Set tower properties
     this.SpriteSheetSource = new Rectangle(102, 200, 9, 5);
     this.MoveSpeed = 100;
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="FrostProjectile"/> class.
 /// </summary>
 /// <param name="enemy"> The enemy to follow. </param>
 /// <param name="spawnPosition"> The spawn position. </param>
 /// <param name="attackDamage"> The attack damage. </param>
 /// <param name="slowDuration"> The time in seconds to slow the enemy. </param>
 /// <param name="slowAmount"> The effect of the slow, the enemies speed is multiplied by this value. </param>
 /// <param name="towerSource"> The tower that spawned this projectile. </param>
 public FrostProjectile(Enemy enemy, PointF spawnPosition, float attackDamage, float slowDuration, float slowAmount, Tower towerSource)
     : base(enemy, attackDamage, towerSource, spawnPosition)
 {
     // Set tower properties
     this.slowDuration = slowDuration;
     this.slowAmount = slowAmount;
     this.SpriteSheetSource = new Rectangle(100, 187, 13, 6);
     this.MoveSpeed = 200;
 }
        /// <summary>
        /// Initializes a new instance of the <see cref="Projectile"/> class.
        /// </summary>
        /// <param name="enemy"> The enemy to follow. </param>
        /// <param name="attackDamage"> The attack damage. </param>
        /// <param name="towerSource"> The tower that spawned this projectile. </param>
        /// /// <param name="spawnPosition"> The spawn position. </param>
        public Projectile(Enemy enemy, float attackDamage, Tower towerSource, PointF spawnPosition)
        {
            // Assign members
            this.Position = spawnPosition;
            this.EnemyTarget = enemy;
            this.CurrentTarget = this.EnemyTarget.Position;
            this.attackDamage = attackDamage;
            this.towerSource = towerSource;

            // Set the depth level of projectiles
            this.DepthLevel = GameSettings.ProjectileDepthLevel;
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="StandardProjectile"/> class.
 /// </summary>
 /// <param name="enemy"> The enemy to follow. </param>
 /// <param name="spawnPosition"> The spawn position. </param>
 /// <param name="attackDamage"> The attack damage. </param>
 /// <param name="towerSource"> The tower that spawned this projectile. </param>
 public StandardProjectile(Enemy enemy, PointF spawnPosition, float attackDamage, Tower towerSource)
     : base(enemy, attackDamage, towerSource, spawnPosition)
 {
     this.SpriteSheetSource = new Rectangle(100, 179, 14, 7);
     this.MoveSpeed = 200;
 }