Exemplo n.º 1
0
        //-----------------------------------------------------------------------------
        // Sword Methods
        //-----------------------------------------------------------------------------

        private void SpawnSwordBeam()
        {
            ItemSword itemSword = Weapon as ItemSword;

            if (itemSword.BeamTracker.IsAvailable && player.IsAtFullHealth && itemSword.Level > Item.Level1)
            {
                // Spawn a sword beam.
                SwordBeam beam = new SwordBeam();
                beam.Owner            = Player;
                beam.Position         = Player.Center + (Directions.ToVector(Player.Direction) * 12.0f);
                beam.ZPosition        = Player.ZPosition;
                beam.Direction        = Player.Direction;
                beam.Physics.Velocity = Directions.ToVector(Player.Direction) * GameSettings.PROJECTILE_SWORD_BEAM_SPEED;

                // Adjust the beam spawn position based on player direction.
                if (Directions.IsHorizontal(player.Direction))
                {
                    beam.Position += new Vector2F(0, 4);
                }
                else if (player.Direction == Directions.Up)
                {
                    beam.Position -= new Vector2F(4, 0);
                }
                else if (player.Direction == Directions.Down)
                {
                    beam.Position += new Vector2F(3, 0);
                }

                player.RoomControl.SpawnEntity(beam);
                itemSword.BeamTracker.TrackEntity(beam);

                AudioSystem.PlaySound(GameData.SOUND_SWORD_BEAM);
            }
        }
Exemplo n.º 2
0
 public UpAttackPlayerState(IPlayer player)
 {
     this.player = player;
     this.player.MoveDirection = Vector2.Zero;
     this.player.Sprite        = LinkSpriteFactory.Instance.CreateUpSwordLinkSprite();
     this.player.Sword         = new WoodenSword(this.player, -Vector2.UnitY);
     SoundFactory.Instance.sfxSword.Play();
     if (this.player.Health == this.player.TotalHealth)
     {
         if (player.ActiveItems.FindAll((IUsableItem item) => item is SwordBeam).Count > 0)
         {
             return;
         }
         IUsableItem swordBeam = new SwordBeam(this.player.Position + 16 * -Vector2.UnitY, -Vector2.UnitY, this.player);
         this.player.ActiveItems.Add(swordBeam);
         SoundFactory.Instance.sfxSwordBeam.Play();
     }
 }