public T AddSliderSetting <T>(string name, string hintText, float min, float max, bool intValues) where T : IncDecSettingsController
        {
            var        volumeSettings    = Resources.FindObjectsOfTypeAll <WindowModeSettingsController>().FirstOrDefault();
            GameObject newSettingsObject = MonoBehaviour.Instantiate(volumeSettings.gameObject, transform);

            newSettingsObject.name = name;

            WindowModeSettingsController volume = newSettingsObject.GetComponent <WindowModeSettingsController>();
            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);

            HMUI.Scrollbar slider = GameObject.Instantiate(Resources.FindObjectsOfTypeAll <HMUI.Scrollbar>().First(),
                                                           newSettingsObject.transform.Find("Value"), false);
            SliderProperties sliderProperties = slider.gameObject.AddComponent <SliderProperties>();

            sliderProperties.FromValue = min;
            sliderProperties.ToValue   = max;
            sliderProperties.IntValues = intValues;
            slider.GetComponentInChildren <TextMeshProUGUI>().enableWordWrapping = false;
            (slider.transform as RectTransform).sizeDelta = new Vector2(39.5f, 7.5f);
            (slider.transform as RectTransform).anchorMin = new Vector2(0, 0.5f);

            var tmpText = newSettingsObject.GetComponentInChildren <TMP_Text>();

            tmpText.text = name;
            BeatSaberUI.AddHintText(tmpText.rectTransform, hintText);

            return(newSliderSettingsController);
        }
        public static HMUI.Scrollbar CreateUISlider(RectTransform parent, float fromValue, float toValue, bool intValues, UnityAction <float> onValueChanged = null)
        {
            HMUI.Scrollbar     slider = Instantiate(Resources.FindObjectsOfTypeAll <HMUI.Scrollbar>().First(), parent, false);
            SliderProperties[] sps    = slider.gameObject.GetComponents <SliderProperties>();
            for (int i = 0; i < sps.Length; ++i)
            {
                Destroy(sps[i]);
            }
            SliderProperties sliderProperties = slider.gameObject.AddComponent <SliderProperties>();

            sliderProperties.FromValue = fromValue;
            sliderProperties.ToValue   = toValue;
            sliderProperties.IntValues = intValues;
            sliderProperties.SetCurrentValueFromPercentage(slider.value);

            slider.GetComponentInChildren <TextMeshProUGUI>().text = sliderProperties.CurrentValue.ToString("N1");
            slider.onValueChanged.AddListener(delegate(float value) {
                TextMeshProUGUI valueLabel    = slider.GetComponentInChildren <TextMeshProUGUI>();
                valueLabel.enableWordWrapping = false;
                sliderProperties.SetCurrentValueFromPercentage(value);
                valueLabel.text = sliderProperties.CurrentValue.ToString("N1");
            });
            if (onValueChanged != null)
            {
                slider.onValueChanged.AddListener(onValueChanged);
            }
            return(slider);
        }
Beispiel #3
0
 public override void Init()
 {
     _sliderInst           = transform.GetComponentInChildren <HMUI.Scrollbar>();
     _sliderPropertiesInst = _sliderInst.gameObject.GetComponent <SliderProperties>();
     _sliderPropertiesInst.CurrentValue = GetInitValue();
     _textInst         = _sliderInst.GetComponentInChildren <TMPro.TextMeshProUGUI>();
     _sliderInst.value = _sliderPropertiesInst.GetPercentageFromValue(_sliderPropertiesInst.CurrentValue);
     _sliderInst.onValueChanged.AddListener(delegate(float value) {
         _sliderPropertiesInst.SetCurrentValueFromPercentage(value);
         RefreshUI();
     });
     RefreshUI();
 }