Example #1
0
        private void CreateModListPanel(GameObject parent)
        {
            ModListPanel = Object.Instantiate(_optionsPanel, Canvas.transform);

            ModListPanel.GetComponent <RectTransform>().anchorMax = new Vector2(0.25f, 1f);
            ModListPanel.transform.Find("Scroll View").Find("Viewport").Find("VerticalLayout").GetComponent <VerticalLayoutGroup>().spacing = 6;
            ModListPanel.SetActive(true);
            ModListPanel.name = "Mod List Panel";
            ModListPanel.AddComponent <ModListHeaderController>();

            ModListHighlight = Object.Instantiate(parent.GetComponent <HGHeaderNavigationController>().headerHighlightObject,
                                                  parent.GetComponent <HGHeaderNavigationController>().headerHighlightObject.transform.parent);

            foreach (var imageComp in ModListHighlight.GetComponentsInChildren <Image>())
            {
                imageComp.maskable = false;
            }

            ModListHighlight.SetActive(false);

            HGHeaderNavigationController modListController = ModListPanel.AddComponent <HGHeaderNavigationController>();

            modListController.headerHighlightObject = ModListHighlight;
            modListController.unselectedTextColor   = Color.white;
            modListController.makeSelectedHeaderButtonNoninteractable = true;
        }
        private void AddPanelsToSettings()
        {
            Transform headerArea = transform.Find("SafeArea").Find("HeaderContainer").Find("Header (JUICED)");

            HGHeaderNavigationController navigationController = GetComponent <HGHeaderNavigationController>();

            GameObject modOptionsHeaderButton = Instantiate(_panel.ModOptionsHeaderButton, headerArea);

            modOptionsHeaderButton.name = "GenericHeaderButton (Mod Options)";
            modOptionsHeaderButton.GetComponentInChildren <LanguageTextMeshController>().token = LanguageTokens.HeaderToken;
            modOptionsHeaderButton.GetComponentInChildren <HGButton>().onClick.RemoveAllListeners();
            modOptionsHeaderButton.GetComponentInChildren <HGButton>().onClick.AddListener(delegate()
            {
                navigationController.ChooseHeaderByButton(modOptionsHeaderButton.GetComponentInChildren <HGButton>());
            });

            List <HGHeaderNavigationController.Header> headers = GetComponent <HGHeaderNavigationController>().headers.ToList();

            modOptionsHeaderButton.GetComponentInChildren <HGTextMeshProUGUI>().SetText("MOD OPTIONS");

            HGHeaderNavigationController.Header header = new HGHeaderNavigationController.Header
            {
                headerButton  = modOptionsHeaderButton.GetComponent <HGButton>(),
                headerName    = "Mod Options",
                tmpHeaderText = modOptionsHeaderButton.GetComponentInChildren <HGTextMeshProUGUI>(),
                headerRoot    = _panel.Canvas
            };

            headers.Add(header);

            GetComponent <HGHeaderNavigationController>().headers = headers.ToArray();

            transform.Find("SafeArea").Find("HeaderContainer").Find("Header (JUICED)").Find("GenericGlyph (Right)").SetAsLastSibling();
        }
        private void CreateModListButtons()
        {
            HGHeaderNavigationController navigationController = _panel.ModListPanel.GetComponent <HGHeaderNavigationController>();

            List <HGHeaderNavigationController.Header> headers = new List <HGHeaderNavigationController.Header>();

            //_leftGlyph.transform.SetParent(modListLayout);

            Transform modListVerticalLayout = _panel.ModListPanel.transform.Find("Scroll View").Find("Viewport")
                                              .Find("VerticalLayout");

            foreach (var collection in ModSettingsManager.OptionCollection)
            {
                GameObject newModButton = Instantiate(_panel.ModListButton, modListVerticalLayout);

                ModListButton modListButton = newModButton.GetComponent <ModListButton>();

                modListButton.description          = collection.description;
                modListButton.nameLabel            = modListButton.GetComponent <LanguageTextMeshController>();
                modListButton.token                = collection.NameToken;
                modListButton.modGuid              = collection.ModGuid;
                modListButton.navigationController = navigationController;
                modListButton.descriptionText      = _panel.ModDescriptionPanel.GetComponentInChildren <HGTextMeshProUGUI>();

                RectTransform modIconRectTransform = newModButton.transform.Find("ModIcon").gameObject.GetComponent <RectTransform>();

                modIconRectTransform.localPosition    = new Vector3(-147f, -0.32f, 0f);
                modIconRectTransform.sizeDelta        = Vector2.zero;
                modIconRectTransform.anchoredPosition = Vector2.zero;
                modIconRectTransform.gameObject.AddComponent <FetchIconWhenReady>().modGuid = collection.ModGuid;

                newModButton.name = $"ModListButton ({collection.ModName})";
                newModButton.SetActive(true);

                HGHeaderNavigationController.Header header = new HGHeaderNavigationController.Header
                {
                    headerButton  = newModButton.GetComponent <ModListButton>(),
                    headerName    = $"ModListButton ({collection.ModName})",
                    tmpHeaderText = newModButton.GetComponentInChildren <HGTextMeshProUGUI>(),
                    headerRoot    = null
                };

                headers.Add(header);
            }

            //_rightGlyph.transform.SetParent(modListLayout);

            //_leftGlyph.SetActive(true);
            //_rightGlyph.SetActive(true);

            navigationController.headers = headers.ToArray();

            navigationController.currentHeaderIndex = -1;
        }
