Ejemplo n.º 1
0
        /// <summary>
        /// Create's a bullet in the direction of the ship
        /// </summary>
        /// <returns>Newly created bullet</returns>
        public bool Fire(DateTime now)
        {
            var timeSinceLastFired = (now - LastFired).TotalMilliseconds;
            var newEnergy          = Math.Min(Energy + timeSinceLastFired / ENERGY_RECHARGE_RATE, 1);

            if (timeSinceLastFired >= MIN_FIRE_RATE && newEnergy > ENERGY_TO_FIRE)
            {
                var shipCenter    = new Vector2(_me.MovementController.Position.X + HALF_SHIP_WIDTH, _me.MovementController.Position.Y + HALF_SHIP_HEIGHT);
                var shipDirection = new Vector2(_me.MovementController.Rotation);
                var startPosition = new Vector2((shipCenter + (BULLET_LEAD * shipDirection)) - BULLET_OFFSET);

                Bullet spawnedBullet = new Bullet(startPosition, shipDirection, _me, DamageModifier);
                _bulletManager.Add(spawnedBullet);

                LastFired = now;

                _me.Fired(spawnedBullet);

                Energy = newEnergy - ENERGY_TO_FIRE;
                return(true);
            }
            return(false);
        }