Exemplo n.º 1
0
 public bool TryNavigate(NavigationDirection Direction, NavigationWrappingMode HorizontalWrapping, NavigationWrappingMode VerticalWrapping)
 {
     if (IsGamepadFocused && HoveredButton == null)
     {
         if (IsLeftSidebarVisible)
         {
             HoveredButtonBounds = LeftSidebarButtonBounds.First();
         }
         else if (IsRightSidebarVisible)
         {
             HoveredButtonBounds = RightSidebarButtonBounds.First();
         }
         else
         {
             HoveredButtonBounds = null;
         }
         IsNavigatingWithGamepad = HoveredButton != null;
         return(HoveredButton != null);
     }
     else if (TryGetSlotNeighbor(HoveredButtonBounds, Direction, HorizontalWrapping, VerticalWrapping, out Rectangle? Neighbor))
     {
         HoveredButtonBounds     = Neighbor.Value;
         IsNavigatingWithGamepad = true;
         return(true);
     }
     else
     {
         return(false);
     }
 }
Exemplo n.º 2
0
 public bool TryNavigateEnter(NavigationDirection StartingSide, Rectangle?ClosestTo)
 {
     if (IsLeftSidebarVisible && StartingSide != NavigationDirection.Left)
     {
         IsGamepadFocused        = true;
         IsNavigatingWithGamepad = true;
         if (ClosestTo.HasValue)
         {
             HoveredButtonBounds = LeftSidebarButtonBounds.OrderBy(x => x.SquaredDistanceBetweenCenters(ClosestTo.Value)).First();
         }
         else
         {
             HoveredButtonBounds = LeftSidebarButtonBounds.First();
         }
         return(true);
     }
     else if (IsRightSidebarVisible)
     {
         IsGamepadFocused        = true;
         IsNavigatingWithGamepad = true;
         if (ClosestTo.HasValue)
         {
             HoveredButtonBounds = RightSidebarButtonBounds.OrderBy(x => x.SquaredDistanceBetweenCenters(ClosestTo.Value)).First();
         }
         else
         {
             HoveredButtonBounds = RightSidebarButtonBounds.First();
         }
         return(true);
     }
     else if (IsLeftSidebarVisible)
     {
         IsGamepadFocused        = true;
         IsNavigatingWithGamepad = true;
         if (ClosestTo.HasValue)
         {
             HoveredButtonBounds = LeftSidebarButtonBounds.OrderBy(x => x.SquaredDistanceBetweenCenters(ClosestTo.Value)).First();
         }
         else
         {
             HoveredButtonBounds = LeftSidebarButtonBounds.First();
         }
         return(true);
     }
     else
     {
         HoveredButtonBounds = null;
         return(false);
     }
 }