Exemplo n.º 1
0
        private static void OnPostRenderGuiEvent(object sender, EventArgs e)
        {
            switch (Game1.activeClickableMenu)
            {
            case TitleMenu _:
                // Quit to title
                // -> unregister silently
                UnregisterTabEvent();
                return;

            case GameMenu gameMenu when gameMenu.currentTab == _previousTab:
                // Nothing changed
                return;

            case GameMenu gameMenu:
                // Tab changed!
                GameMenuTabChanged?.Invoke(null, EventArgs.Empty);

                if (_previousTab == GameMenu.craftingTab)
                {
                    CraftingMenuClosed?.Invoke(sender, EventArgs.Empty);
                }

                else if (gameMenu.currentTab == GameMenu.craftingTab)
                {
                    CraftingMenuShown?.Invoke(sender, EventArgs.Empty);
                }

                _previousTab = gameMenu.currentTab;
                break;

            default:
                // How did we get here?
                ModEntry.StaticMonitor.Log($"Unexpected menu: {Game1.activeClickableMenu?.GetType().ToString() ?? "null"}");
                UnregisterTabEvent();
                return;
            }
        }
Exemplo n.º 2
0
        /// <summary>Raised after a game menu is opened, closed, or replaced.</summary>
        /// <param name="sender">The event sender.</param>
        /// <param name="e">The event data.</param>
        private void OnMenuChanged(object sender, MenuChangedEventArgs e)
        {
            if (e.NewMenu == e.OldMenu)
            {
                return;
            }

            switch (e.OldMenu)
            {
            case GameMenu _:
                GameMenuClosed?.Invoke(sender, e);
                UnregisterTabEvent();
                break;

            case CraftingPage _:
                if (e.NewMenu is CraftingPage)
                {
                    break;
                }

                CraftingMenuClosed?.Invoke(sender, e);
                break;
            }

            switch (e.NewMenu)
            {
            case GameMenu _:
                GameMenuShown?.Invoke(sender, e);
                _events.Display.RenderedActiveMenu += OnRenderedActiveMenu;
                break;

            case CraftingPage _:
            case object m when m.GetType().ToString() == "CookingSkill.NewCraftingPage":
                CraftingMenuShown?.Invoke(sender, e);

                break;
            }
        }
Exemplo n.º 3
0
        private static void OnMenuChanged(object sender, EventArgsClickableMenuChanged e)
        {
            if (e.NewMenu == e.PriorMenu)
            {
                return;
            }

            switch (e.PriorMenu)
            {
            case GameMenu _:
                GameMenuClosed?.Invoke(sender, e);
                UnregisterTabEvent();
                break;

            case CraftingPage _:
                if (e.NewMenu is CraftingPage)
                {
                    break;
                }

                CraftingMenuClosed?.Invoke(sender, e);
                break;
            }

            switch (e.NewMenu)
            {
            case GameMenu _:
                GameMenuShown?.Invoke(sender, e);
                GraphicsEvents.OnPostRenderGuiEvent += OnPostRenderGuiEvent;
                break;

            case CraftingPage _:
                CraftingMenuShown?.Invoke(sender, e);
                break;
            }
        }
Exemplo n.º 4
0
        /// <summary>Raised after a game menu is opened, closed, or replaced.</summary>
        /// <param name="sender">The event sender.</param>
        /// <param name="e">The event data.</param>
        private void OnMenuChanged(object sender, MenuChangedEventArgs e)
        {
            if (e.NewMenu == e.OldMenu)
            {
                return;
            }

            switch (e.OldMenu)
            {
            case GameMenu _:
                GameMenuClosed?.Invoke(sender, e);
                UnregisterTabEvent();
                break;

            case CraftingPage _:
                if (e.NewMenu is CraftingPage)
                {
                    break;
                }

                CraftingMenuClosed?.Invoke(sender, e);
                break;
            }

            switch (e.NewMenu)
            {
            case GameMenu _:
                GameMenuShown?.Invoke(sender, e);
                this.Events.Display.RenderedActiveMenu += OnRenderedActiveMenu;
                break;

            case CraftingPage _:
                CraftingMenuShown?.Invoke(sender, e);
                break;
            }
        }