예제 #1
0
        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
            }
        }
예제 #2
0
 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);
 }
예제 #3
0
        /// <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
            });
        }
예제 #4
0
        /// <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
            });
        }
예제 #5
0
        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;
        }
예제 #6
0
 internal static void InvokeMenuOpened(ExpandedMenu menu) => OnMenuOpened?.Invoke(menu);