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; }
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; } }
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(); }
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); }