//----------------------------------------------------------------------------- // 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); } }
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(); } }