private static void Postfix(UIButton __result, GeneratedScrollPanel __instance, string name, string tooltip, string baseIconName, int index, UITextureAtlas atlas, UIComponent tooltipBox, bool enabled) { if (Settings.hideExtraUIonVP) { return; } __result.eventVisibilityChanged += new PropertyChangedEventHandler <bool>(Init); GeneratedScrollPanel panel = __instance; SimulationManager.instance.AddAction(() => { if (__result.objectUserData is PrefabInfo prefab) { string key = Asset.GetName(prefab); if (AssetTagList.instance.assets.ContainsKey(key)) { if (AssetTagList.instance.assets[key].onButtonClicked == null) { MethodInfo onButtonClicked = panel.GetType().GetMethod("OnButtonClicked", BindingFlags.NonPublic | BindingFlags.Instance); AssetTagList.instance.assets[key].onButtonClicked = Delegate.CreateDelegate(typeof(Asset.OnButtonClicked), panel, onButtonClicked, false) as Asset.OnButtonClicked; } } } }); }
new protected UIButton CreateButton(string name, string tooltip, string baseIconName, int index, UITextureAtlas atlas, UIComponent tooltipBox, bool enabled) { UIScrollablePanel m_ScrollablePanel = (UIScrollablePanel)typeof(GeneratedScrollPanel).GetField("m_ScrollablePanel", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(this); FieldInfo m_ObjectIndexField = typeof(GeneratedScrollPanel).GetField("m_ObjectIndex", BindingFlags.Instance | BindingFlags.NonPublic); int m_ObjectIndex = (int)m_ObjectIndexField.GetValue(this); UIButton uIButton; if (m_ScrollablePanel.childCount > m_ObjectIndex) { uIButton = (m_ScrollablePanel.components[m_ObjectIndex] as UIButton); } else { GameObject asGameObject = UITemplateManager.GetAsGameObject("PlaceableItemTemplate"); uIButton = (m_ScrollablePanel.AttachUIComponent(asGameObject) as UIButton); } uIButton.gameObject.GetComponent <TutorialUITag>().tutorialTag = name; uIButton.text = string.Empty; uIButton.name = name; uIButton.tooltipAnchor = UITooltipAnchor.Anchored; uIButton.tabStrip = true; uIButton.horizontalAlignment = UIHorizontalAlignment.Center; uIButton.verticalAlignment = UIVerticalAlignment.Middle; uIButton.pivot = UIPivotPoint.TopCenter; if (atlas != null) { uIButton.atlas = atlas; } if (index != -1) { uIButton.zOrder = index; } uIButton.verticalAlignment = this.buttonsAlignment; uIButton.foregroundSpriteMode = UIForegroundSpriteMode.Fill; uIButton.normalFgSprite = baseIconName; uIButton.focusedFgSprite = baseIconName + "Focused"; uIButton.hoveredFgSprite = baseIconName + "Hovered"; uIButton.pressedFgSprite = baseIconName + "Pressed"; uIButton.disabledFgSprite = baseIconName + "Disabled"; UIComponent uIComponent = (uIButton.childCount <= 0) ? null : uIButton.components[0]; if (uIComponent != null) { uIComponent.isVisible = false; } uIButton.isEnabled = enabled; uIButton.tooltip = tooltip; uIButton.tooltipBox = tooltipBox; uIButton.group = base.component; m_ObjectIndexField.SetValue(this, m_ObjectIndex + 1); // Start mod uIButton.eventVisibilityChanged += new PropertyChangedEventHandler <bool>(Init); GeneratedScrollPanel panel = this; SimulationManager.instance.AddAction(() => { if (uIButton.objectUserData is PrefabInfo prefab) { string key = Asset.GetName(prefab); if (AssetTagList.instance.assets.ContainsKey(key)) { if (AssetTagList.instance.assets[key].onButtonClicked == null) { MethodInfo onButtonClicked = panel.GetType().GetMethod("OnButtonClicked", BindingFlags.NonPublic | BindingFlags.Instance); AssetTagList.instance.assets[key].onButtonClicked = Delegate.CreateDelegate(typeof(Asset.OnButtonClicked), panel, onButtonClicked, false) as Asset.OnButtonClicked; } } } }); // End mod return(uIButton); }