示例#1
0
        public static bool CheckIfHasCustomRenderer(PediaUI ui, PediaDirector.Id id)
        {
            var panel = GetPanel(ui);

            if (PediaRegistry.activeRenderer != null)
            {
                if (PediaRegistry.activeRenderer is IReusablePediaRenderer r)
                {
                    r.CurrentID = id;
                }
                PediaRegistry.activeRenderer.OnListingDeselected(panel);
                PediaRegistry.activeRenderer = null;
            }

            var renderer = PediaRegistry.GetRenderer(id);

            if (renderer == null)
            {
                return(false);
            }
            if (renderer is IReusablePediaRenderer R)
            {
                R.CurrentID = id;
            }
            renderer.OnListingSelected(panel);
            PediaRegistry.activeRenderer = renderer;
            return(true);
        }
示例#2
0
        public static void Prefix(PediaUI __instance, PediaDirector.Id id)
        {
            if (id == PediaDirector.Id.LOCKED)
            {
                return;
            }
            if (PediaRegistry.activeTabRenderer != null)
            {
                PediaRegistry.activeTabRenderer.OnTabDeselected(__instance.gameObject);
                PediaRegistry.activeTabRenderer = null;
            }
            foreach (var v in PediaRegistry.customTabs)
            {
                if (v.Key.Entries.Contains(id))
                {
                    v.Key.TabToggle.isOn = true;

                    __instance.BuildListing(v.Key.Entries.ToArray());
                    PediaRegistry.activeTabRenderer = v.Key.TabRenderer;
                    if (PediaRegistry.activeTabRenderer != null)
                    {
                        PediaRegistry.activeTabRenderer.OnTabSelected(__instance.gameObject);
                    }
                }
            }
        }
示例#3
0
 public static void Postfix(PediaUI __instance)
 {
     PediaRegistry.activeRenderer = null; 
     foreach(var v in PediaRegistry.customTabs)
     {
         if(v.Key.IsVisible?.Invoke()??true) v.Key.InitForPediaAwake(__instance);
     }
 }
示例#4
0
 public void InitForPediaAwake(PediaUI ui)
 {
     if (!TabToggle)
     {
         TabToggle    = GenerateTab(ui.slimesTab);
         ui.tabs.tabs = ui.tabs.tabs.AddToArray(TabToggle);
     }
 }
示例#5
0
 public static GameObject GetPanel(PediaUI ui)
 {
     return(ui.genericDescPanel.parent.parent.parent.gameObject);
 }