private void OnLocationChanged(object?sender, LocationChangedEventArgs e) { var path = Path.Join("/", NavManager.ToBaseRelativePath(e.Location).ToLower()); var formatItems = new [] { PageUris.Goals.ToLower(), PageUris.Unknowns.ToLower(), PageUris.Exploring.ToLower(), PageUris.RosettaStone.ToLower(), PageUris.Glossary.ToLower(), }; var comparisonItems = new[] { PageUris.Features.ToLower(), PageUris.Tutorials.ToLower() }; var consoleItems = new[] { PageUris.Imagery.ToLower(), PageUris.ChangelogConsole.ToLower(), PageUris.Changelog.ToLower(), PageUris.ConsoleApp.ToLower() }; var menu = path switch { // SramFormat _ when formatItems.Contains(path) => ExpandedMenu.SramFormat, // SramComparison _ when comparisonItems.Contains(path) => ExpandedMenu.SramComparison, // ConsoleApp _ when consoleItems.Contains(path) => ExpandedMenu.ConsoleApp, _ when path.StartsWith(PageUris.Guides, true) => ExpandedMenu.ConsoleApp, // WebTools _ when path == PageUris.Comparison.ToLower() => ExpandedMenu.WebTools, _ when path.StartsWith(PageUris.Offset, true) => ExpandedMenu.WebTools, _ when path == PageUris.SlotSummary.ToLower() => ExpandedMenu.WebTools, _ when path == PageUris.TerminalCodes.ToLower() => ExpandedMenu.WebTools, _ => ExpandedMenu.None }; if (menu == _menu) { return; } if (_menu != menu) { _menu = menu; #pragma warning disable 4014 SessionStorage.SetAsync(nameof(_menu), _menu); #pragma warning restore 4014 } }
private void SetMenuStateVariables(ExpandedMenu menu) { _sramComparison = menu.HasFlag(ExpandedMenu.SramComparison); _sramFormat = menu.HasFlag(ExpandedMenu.SramFormat); _consoleApp = menu.HasFlag(ExpandedMenu.ConsoleApp); _webTools = menu.HasFlag(ExpandedMenu.WebTools); }
/// <summary> /// Registers a custom button prefab. This prefab can be instantiated multiple times. /// </summary> /// <param name="menu">Menu to attach this button to</param> /// <param name="gameObject">Button prefab</param> /// <param name="instanceConsumer">(optional) this action will be invoked when the prefab is instantiated</param> public static void RegisterCustomMenuButton(ExpandedMenu menu, GameObject gameObject, Action <GameObject> instanceConsumer = null) { if (!RegisteredButtons.ContainsKey(menu)) { RegisteredButtons[menu] = new List <ButtonRegistration>(); } RegisteredButtons[menu].Add(new ButtonRegistration { Prefab = gameObject, InstanceConsumer = instanceConsumer }); }
/// <summary> /// Register a simple button for given menu /// </summary> /// <param name="menu">Menu to attach this button to</param> /// <param name="text">User-visible button text</param> /// <param name="onClick">Button click action</param> /// <param name="instanceConsumer">(optional) this action will be invoked when the button is instantiated</param> public static void RegisterSimpleMenuButton(ExpandedMenu menu, string text, Action onClick, Action <GameObject> instanceConsumer = null) { if (!RegisteredButtons.ContainsKey(menu)) { RegisteredButtons[menu] = new List <ButtonRegistration>(); } RegisteredButtons[menu].Add(new ButtonRegistration { Text = text, Action = onClick, InstanceConsumer = instanceConsumer }); }
protected override async Task OnInitializedAsync() { await Task.Yield(); _menu = (await SessionStorage.GetAsync <ExpandedMenu>(nameof(_menu))).Value; if (_menu != ExpandedMenu.None) { SetMenuStateVariables(_menu); } NavManager.LocationChanged += OnLocationChanged; }
internal static void InvokeMenuOpened(ExpandedMenu menu) => OnMenuOpened?.Invoke(menu);