//////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// /// <summary> /// Prepare slider widget /// </summary> /// <param name="p_Object">Slider instance</param> /// <param name="p_AddControls">Should add left & right controls</param> void PrepareSlider(GameObject p_Object, bool p_AddControls = false) { GameObject.Destroy(p_Object.GetComponentsInChildren <TextMeshProUGUI>().ElementAt(0).transform.gameObject); RectTransform l_RectTransform = p_Object.transform.GetChild(1) as RectTransform; l_RectTransform.anchorMin = new Vector2(0f, 0f); l_RectTransform.anchorMax = new Vector2(1f, 1f); l_RectTransform.sizeDelta = new Vector2(1, 1); p_Object.GetComponent <LayoutElement>().preferredWidth = -1f; if (p_AddControls) { l_RectTransform = p_Object.transform.Find("BSMLSlider") as RectTransform; l_RectTransform.anchorMin = new Vector2(1.00f, -0.05f); l_RectTransform.anchorMax = new Vector2(0.90f, 1.05f); FormattedFloatListSettingsValueController l_BaseSettings = MonoBehaviour.Instantiate(Resources.FindObjectsOfTypeAll <FormattedFloatListSettingsValueController>().First(x => (x.name == "VRRenderingScale")), p_Object.transform, false); var l_DecButton = l_BaseSettings.transform.GetChild(1).GetComponentsInChildren <Button>().First(); var l_IncButton = l_BaseSettings.transform.GetChild(1).GetComponentsInChildren <Button>().Last(); l_DecButton.transform.SetParent(p_Object.transform, false); l_IncButton.transform.SetParent(p_Object.transform, false); l_DecButton.transform.SetAsFirstSibling(); l_IncButton.transform.SetAsFirstSibling(); foreach (Transform l_Child in l_BaseSettings.transform) { GameObject.Destroy(l_Child.gameObject); } GameObject.Destroy(l_BaseSettings); SliderSetting l_SliderSetting = p_Object.GetComponent <SliderSetting>(); l_SliderSetting.slider.valueDidChangeEvent += (_, p_Value) => { l_DecButton.interactable = p_Value > l_SliderSetting.slider.minValue; l_IncButton.interactable = p_Value < l_SliderSetting.slider.maxValue; }; l_DecButton.interactable = l_SliderSetting.slider.value > l_SliderSetting.slider.minValue; l_IncButton.interactable = l_SliderSetting.slider.value < l_SliderSetting.slider.maxValue; l_DecButton.onClick.RemoveAllListeners(); l_DecButton.onClick.AddListener(() => { l_SliderSetting.slider.value -= l_SliderSetting.increments; l_SliderSetting.InvokeMethod("OnChange", new object[] { l_SliderSetting.slider, l_SliderSetting.slider.value }); }); l_IncButton.onClick.RemoveAllListeners(); l_IncButton.onClick.AddListener(() => { l_SliderSetting.slider.value += l_SliderSetting.increments; l_SliderSetting.InvokeMethod("OnChange", new object[] { l_SliderSetting.slider, l_SliderSetting.slider.value }); }); } }
public override GameObject CreateObject(Transform parent) { FormattedFloatListSettingsValueController baseSetting = MonoBehaviour.Instantiate(Resources.FindObjectsOfTypeAll <FormattedFloatListSettingsValueController>().First(x => (x.name == "VRRenderingScale")), parent, false); baseSetting.name = "BSMLSliderSetting"; GameObject gameObject = baseSetting.gameObject; T sliderSetting = gameObject.AddComponent <T>(); GameObject.Destroy(gameObject.transform.Find("ValuePicker").gameObject); sliderSetting.slider = GameObject.Instantiate(Resources.FindObjectsOfTypeAll <HMUI.TimeSlider>().First(s => s.name == "RangeValuesTextSlider" && s.transform.parent?.name == "SongStart"), gameObject.transform, false); sliderSetting.slider.name = "BSMLSlider"; sliderSetting.slider.GetComponentInChildren <TextMeshProUGUI>().enableWordWrapping = false; (sliderSetting.slider.transform as RectTransform).anchorMin = new Vector2(1, 0); (sliderSetting.slider.transform as RectTransform).anchorMax = new Vector2(1, 1); (sliderSetting.slider.transform as RectTransform).sizeDelta = new Vector2(40, 0); (sliderSetting.slider.transform as RectTransform).pivot = new Vector2(1, 0.5f); (sliderSetting.slider.transform as RectTransform).anchoredPosition = new Vector2(0, 0); MonoBehaviour.Destroy(baseSetting); TextMeshProUGUI text = gameObject.GetComponentInChildren <TextMeshProUGUI>(); text.text = "Default Text"; gameObject.AddComponent <ExternalComponents>().components.Add(text); MonoBehaviour.Destroy(text.GetComponent <LocalizedTextMeshProUGUI>(true)); gameObject.GetComponent <LayoutElement>().preferredWidth = 90; gameObject.SetActive(true); return(gameObject); }
public override GameObject CreateObject(Transform parent) { FormattedFloatListSettingsValueController baseSetting = MonoBehaviour.Instantiate(Resources.FindObjectsOfTypeAll <FormattedFloatListSettingsValueController>().First(x => (x.name == "VRRenderingScale")), parent, false); baseSetting.name = "BSMLIncDecSetting"; GameObject gameObject = baseSetting.gameObject; MonoBehaviour.Destroy(baseSetting); gameObject.SetActive(false); T boolSetting = gameObject.AddComponent <T>(); boolSetting.text = gameObject.transform.GetChild(1).GetComponentsInChildren <TextMeshProUGUI>().First(); boolSetting.text.richText = true; boolSetting.decButton = gameObject.transform.GetChild(1).GetComponentsInChildren <Button>().First(); boolSetting.incButton = gameObject.transform.GetChild(1).GetComponentsInChildren <Button>().Last(); (gameObject.transform.GetChild(1) as RectTransform).sizeDelta = new Vector2(40, 0); boolSetting.text.overflowMode = TextOverflowModes.Ellipsis; TextMeshProUGUI text = gameObject.GetComponentInChildren <TextMeshProUGUI>(); text.text = "Default Text"; text.richText = true; gameObject.AddComponent <ExternalComponents>().components.Add(text); MonoBehaviour.Destroy(text.GetComponent <LocalizedTextMeshProUGUI>()); gameObject.GetComponent <LayoutElement>().preferredWidth = 90; gameObject.SetActive(true); return(gameObject); }
public override GameObject CreateObject(Transform parent) { FormattedFloatListSettingsValueController baseSetting = MonoBehaviour.Instantiate(Resources.FindObjectsOfTypeAll <FormattedFloatListSettingsValueController>().First(x => (x.name == "VRRenderingScale")), parent, false); baseSetting.name = "BSMLColorSetting"; GameObject gameObject = baseSetting.gameObject; gameObject.SetActive(false); MonoBehaviour.Destroy(baseSetting); ColorSetting colorSetting = gameObject.AddComponent <ColorSetting>(); Transform valuePick = gameObject.transform.Find("ValuePicker"); (valuePick.transform as RectTransform).sizeDelta = new Vector2(13, 0); Button decButton = valuePick.GetComponentsInChildren <Button>().First(); decButton.enabled = false; decButton.interactable = true; GameObject.Destroy(decButton.transform.Find("Icon").gameObject); GameObject.Destroy(valuePick.GetComponentsInChildren <TextMeshProUGUI>().First().gameObject); colorSetting.editButton = valuePick.GetComponentsInChildren <Button>().Last(); TextMeshProUGUI text = gameObject.GetComponentInChildren <TextMeshProUGUI>(); text.text = "Default Text"; gameObject.AddComponent <ExternalComponents>().components.Add(text); MonoBehaviour.Destroy(text.GetComponent <LocalizedTextMeshProUGUI>()); gameObject.GetComponent <LayoutElement>().preferredWidth = 90; Image colorImage = Object.Instantiate(Resources.FindObjectsOfTypeAll <Image>().First(x => x.gameObject.name == "ColorImage" && x.sprite?.name == "NoteCircle"), valuePick, false); colorImage.name = "BSMLCurrentColor"; (colorImage.gameObject.transform as RectTransform).anchoredPosition = new Vector2(0, 0); (colorImage.gameObject.transform as RectTransform).sizeDelta = new Vector2(5, 5); (colorImage.gameObject.transform as RectTransform).anchorMin = new Vector2(0.2f, 0.5f); (colorImage.gameObject.transform as RectTransform).anchorMax = new Vector2(0.2f, 0.5f); colorSetting.colorImage = colorImage; Image icon = colorSetting.editButton.transform.Find("Icon").GetComponent <Image>(); icon.name = "EditIcon"; icon.sprite = Utilities.EditIcon; icon.rectTransform.sizeDelta = new Vector2(4, 4); colorSetting.editButton.interactable = true; (colorSetting.editButton.transform as RectTransform).anchorMin = new Vector2(0, 0); colorSetting.modalColorPicker = base.CreateObject(gameObject.transform).GetComponent <ModalColorPicker>(); gameObject.SetActive(true); return(gameObject); }
public override GameObject CreateObject(Transform parent) { FormattedFloatListSettingsValueController baseSetting = MonoBehaviour.Instantiate(Resources.FindObjectsOfTypeAll <FormattedFloatListSettingsValueController>().First(x => (x.name == "VRRenderingScale")), parent, false); baseSetting.name = "BSMLStringSetting"; GameObject gameObject = baseSetting.gameObject; gameObject.SetActive(false); MonoBehaviour.Destroy(baseSetting); StringSetting stringSetting = gameObject.AddComponent <StringSetting>(); Transform valuePick = gameObject.transform.Find("ValuePicker"); MonoBehaviour.Destroy(valuePick.GetComponent <StepValuePicker>()); Button decButton = valuePick.GetComponentsInChildren <Button>().First(); decButton.enabled = false; decButton.interactable = true; GameObject.Destroy(decButton.transform.Find("Icon").gameObject); stringSetting.text = valuePick.GetComponentsInChildren <TextMeshProUGUI>().First(); stringSetting.text.richText = true; stringSetting.editButton = valuePick.GetComponentsInChildren <Button>().Last(); stringSetting.boundingBox = valuePick as RectTransform; TextMeshProUGUI text = gameObject.GetComponentInChildren <TextMeshProUGUI>(); text.text = "Default Text"; gameObject.AddComponent <ExternalComponents>().components.Add(text); MonoBehaviour.Destroy(text.GetComponent <LocalizedTextMeshProUGUI>()); gameObject.GetComponent <LayoutElement>().preferredWidth = 90; stringSetting.text.alignment = TextAlignmentOptions.MidlineRight; stringSetting.text.enableWordWrapping = false; RectTransform textTransform = stringSetting.text.transform as RectTransform; textTransform.anchorMin = new Vector2(0, 0); textTransform.anchorMax = new Vector2(1, 1); textTransform.anchoredPosition = new Vector2(-6, 0); Image icon = stringSetting.editButton.transform.Find("Icon").GetComponent <Image>(); icon.name = "EditIcon"; icon.sprite = Utilities.EditIcon; icon.rectTransform.sizeDelta = new Vector2(4, 4); stringSetting.editButton.interactable = true; (stringSetting.editButton.transform as RectTransform).anchorMin = new Vector2(0, 0); stringSetting.modalKeyboard = base.CreateObject(gameObject.transform).GetComponent <ModalKeyboard>(); gameObject.SetActive(true); return(gameObject); }
internal static ListSetting CreateServerSelectionView(MultiplayerModeSelectionViewController multiplayerView) { Plugin.Logger.Info("Applying interface for server selection."); var parent = multiplayerView.gameObject.transform; FormattedFloatListSettingsValueController baseSetting = MonoBehaviour.Instantiate(Resources.FindObjectsOfTypeAll <FormattedFloatListSettingsValueController>().First(x => (x.name == "VRRenderingScale")), parent, false); baseSetting.name = "BSMLIncDecSetting"; GameObject gameObject = baseSetting.gameObject; MonoBehaviour.Destroy(baseSetting); gameObject.SetActive(false); ListSetting serverSelection = gameObject.AddComponent <ListSetting>(); gameObject.transform.position += new Vector3(0.0f, 0.15f, 0.0f); gameObject.transform.GetChild(1).position += new Vector3(-1.0f, 0.0f, 0.0f); serverSelection.text = gameObject.transform.GetChild(1).GetComponentsInChildren <TextMeshProUGUI>().First(); serverSelection.text.richText = true; serverSelection.decButton = gameObject.transform.GetChild(1).GetComponentsInChildren <Button>().First(); serverSelection.incButton = gameObject.transform.GetChild(1).GetComponentsInChildren <Button>().Last(); (gameObject.transform.GetChild(1) as RectTransform).sizeDelta = new Vector2(60, 0); serverSelection.text.overflowMode = TextOverflowModes.Ellipsis; var controller = multiplayerView.gameObject.AddComponent <ServerSelectionController>(); controller.Init(serverSelection, multiplayerView); TextMeshProUGUI text = gameObject.GetComponentInChildren <TextMeshProUGUI>(); text.transform.position += new Vector3(1.2f, 0.0f, 0.0f); text.SetText("Playing on"); text.richText = true; gameObject.GetComponent <LayoutElement>().preferredWidth = 90; gameObject.SetActive(true); // Initial Update for the SongPacks Patches.QuickPlaySongPacksDropdownPatch.UpdateSongPacks(); return(serverSelection); }
/// <summary> /// Setup a toggle setting /// </summary> /// <param name="p_Setting">Setting to setûp</param> /// <param name="p_Action">Action on change</param> /// <param name="p_Formatter">Value formatter</param> /// <param name="p_Value">New value</param> /// <param name="p_RemoveLabel">Should remove label</param> /// <param name="p_AddControls">Add Inc/dec buttons</param> /// <param name="p_NewRectMin">New rect min</param> /// <param name="p_NewRectMax">New rect max</param> public static void Setup(BSMLSliderSetting p_Setting, BSMLAction p_Action, BSMLAction p_Formatter, float p_Value, bool p_RemoveLabel, bool p_AddControls = false, UnityEngine.Vector2 p_NewRectMin = default, UnityEngine.Vector2 p_NewRectMax = default) { p_Setting.gameObject.SetActive(false); if (p_Formatter != null) { p_Setting.formatter = p_Formatter; } p_Setting.slider.value = p_Value; if (p_Action != null) { p_Setting.onChange = p_Action; } p_Setting.updateOnChange = true; if (p_RemoveLabel) { UnityEngine.GameObject.Destroy(p_Setting.gameObject.GetComponentsInChildren <TextMeshProUGUI>().ElementAt(0).transform.gameObject); UnityEngine.RectTransform l_RectTransform = p_Setting.gameObject.transform.GetChild(1) as UnityEngine.RectTransform; l_RectTransform.anchorMin = UnityEngine.Vector2.zero; l_RectTransform.anchorMax = UnityEngine.Vector2.one; l_RectTransform.sizeDelta = UnityEngine.Vector2.one; p_Setting.gameObject.GetComponent <UnityEngine.UI.LayoutElement>().preferredWidth = -1f; if (p_AddControls) { l_RectTransform = p_Setting.gameObject.transform.Find("BSMLSlider") as UnityEngine.RectTransform; l_RectTransform.anchorMin = p_NewRectMin; l_RectTransform.anchorMax = p_NewRectMax; FormattedFloatListSettingsValueController l_BaseSettings = UnityEngine.MonoBehaviour.Instantiate(UnityEngine.Resources.FindObjectsOfTypeAll <FormattedFloatListSettingsValueController>().First(x => (x.name == "VRRenderingScale")), p_Setting.gameObject.transform, false); var l_DecButton = l_BaseSettings.transform.GetChild(1).GetComponentsInChildren <UnityEngine.UI.Button>().First(); var l_IncButton = l_BaseSettings.transform.GetChild(1).GetComponentsInChildren <UnityEngine.UI.Button>().Last(); l_DecButton.transform.SetParent(p_Setting.gameObject.transform, false); l_DecButton.name = "BSP_DecButton"; l_IncButton.transform.SetParent(p_Setting.gameObject.transform, false); l_IncButton.name = "BSP_IncButton"; l_IncButton.transform.SetAsFirstSibling(); l_DecButton.transform.SetAsFirstSibling(); foreach (UnityEngine.Transform l_Child in l_BaseSettings.transform) { UnityEngine.GameObject.Destroy(l_Child.gameObject); } UnityEngine.GameObject.Destroy(l_BaseSettings); p_Setting.slider.valueDidChangeEvent += (_, p_NewValue) => { l_DecButton.interactable = p_NewValue > p_Setting.slider.minValue; l_IncButton.interactable = p_NewValue < p_Setting.slider.maxValue; p_Setting.ApplyValue(); p_Setting.ReceiveValue(); }; l_DecButton.interactable = p_Setting.slider.value > p_Setting.slider.minValue; l_IncButton.interactable = p_Setting.slider.value < p_Setting.slider.maxValue; l_DecButton.onClick.RemoveAllListeners(); l_DecButton.onClick.AddListener(() => { p_Setting.slider.value -= p_Setting.increments; l_DecButton.interactable = p_Setting.slider.value > p_Setting.slider.minValue; l_IncButton.interactable = p_Setting.slider.value < p_Setting.slider.maxValue; p_Setting.ApplyValue(); p_Setting.ReceiveValue(); }); l_IncButton.onClick.RemoveAllListeners(); l_IncButton.onClick.AddListener(() => { p_Setting.slider.value += p_Setting.increments; l_DecButton.interactable = p_Setting.slider.value > p_Setting.slider.minValue; l_IncButton.interactable = p_Setting.slider.value < p_Setting.slider.maxValue; p_Setting.ApplyValue(); p_Setting.ReceiveValue(); }); } } p_Setting.gameObject.SetActive(true); }