Example #4
0
        private void OnEnable()
        {
            if (!GetComponentInParent <ModOptionPanelController>().initialized)
            {
                return;
            }

            if (!_mopc)
            {
                _mopc = GetComponentInParent <ModOptionPanelController>();
            }

            HGHeaderNavigationController navigationController = GetComponent <HGHeaderNavigationController>();

            navigationController.headerHighlightObject.transform.SetParent(transform);
            navigationController.headerHighlightObject.SetActive(false);

            if (navigationController.currentHeaderIndex >= 0)
            {
                navigationController.headers[navigationController.currentHeaderIndex].headerButton.interactable = true;
            }
        }
Example #5
0
        internal static void SetupVRSettings(GameObject panel)
        {
            HGHeaderNavigationController controller = panel.GetComponent <HGHeaderNavigationController>();

            if (!controller)
            {
                return;
            }

            Transform header       = panel.transform.Find("SafeArea/HeaderContainer/Header (JUICED)");
            Transform subPanelArea = panel.transform.Find("SafeArea/SubPanelArea");

            if (!header || !subPanelArea)
            {
                return;
            }

            GameObject subPanelInstance = SetupSubPanel(subPanelArea);

            GameObject headerInstance = SetupHeader(header);

            LanguageTextMeshController text = headerInstance.GetComponent <LanguageTextMeshController>();

            text.token = "VR";

            HGHeaderNavigationController.Header headerInfo = new HGHeaderNavigationController.Header();
            headerInfo.headerButton  = headerInstance.GetComponent <HGButton>();
            headerInfo.headerName    = "VR";
            headerInfo.tmpHeaderText = headerInstance.GetComponentInChildren <HGTextMeshProUGUI>();
            headerInfo.headerRoot    = subPanelInstance;

            List <HGHeaderNavigationController.Header> headerList = controller.headers.ToList();

            headerList.Add(headerInfo);

            controller.headers = headerList.ToArray();
        }
Example #6
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;
        }
        internal void LoadModOptionsFromOptionCollection(string modGuid)
        {
            OptionCollection collection = ModSettingsManager.OptionCollection[modGuid];

            GameObject categoriesObject = _panel.CategoryHeader.transform.Find("Scroll View").Find("Viewport").Find("Categories (JUICED)").gameObject;

            HGHeaderNavigationController navigationController = categoriesObject.GetComponent <HGHeaderNavigationController>();

            CategoryScrollRect categoryScrollRect = _panel.CategoryHeader.GetComponentInChildren <CategoryScrollRect>();

            if (_panel.CategoryHeader.activeSelf || _panel.ModOptionsPanel.activeSelf || _panel.ModOptionsDescriptionPanel.activeSelf || categoryScrollRect.categoryButtons.Count > 0)
            {
                UnloadExistingCategoryButtons();
            }

            if (_panel.ModDescriptionPanel.activeSelf || !_panel.CategoryHeader.activeSelf || !_panel.ModOptionsPanel.activeSelf || !_panel.ModOptionsDescriptionPanel.activeSelf)
            {
                _panel.ModDescriptionPanel.GetComponentInChildren <HGTextMeshProUGUI>().SetText("");

                _panel.ModDescriptionPanel.SetActive(false);
                _panel.CategoryHeader.SetActive(true);
                _panel.ModOptionsPanel.SetActive(true);
                _panel.ModOptionsDescriptionPanel.SetActive(true);
            }

            List <HGHeaderNavigationController.Header> headers = new List <HGHeaderNavigationController.Header>();

            navigationController.currentHeaderIndex = 0;

            categoryScrollRect.Categories = collection.CategoryCount;

            _panel.CategoryLeftButton.SetActive(true);
            _panel.CategoryLeftButton.transform.SetSiblingIndex(_panel.CategoryPageIndicators.transform.GetSiblingIndex() - 1);

            for (int i = 0; i < collection.CategoryCount; i++)
            {
                GameObject newCategoryButton = Instantiate(_panel.ModOptionsHeaderButton, categoriesObject.transform);

                LayoutElement le = newCategoryButton.AddComponent <LayoutElement>();

                le.preferredWidth = 200;

                newCategoryButton.GetComponentInChildren <LanguageTextMeshController>().token = collection[i].NameToken;
                newCategoryButton.GetComponentInChildren <HGTextMeshProUGUI>().SetText(collection[i].name);
                newCategoryButton.GetComponentInChildren <HGButton>().onClick.RemoveAllListeners();

                var categoryIndex = i;

                newCategoryButton.GetComponentInChildren <HGButton>().onClick.AddListener(delegate
                {
                    navigationController.ChooseHeaderByButton(newCategoryButton.GetComponentInChildren <HGButton>());

                    LoadOptionListFromCategory(modGuid, categoryIndex, headers.Count);
                });

                newCategoryButton.name = $"Category Button, {collection[i].name}";
                newCategoryButton.SetActive(true);

                HGHeaderNavigationController.Header header = new HGHeaderNavigationController.Header
                {
                    headerButton  = newCategoryButton.GetComponent <HGButton>(),
                    headerName    = $"Category Button, {collection[i].name}",
                    tmpHeaderText = newCategoryButton.GetComponentInChildren <HGTextMeshProUGUI>(),
                    headerRoot    = null
                };

                categoryScrollRect.categoryButtons.Add(newCategoryButton);

                headers.Add(header);
            }
            categoryScrollRect.SetPage(0);
            categoryScrollRect.FixExtra();

            navigationController.headers = headers.ToArray();
            navigationController.InvokeMethod("RebuildHeaders");

            _panel.CategoryRightButton.SetActive(true);
            _panel.CategoryRightButton.transform.SetAsLastSibling();

            LoadOptionListFromCategory(collection.ModGuid, navigationController.currentHeaderIndex, navigationController.headers.Length);
        }