private void CreateCategoryHeader(GameObject parent, GameObject headerArea) { CategoryHeader = Object.Instantiate(_optionsPanel, Canvas.transform); CategoryHeader.GetComponent <RectTransform>().anchorMin = new Vector2(0.275f, 0.86f); CategoryHeader.GetComponent <RectTransform>().anchorMax = new Vector2(1f, 1f); CategoryHeader.SetActive(false); CategoryHeader.name = "Category Headers"; Object.DestroyImmediate(CategoryHeader.transform.Find("Scroll View").Find("Viewport").Find("VerticalLayout").gameObject); Object.DestroyImmediate(CategoryHeader.transform.Find("Scroll View").Find("Scrollbar Vertical").gameObject); GameObject headers = Object.Instantiate(headerArea, CategoryHeader.transform.Find("Scroll View").Find("Viewport")); headers.name = "Categories (JUICED)"; Object.DestroyImmediate(headers.GetComponent <OnEnableEvent>()); Object.DestroyImmediate(headers.GetComponent <AwakeEvent>()); RectTransform rt = headers.GetComponent <RectTransform>(); rt.pivot = new Vector2(0.5f, 0.5f); rt.anchorMin = new Vector2(0f, 0.2f); rt.anchorMax = new Vector2(0f, 0.8f); rt.anchoredPosition = new Vector2(0, 0); var localPosition = headers.transform.localPosition; localPosition = new Vector3(localPosition.x, -47f, localPosition.z); headers.transform.localPosition = localPosition; headers.GetComponent <CanvasGroup>().alpha = 1; RectTransform[] oldButtons = headers.GetComponentsInChildren <RectTransform>(); foreach (var oldButton in oldButtons) { if (oldButton == null) { continue; } if (oldButton != headers.GetComponent <RectTransform>()) { Object.DestroyImmediate(oldButton.gameObject); } } CategoryHeaderHighlight = Object.Instantiate(parent.GetComponent <HGHeaderNavigationController>().headerHighlightObject, parent.GetComponent <HGHeaderNavigationController>().headerHighlightObject.transform.parent); CategoryHeaderHighlight.SetActive(false); HGHeaderNavigationController categoryController = headers.AddComponent <HGHeaderNavigationController>(); categoryController.headerHighlightObject = CategoryHeaderHighlight; categoryController.unselectedTextColor = Color.white; categoryController.makeSelectedHeaderButtonNoninteractable = true; var categoryViewPortHeaderRectTransform = CategoryHeader.transform.Find("Scroll View").Find("Viewport").gameObject.GetComponent <RectTransform>(); categoryViewPortHeaderRectTransform.anchorMin = new Vector2(0.11f, 0); categoryViewPortHeaderRectTransform.anchorMax = new Vector2(0.89f, 1); UISkinData skinData = CategoryHeader.transform.Find("Scroll View").GetComponent <ScrollRectSkinController>().skinData; UILayerKey layerKey = CategoryHeader.transform.Find("Scroll View").GetComponent <HGScrollRectHelper>().requiredTopLayer; Object.DestroyImmediate(CategoryHeader.transform.Find("Scroll View").GetComponent <ScrollRectSkinController>()); Object.DestroyImmediate(CategoryHeader.transform.Find("Scroll View").GetComponent <HGScrollRectHelper>()); Object.DestroyImmediate(CategoryHeader.transform.Find("Scroll View").GetComponent <ScrollRect>()); CategoryScrollRect categoryScrollRect = CategoryHeader.transform.Find("Scroll View").gameObject.AddComponent <CategoryScrollRect>(); categoryScrollRect.inertia = false; categoryScrollRect.content = headers.GetComponent <RectTransform>(); categoryScrollRect.content.pivot = new Vector2(0, 0.5f); categoryScrollRect.horizontal = true; categoryScrollRect.vertical = false; categoryScrollRect.movementType = ScrollRect.MovementType.Unrestricted; categoryScrollRect.viewport = categoryViewPortHeaderRectTransform; categoryScrollRect.horizontalScrollbar = null; CategoryHeader.transform.Find("Scroll View").gameObject.AddComponent <HGScrollRectHelper>().requiredTopLayer = layerKey; CategoryHeader.transform.Find("Scroll View").gameObject.AddComponent <ScrollRectSkinController>().skinData = skinData; ContentSizeFitter sizeFitter = headers.AddComponent <ContentSizeFitter>(); sizeFitter.horizontalFit = ContentSizeFitter.FitMode.PreferredSize; sizeFitter.verticalFit = ContentSizeFitter.FitMode.Unconstrained; HorizontalLayoutGroup hlg = headers.GetComponent <HorizontalLayoutGroup>(); hlg.enabled = true; hlg.padding = new RectOffset(8, 8, 4, 4); hlg.spacing = 16; hlg.childAlignment = TextAnchor.MiddleCenter; hlg.childControlWidth = true; hlg.childControlHeight = true; hlg.childForceExpandWidth = true; hlg.childForceExpandHeight = true; }
private void CreateModListButton() { ModListButton = Object.Instantiate(_verticalLayout !.transform.Find("SettingsEntryButton, Bool (Audio Focus)").gameObject); Object.DestroyImmediate(ModListButton.GetComponentInChildren <CarouselController>()); Object.DestroyImmediate(ModListButton.GetComponentInChildren <ButtonSkinController>()); Object.DestroyImmediate(ModListButton.transform.Find("CarouselRect").gameObject); HGButton oldButton = ModListButton.GetComponent <HGButton>(); bool allowAllEventSystems = oldButton.allowAllEventSystems; bool submitOnPointerUp = oldButton.submitOnPointerUp; UILayerKey requiredTopLayer = oldButton.requiredTopLayer; UnityEngine.Events.UnityEvent onFindSelectableLeft = oldButton.onFindSelectableLeft; UnityEngine.Events.UnityEvent onFindSelectableRight = oldButton.onFindSelectableRight; UnityEngine.Events.UnityEvent onSelect = oldButton.onSelect; UnityEngine.Events.UnityEvent onDeselect = oldButton.onDeselect; bool defaultFallbackButton = oldButton.defaultFallbackButton; Button.ButtonClickedEvent buttonClickedEvent = oldButton.onClick; ColorBlock colors = oldButton.colors; bool showImageOnHover = oldButton.showImageOnHover; Image imageOnHover = oldButton.imageOnHover; Image imageOnInteractable = oldButton.imageOnInteractable; bool updateTextOnHover = oldButton.updateTextOnHover; LanguageTextMeshController hoverLanguageTextMeshController = oldButton.hoverLanguageTextMeshController; string hoverToken = oldButton.hoverToken; string uiClickSoundOverride = oldButton.uiClickSoundOverride; Object.DestroyImmediate(oldButton); colors.disabledColor = ModOptionsHeaderButton.GetComponent <HGButton>().colors.disabledColor; ModListButton newButton = ModListButton.AddComponent <ModListButton>(); newButton.allowAllEventSystems = allowAllEventSystems; newButton.submitOnPointerUp = submitOnPointerUp; newButton.requiredTopLayer = requiredTopLayer; newButton.onFindSelectableLeft = onFindSelectableLeft; newButton.onFindSelectableRight = onFindSelectableRight; newButton.onSelect = onSelect; newButton.onDeselect = onDeselect; newButton.defaultFallbackButton = defaultFallbackButton; newButton.onClick = buttonClickedEvent; newButton.colors = colors; newButton.showImageOnHover = showImageOnHover; newButton.imageOnHover = imageOnHover; newButton.imageOnInteractable = imageOnInteractable; newButton.updateTextOnHover = updateTextOnHover; newButton.hoverLanguageTextMeshController = hoverLanguageTextMeshController; newButton.hoverToken = hoverToken; newButton.uiClickSoundOverride = uiClickSoundOverride; newButton.interactable = true; newButton.enabled = true; newButton.disablePointerClick = false; newButton.onClick.RemoveAllListeners(); RectTransform buttonTextRectTransform = ModListButton.transform.Find("ButtonText").GetComponent <RectTransform>(); buttonTextRectTransform.anchorMin = new Vector2(0.19f, 0); buttonTextRectTransform.anchorMax = new Vector2(1, 1); GameObject modIconGameObject = new GameObject("ModIcon"); RectTransform modIconRectTransform = modIconGameObject.AddComponent <RectTransform>(); modIconGameObject.AddComponent <CanvasRenderer>(); modIconGameObject.AddComponent <Image>().preserveAspect = true; modIconRectTransform.anchorMin = new Vector2(0.04f, 0.13f); modIconRectTransform.anchorMax = new Vector2(0.19f, 0.86f); modIconRectTransform.pivot = new Vector2(0.5f, 0.5f); modIconGameObject.transform.SetParent(ModListButton.transform); GameObject iconOutline = Object.Instantiate(ModListButton.transform.Find("BaseOutline").gameObject, modIconRectTransform); RectTransform iconOutlineRectTransform = iconOutline.GetComponent <RectTransform>(); iconOutlineRectTransform.sizeDelta = Vector2.zero; iconOutlineRectTransform.anchoredPosition = Vector2.zero; iconOutlineRectTransform.localScale = new Vector3(0.94f, 1.16f, 1); ModListButton.SetActive(false); }