//public bool validateOnSubmit; protected override void Awake() { _previewLanguage = transform.Find("Text Preview").GetComponentInChildren <LanguageTextMeshController>(); _previewLanguage.token = $"{settingToken}.VALUE"; _previewLabel = _previewLanguage.GetComponentInChildren <HGTextMeshProUGUI>(); nameLabel = GetComponent <LanguageTextMeshController>(); nameLabel.token = nameToken; base.Awake(); if (!inputField) { return; } var button = transform.Find("Text Preview").GetComponentInChildren <HGButton>(); button.onClick.RemoveAllListeners(); button.onClick.AddListener(AttemptShow); button.disablePointerClick = false; inputField.onSubmit.AddListener(GetInput); inputField.onValueChanged.AddListener(OnValueChanged); inputField.text = GetCurrentValue(); _previewLanguage.InvokeMethod("Start"); }
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(); }
public static void SetFontSize(LanguageTextMeshController languageTextMeshController, int fontSize) { Text text = (Text)typeof(LanguageTextMeshController).GetField("text", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(languageTextMeshController); TextMesh textMesh = (TextMesh)typeof(LanguageTextMeshController).GetField("textMesh", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(languageTextMeshController); TextMeshPro textMeshPro = (TextMeshPro)typeof(LanguageTextMeshController).GetField("textMeshPro", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(languageTextMeshController); TextMeshProUGUI textMeshProUGui = (TextMeshProUGUI)typeof(LanguageTextMeshController).GetField("textMeshProUGui", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(languageTextMeshController); if (text) { text.fontSize = fontSize; } if (textMesh) { textMesh.fontSize = fontSize; } if (textMeshPro) { textMeshPro.fontSize = fontSize; } if (textMeshProUGui) { textMeshProUGui.fontSize = fontSize; } }
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); }
private static GameObject SetupSubPanel(Transform parent) { GameObject subPanelToInstantiate = parent.Find("SettingsSubPanel, Controls (Gamepad)").gameObject; GameObject subPanelInstance = GameObject.Instantiate(subPanelToInstantiate, parent); Transform instanceLayout = subPanelInstance.transform.Find("Scroll View/Viewport/VerticalLayout"); foreach (Transform child in instanceLayout) { GameObject.Destroy(child.gameObject); } GameObject sliderSetting = subPanelToInstantiate.transform.Find("Scroll View/Viewport/VerticalLayout/SettingsEntryButton, Slider (Look Scale X)").gameObject; GameObject boolSetting = subPanelToInstantiate.transform.Find("Scroll View/Viewport/VerticalLayout/SettingsEntryButton, Bool (Invert X)").gameObject; GameObject carouselSetting = parent.transform.Find("SettingsSubPanel, Video/Scroll View/Viewport/VerticalLayout/SettingsEntryButton, Carousel (Vsync)").gameObject; LanguageTextMeshController descriptionText = parent.transform.Find("GenericDescriptionPanel/ContentSizeFitter/DescriptionText").GetComponent <LanguageTextMeshController>(); bool first = true; foreach (KeyValuePair <string, ModConfig.ConfigSetting> keyValuePair in ModConfig.settings) { ModConfig.ConfigSetting setting = keyValuePair.Value; BaseSettingsControl settingInstance; if (setting.entry.SettingType == typeof(float) || setting.entry.SettingType == typeof(int)) { settingInstance = GameObject.Instantiate(sliderSetting, instanceLayout).GetComponent <BaseSettingsControl>(); SettingsSlider slider = settingInstance as SettingsSlider; slider.minValue = setting.minValue; slider.maxValue = setting.maxValue; slider.formatString = setting.entry.SettingType == typeof(float) ? "{0:0.00}" : "{0:N0}"; } else if (setting.entry.SettingType == typeof(bool)) { settingInstance = GameObject.Instantiate(boolSetting, instanceLayout).GetComponent <BaseSettingsControl>(); } else { settingInstance = GameObject.Instantiate(carouselSetting, instanceLayout).GetComponent <BaseSettingsControl>(); CarouselController carousel = settingInstance as CarouselController; List <CarouselController.Choice> choices = new List <CarouselController.Choice>(); if (keyValuePair.Key == "vr_ray_color") { string[] choiceStrings = new string[] { "White", "Green", "Red", "Blue", "Yellow", "Magenta", "Cyan", "Lime", "Black" }; string[] hexStrings = new string[] { "#FFFFFF", "#008000", "#FF0000", "#0000FF", "#FFFF00", "#FF00FF", "#00FFFF", "#00FF00", "#000000" }; for (int i = 0; i < choiceStrings.Length; i++) { CarouselController.Choice choice = new CarouselController.Choice(); choice.convarValue = hexStrings[i]; choice.suboptionDisplayToken = choiceStrings[i]; choices.Add(choice); } } carousel.choices = choices.ToArray(); } settingInstance.settingSource = BaseSettingsControl.SettingSource.ConVar; settingInstance.nameToken = setting.entry.Definition.Key; settingInstance.settingName = keyValuePair.Key; settingInstance.gameObject.name = "VRModSetting, " + settingInstance.nameToken; HGButton button = settingInstance.GetComponent <HGButton>(); if (button) { string prefixString = ""; if (setting.settingUpdate == ModConfig.ConfigSetting.SettingUpdate.NextStage) { prefixString = "[WILL APPLY NEXT STAGE] "; } else if (setting.settingUpdate == ModConfig.ConfigSetting.SettingUpdate.AfterRestart) { prefixString = "[RESTART REQUIRED] "; } button.updateTextOnHover = true; button.hoverToken = prefixString + setting.entry.Description.Description; button.hoverLanguageTextMeshController = descriptionText; button.defaultFallbackButton = first; first = false; } } GameObject controllerBindingSetting = subPanelToInstantiate.transform.Find("Scroll View/Viewport/VerticalLayout/SettingsEntryButton, Binding (Jump)").gameObject; GameObject keyboardBindingSetting = parent.Find("SettingsSubPanel, Controls (M&KB)/Scroll View/Viewport/VerticalLayout/SettingsEntryButton, Binding (Jump)").gameObject; ActionAddons.ActionDef[] actionDefs = ActionAddons.actionDefs; foreach (var actionDef in actionDefs) { if (actionDef.keyboardMap != KeyboardKeyCode.None) { AddBindingSetting(actionDef, keyboardBindingSetting, instanceLayout); } if (actionDef.joystickMap != ActionAddons.ControllerInput.None) { AddBindingSetting(actionDef, controllerBindingSetting, instanceLayout); } } subPanelInstance.transform.Find("Scroll View").gameObject.AddComponent <ScrollToSelection>(); return(subPanelInstance); }