public void Show(string menu) { if (MenuCollection.Menus.TryGetValue(menu, out var menuObject)) { currentMenu = menuObject; currentPage = menuObject.Pages[0]; currentItem = GetCurrentItem(); itemFocused = false; menuStack.Push(new MenuState { Menu = menuObject, Page = 0 }); isOpen = true; } }
public void NextItem() { var page = currentPage; var item = currentItem; if (page == null || page.Items.Count == 0) { return; } var index = (item?.Index + 1 ?? 0) % page.Items.Count; currentItem = page.Items[index]; pointerAngle = currentItem.Angle; isPointerVisible = true; itemFocused = true; }
public void Back() { if (menuStack.Count > 1) { menuStack.Pop(); var current = menuStack.Peek(); currentMenu = current.Menu; currentPage = current.Menu.Pages[current.Page]; currentItem = GetCurrentItem(); itemFocused = false; isOpen = menuStack.Count != 0; } else if (menuStack.Count == 1) { Exit(); } }
public void PreviousItem() { var page = currentPage; var item = currentItem; if (page == null || page.Items.Count == 0) { return; } var index = item?.Index - 1 ?? 0; if (index < 0) { index = page.Items.Count - 1; } currentItem = page.Items[index]; pointerAngle = currentItem.Angle; isPointerVisible = true; itemFocused = true; }