public void Update(TimeSpan elapsedInFrame) { JumpMotion.Active = Player.Motion.CurrentMotionPerSecond.Y == 0 && Input.GetButtonPressed(GameKeys.Jump); Player.Direction = Input.Pad.GetInputDirection(Player.Direction, Axis.X); bool isWalking = Input.Pad.GetInputAmount(Axis.X) != 0; if (Player.Motion.CurrentMotionPerSecond.Y == 0 && isAttacking.IsActive) { isWalking = false; } WalkMotion.Motion.Active = isWalking; if (Player.IsOnLadder.Active) { if (Player.Direction.Axis() == Axis.X) { Player.Direction = Direction.Up; } Player.Direction = Input.Pad.GetInputDirection(Direction.Up, Axis.Y); ClimbMotion.Active = true; ClimbMotion.Motion.Active = Input.Pad.GetInputAmount(Axis.Y) != 0; } else { ClimbMotion.Active = false; } if (!Player.IsOnGround.Active) { highestPointAboveGround = (float)Math.Min(highestPointAboveGround, Player.Position.Bottom); } if (hasLandedOnGround.JustStarted()) { float maxSoundDistance = 64; var distanceFallen = ((float)Player.Position.Bottom - highestPointAboveGround).KeepInsideRange(0, maxSoundDistance); var distanceFallenPct = distanceFallen / maxSoundDistance; if (distanceFallen > 0.1) { AudioEngine.Instance.PlaySound(Sounds.HitGround, distanceFallenPct); } highestPointAboveGround = Int32.MaxValue; } if (isAttacking.JustStarted()) { AudioEngine.Instance.PlaySound(Sounds.Swish); var attack = new Swoosh(); if (Player.HasBetterAttack) { attack.PositionRelativeTo(Player, 8, -4); attack.MoveInDirection(Player.Direction, Config.Provider.GetValue <int>("better attack speed")); } else { attack.StayRelativeTo(Player, 8, -4); } } }