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); }
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); } } } }
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); } }
public void InitForPediaAwake(PediaUI ui) { if (!TabToggle) { TabToggle = GenerateTab(ui.slimesTab); ui.tabs.tabs = ui.tabs.tabs.AddToArray(TabToggle); } }
public static GameObject GetPanel(PediaUI ui) { return(ui.genericDescPanel.parent.parent.parent.gameObject); }