/// <summary> /// Returns the opposite <see cref="WalkDirection"/> from the given direction. /// </summary> /// <remarks><see cref="WalkDirection.None"/> is opposite to itself.</remarks> /// <param name="walkDirection">The direction to find the opposite of.</param> /// <returns>The opposite direction from the given direction.</returns> public static WalkDirection OppositeWalkDirection(WalkDirection walkDirection) { if (walkDirection == WalkDirection.Up) { return(WalkDirection.Down); } if (walkDirection == WalkDirection.Down) { return(WalkDirection.Up); } if (walkDirection == WalkDirection.Left) { return(WalkDirection.Right); } if (walkDirection == WalkDirection.Right) { return(WalkDirection.Left); } if (walkDirection == WalkDirection.UpLeft) { return(WalkDirection.DownRight); } if (walkDirection == WalkDirection.UpRight) { return(WalkDirection.DownLeft); } if (walkDirection == WalkDirection.DownLeft) { return(WalkDirection.UpRight); } if (walkDirection == WalkDirection.DownRight) { return(WalkDirection.UpLeft); } return(WalkDirection.None); }
/// <summary> /// Finds the facing direction when getting from a start point to a target point. /// </summary> /// <remarks> /// This only works correctly if the int values used for the walk directions are in sync /// with the values used for facing directions in game. /// </remarks> /// <param name="targetPosition">The target position.</param> /// <param name="startPosition">The start position.</param> /// <returns>The <see langword="int"/> representing the facing direction when going from start to target.</returns> public static int GetFacingDirection(Vector2 targetPosition, Vector2 startPosition) { return(WalkDirection.GetFacingWalkDirection(targetPosition, startPosition).Value); }