public T AddIntSetting <T>(string name, string hintText) where T : IntSettingsController { var volumeSettings = GetWindowSettings(); GameObject newSettingsObject = MonoBehaviour.Instantiate(volumeSettings.gameObject, transform); newSettingsObject.name = name; var incBg = newSettingsObject.transform.Find("Value").Find("IncButton").Find("BG").gameObject.GetComponent <Image>(); (incBg.transform as RectTransform).localScale *= new Vector2(0.8f, 0.8f); var decBg = newSettingsObject.transform.Find("Value").Find("DecButton").Find("BG").gameObject.GetComponent <Image>(); (decBg.transform as RectTransform).localScale *= new Vector2(0.8f, 0.8f); SwitchSettingsController volume = newSettingsObject.GetComponent <SwitchSettingsController>(); T newToggleSettingsController = (T)ReflectionUtil.CopyComponent(volume, typeof(IncDecSettingsController), typeof(T), newSettingsObject); MonoBehaviour.DestroyImmediate(volume); var tmpText = newSettingsObject.GetComponentInChildren <TMP_Text>(); tmpText.text = name; if (hintText != String.Empty) { BeatSaberUI.AddHintText(tmpText.rectTransform, hintText); } viewController?.AddSubmenuOption(newSettingsObject); AddHooks(newToggleSettingsController); return(newToggleSettingsController); }
public T AddSliderSetting <T>(string name, string hintText, float min, float max, float increment, bool intValues) where T : IncDecSettingsController { var volumeSettings = GetWindowSettings(); GameObject newSettingsObject = MonoBehaviour.Instantiate(volumeSettings.gameObject, transform); newSettingsObject.name = name; SwitchSettingsController volume = newSettingsObject.GetComponent <SwitchSettingsController>(); T newSliderSettingsController = (T)ReflectionUtil.CopyComponent(volume, typeof(IncDecSettingsController), typeof(T), newSettingsObject); MonoBehaviour.DestroyImmediate(volume); GameObject.Destroy(newSettingsObject.transform.Find("Value").Find("DecButton").gameObject); GameObject.Destroy(newSettingsObject.transform.Find("Value").Find("ValueText").gameObject); GameObject.Destroy(newSettingsObject.transform.Find("Value").Find("IncButton").gameObject); CustomSlider slider = newSliderSettingsController.gameObject.AddComponent <CustomSlider>(); slider.Scrollbar = GameObject.Instantiate(Resources.FindObjectsOfTypeAll <HMUI.Scrollbar>().First(s => s.name != "CustomUISlider"), newSettingsObject.transform.Find("Value"), false); slider.Scrollbar.name = "CustomUISlider"; slider.Scrollbar.GetComponentInChildren <TextMeshProUGUI>().enableWordWrapping = false; (slider.Scrollbar.transform as RectTransform).sizeDelta = new Vector2(39.5f, 4.5f); (slider.Scrollbar.transform as RectTransform).anchorMin = new Vector2(0, 0.5f); slider.Scrollbar.numberOfSteps = (int)((max - min) / increment) + 1; slider.MinValue = min; slider.MaxValue = max; slider.IsIntValue = intValues; var tmpText = newSettingsObject.GetComponentInChildren <TMP_Text>(); tmpText.text = name; if (hintText != String.Empty) { BeatSaberUI.AddHintText(tmpText.rectTransform, hintText); } viewController?.AddSubmenuOption(newSettingsObject); AddHooks(newSliderSettingsController); return(newSliderSettingsController); }
public static T AddToggleSetting <T>(RectTransform parent, string name, Vector2 position) where T : MonoBehaviour { var switchSettings = Resources.FindObjectsOfTypeAll <SwitchSettingsController>().FirstOrDefault(); GameObject newSettingsObject = UnityEngine.Object.Instantiate(switchSettings.gameObject, parent); newSettingsObject.name = name; SwitchSettingsController volume = newSettingsObject.GetComponent <SwitchSettingsController>(); T newToggleSettingsController = volume.gameObject.AddComponent <T>(); UnityEngine.Object.DestroyImmediate(volume); newSettingsObject.GetComponentInChildren <TMP_Text>().text = name; (newToggleSettingsController.transform as RectTransform).anchorMin = new Vector2(0.5f, 0.5f); (newToggleSettingsController.transform as RectTransform).anchorMax = new Vector2(0.5f, 0.5f); (newToggleSettingsController.transform as RectTransform).anchoredPosition = position; return(newToggleSettingsController); }
public T AddColorPickerSetting <T>(string name, string hintText, Color color, out ColorPickerPreviewClickable clickablePreview) where T : MonoBehaviour { var volumeSettings = Resources.FindObjectsOfTypeAll <SwitchSettingsController>().FirstOrDefault(); GameObject newSettingsObject = MonoBehaviour.Instantiate(volumeSettings.gameObject, transform); newSettingsObject.name = name; SwitchSettingsController volume = newSettingsObject.GetComponent <SwitchSettingsController>(); T newColorPickerSettingsController = (T)ReflectionUtil.CopyComponent(volume, typeof(MonoBehaviour), typeof(T), newSettingsObject); MonoBehaviour.DestroyImmediate(volume); GameObject.Destroy(newSettingsObject.GetComponentInChildren <HorizontalLayoutGroup>()); GameObject.Destroy(newSettingsObject.transform.Find("Value").Find("DecButton").gameObject); GameObject.Destroy(newSettingsObject.transform.Find("Value").Find("ValueText").gameObject); GameObject.Destroy(newSettingsObject.transform.Find("Value").Find("IncButton").gameObject); ColorPickerPreviewClickable cppc = new GameObject("ColorPickerPreviewClickable").AddComponent <ColorPickerPreviewClickable>(); cppc.transform.SetParent(newSettingsObject.transform.Find("Value"), false); cppc.ImagePreview.color = color; (cppc.transform as RectTransform).localScale = new Vector2(0.06f, 0.06f); (cppc.transform as RectTransform).localPosition += new Vector3(3f, 0.1f); clickablePreview = cppc; var tmpText = newSettingsObject.GetComponentInChildren <TMP_Text>(); tmpText.text = name; if (hintText != String.Empty) { BeatSaberUI.AddHintText(tmpText.rectTransform, hintText); } viewController?.AddSubmenuOption(newSettingsObject); AddHooks(newColorPickerSettingsController); return(newColorPickerSettingsController); }