public void OpenPanel(UIPanelRef panelRef) { int instanceId = panelRef.GetInstanceID(); if (instanceId == currentPanelInstanceId) { return; } UIPanel nextPanel; if (!panels.TryGetValue(instanceId, out nextPanel)) { return; } uHooks.RemoveOnUpdate(this); ClosePanel(currentPanelInstanceId); currentOptions.Clear(); currentOptions.AddRange(nextPanel.MenuOptions); currentPanelRefs.Clear(); currentPanelRefs.AddRange(nextPanel.PanelRefs); currentOption = 0; DeselectAllMenuOptions(); HighlightMenuOption(currentOption); if (currentOptions.Count > 0) { uHooks.AddOnUpdate(this); } nextPanel.Open(); currentPanelInstanceId = instanceId; }
public void UOnUpdate() { if (InputController.btnUp) { DeselectMenuOption(currentOption); --currentOption; if (currentOption < 0) { currentOption = currentOptions.Count - 1; } currentOption = currentOption % currentOptions.Count; SelectMenuOption(currentOption); } if (InputController.btnDown) { DeselectMenuOption(currentOption); ++currentOption; currentOption = currentOption % currentOptions.Count; SelectMenuOption(currentOption); } if (InputController.btnHit) { MenuOption opt = currentOptions[currentOption]; if (!opt.gameObject.activeSelf) { return; } opt.Click(); if (onMenuOptionClicked != null) { onMenuOptionClicked.Invoke(); } UIPanelRef next = currentPanelRefs[currentOption]; if (next == nonePanel) { // ClosePanel(currentPanelInstanceId); return; } OpenPanel(next); } }