Exemplo n.º 1
0
        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;
        }
Exemplo n.º 2
0
        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);
        }