Exemplo n.º 1
0
        private new void Awake()
        {
            base.Awake();
            _ColorPickerBundle = UIUtilities.ColorPickerBundle;
            if (_ColorPickerBundle == null)
            {
                Console.WriteLine("[BeatSaberCustomUI.ColorPicker]: The loading of the 'ColorPicker.assetbundle' resulted into a failure, stopping the ColorPicker creation.");
                return;
            }

            //ColorPickerPreview initialization
            ColorPickerPreview = new GameObject("ColorPickerPreview").AddComponent <ColorPickerPreview>();
            if (ColorPickerPreview != null)
            {
                ColorPickerPreview.transform.SetParent(transform, false);
                (ColorPickerPreview.transform as RectTransform).sizeDelta = new Vector2(8.5f, 8.5f);
                ColorPickerPreview.transform.Translate(-40f, 35.5f, 0);
            }
            else
            {
                Console.WriteLine("[BeatSaberCustomUI.ColorPicker]: The 'ColorPickerPreview' instance was null.");
            }
            //ColorPickerCore initialization
            ColorPickerCore = new GameObject("ColorPickerCore").AddComponent <ColorPickerCore>();
            if (ColorPickerCore != null)
            {
                ColorPickerCore.ColorPickerPreview = ColorPickerPreview;
                ColorPickerCore.ColorPickerBundle  = _ColorPickerBundle;
                ColorPickerCore.Initialize();
                ColorPickerCore.transform.SetParent(transform, false);
                (ColorPickerCore.transform as RectTransform).sizeDelta = new Vector2(50, 50);
            }
            else
            {
                Console.WriteLine("[BeatSaberCustomUI.ColorPicker]: The 'ColorPickerCore' instance was null.");
            }

            //ColorPickerHue background initialization
            ColorPickerHueBG = new GameObject("ColorPickerHueBG").AddComponent <HMUI.Image>();
            if (ColorPickerHueBG != null)
            {
                ColorPickerHueBG.material = new Material(_ColorPickerBundle.LoadAsset <Shader>("HueSlider"));
                ColorPickerHueBG.transform.SetParent(transform, false);
                (ColorPickerHueBG.transform as RectTransform).sizeDelta = new Vector2(50, 7.5f);
                ColorPickerHueBG.transform.Translate(0, 35, 0);
            }
            else
            {
                Console.WriteLine("[BeatSaberCustomUI.ColorPicker]: The 'ColorPickerHueBG' instance was null.");
            }

            //ColorPickerHue slider initialization
            ColorPickerHueSlider = BeatSaberUI.CreateUISlider(transform as RectTransform, 0f, 1f, false, (float value) => {
                if (HueSliderProperties != null)
                {
                    HueSliderProperties.SetCurrentValueFromPercentage(value);
                }
                ColorPickerCore.ChangeColorPickerHue(value);
            });
            if (ColorPickerHueSlider != null)
            {
                HueSliderProperties                  = ColorPickerHueSlider.GetComponent <SliderProperties>();
                ColorPickerHueSlider.value           = 0f;
                ColorPickerHueSlider.gameObject.name = "ColorPickerHueSlider";
                ColorPickerHueSlider.transform.SetParent(transform, false);
                (ColorPickerHueSlider.transform as RectTransform).sizeDelta        = new Vector2(54, 7.5f);
                (ColorPickerHueSlider.transform as RectTransform).anchoredPosition = new Vector2(0, -2f);
                ColorPickerHueSlider.transform.Translate(0, 37f, -0.00001f);
                ColorPickerHueSlider.GetComponent <Image>().color = new Color(0, 0, 0, 0);
                ColorPickerHueSlider.transform.Find("SlidingArea/Handle").GetComponent <Image>().color = new Color(1, 1, 1, 1);
                ColorPickerHueSlider.GetComponentInChildren <TMPro.TextMeshProUGUI>().color            = new Color(1, 1, 1, 0);
            }
            else
            {
                Console.WriteLine("[BeatSaberCustomUI.ColorPicker]: The 'ColorPickerHueSlider' instance was null.");
            }

            Console.WriteLine("[BeatSaberCustomUI.ColorPicker]: ColorPicker awake done.");
        }
Exemplo n.º 2
0
        public void Initialize(CustomMenu customMenu, Color color)
        {
            RectTransform colorContainer = new GameObject("ColorPickerContainer", typeof(RectTransform)).transform as RectTransform;

            colorContainer.SetParent(customMenu.mainViewController.rectTransform, false);
            colorContainer.sizeDelta = new Vector2(60f, 0f);

            //ColorPickerPreview initialization
            ColorPickerPreview = new GameObject("ColorPickerPreview").AddComponent <ColorPickerPreview>();
            if (ColorPickerPreview != null)
            {
                ColorPickerPreview.transform.SetParent(colorContainer, false);
                (ColorPickerPreview.transform as RectTransform).sizeDelta     = new Vector2(8.5f, 8.5f);
                (ColorPickerPreview.transform as RectTransform).localPosition = new Vector3(55f, -20, 0);
                TextMeshProUGUI previewText = BeatSaberUI.CreateText(colorContainer, "Preview", new Vector2(0, 0), new Vector2(0, 0));
                previewText.enableWordWrapping     = false;
                previewText.rectTransform.position = ColorPickerPreview.transform.TransformPoint(new Vector3(-previewText.preferredWidth * 1.5f - 2f, 2.5f, 0));
            }
            else
            {
                Console.WriteLine("[BeatSaberCustomUI.ColorPicker]: The 'ColorPickerPreview' instance was null.");
            }
            //ColorPickerCore initialization
            ColorPickerCore = new GameObject("ColorPickerCore").AddComponent <ColorPickerCore>();
            if (ColorPickerCore != null)
            {
                ColorPickerCore.ColorPickerPreview = ColorPickerPreview;
                ColorPickerCore.Initialize(SetPreviewColor);
                ColorPickerCore.transform.SetParent(transform, false);
                (ColorPickerCore.transform as RectTransform).sizeDelta     = new Vector2(60, 60);
                (ColorPickerCore.transform as RectTransform).localPosition = new Vector3(0, 15f);
            }
            else
            {
                Console.WriteLine("[BeatSaberCustomUI.ColorPicker]: The 'ColorPickerCore' instance was null.");
            }

            var previewImg = ColorPickerPreview.ImagePreview;

            _sliderR = BeatSaberUI.CreateUISlider(transform, 0, 3000, 1, true, (val) =>
            {
                previewImg.color = new Color(val / 255f, _currentColor.g, _currentColor.b, _currentColor.a);
                _currentColor    = previewImg.color;
            });
            (_sliderR.Scrollbar.transform as RectTransform).sizeDelta     = new Vector2(60f, 4.5f);
            (_sliderR.Scrollbar.transform as RectTransform).localPosition = new Vector3(70f, 28, 0);
            TextMeshProUGUI rText = BeatSaberUI.CreateText(colorContainer, "R", new Vector2(0, 0), new Vector2(0, 0));

            rText.rectTransform.position = _sliderR.Scrollbar.transform.TransformPoint(new Vector3(-34, 3.74f, 0));

            _sliderG = BeatSaberUI.CreateUISlider(transform, 0, 3000, 1, true, (val) =>
            {
                previewImg.color = new Color(_currentColor.r, val / 255f, _currentColor.b, _currentColor.a);
                _currentColor    = previewImg.color;
            });
            (_sliderG.Scrollbar.transform as RectTransform).sizeDelta     = new Vector2(60f, 4.5f);
            (_sliderG.Scrollbar.transform as RectTransform).localPosition = new Vector3(70f, 20, 0);
            TextMeshProUGUI gText = BeatSaberUI.CreateText(colorContainer, "G", new Vector2(0, 0), new Vector2(0, 0));

            gText.rectTransform.position = _sliderG.Scrollbar.transform.TransformPoint(new Vector3(-34, 3.74f, 0));

            _sliderB = BeatSaberUI.CreateUISlider(transform, 0, 3000, 1, true, (val) =>
            {
                previewImg.color = new Color(_currentColor.r, _currentColor.g, val / 255f, _currentColor.a);
                _currentColor    = previewImg.color;
            });
            (_sliderB.Scrollbar.transform as RectTransform).sizeDelta     = new Vector2(60f, 4.5f);
            (_sliderB.Scrollbar.transform as RectTransform).localPosition = new Vector3(70f, 12, 0);
            TextMeshProUGUI bText = BeatSaberUI.CreateText(colorContainer, "B", new Vector2(0, 0), new Vector2(0, 0));

            bText.rectTransform.position = _sliderB.Scrollbar.transform.TransformPoint(new Vector3(-34, 3.74f, 0));

            _sliderA = BeatSaberUI.CreateUISlider(transform, 0, 255, 1, true, (val) =>
            {
                previewImg.color = new Color(_currentColor.r, _currentColor.g, _currentColor.b, val / 255f);
                _currentColor    = previewImg.color;
            });
            (_sliderA.Scrollbar.transform as RectTransform).sizeDelta     = new Vector2(60f, 4.5f);
            (_sliderA.Scrollbar.transform as RectTransform).localPosition = new Vector3(70f, 4, 0);
            TextMeshProUGUI aText = BeatSaberUI.CreateText(colorContainer, "A", new Vector2(0, 0), new Vector2(0, 0));

            aText.rectTransform.position = _sliderA.Scrollbar.transform.TransformPoint(new Vector3(-34, 3.74f, 0));

            // Ok button
            _okButton = Instantiate(Resources.FindObjectsOfTypeAll <Button>().First(x => (x.name == "QuitButton")), colorContainer, false);
            _okButton.ToggleWordWrapping(false);
            (_okButton.transform as RectTransform).anchoredPosition = new Vector2(40f, -30f);
            _okButton.SetButtonText("Ok");
            _okButton.onClick.RemoveAllListeners();
            _okButton.onClick.AddListener(delegate()
            {
                customMenu.Dismiss();
            });

            // Cancel button
            _cancelButton = Instantiate(Resources.FindObjectsOfTypeAll <Button>().First(x => (x.name == "QuitButton")), colorContainer, false);
            _cancelButton.ToggleWordWrapping(false);
            (_cancelButton.transform as RectTransform).anchoredPosition = new Vector2(15f, -30f);
            _cancelButton.SetButtonText("Cancel");
            _cancelButton.onClick.RemoveAllListeners();
            _cancelButton.onClick.AddListener(delegate()
            {
                SetPreviewColor(_originalColor);
                customMenu.Dismiss();
            });

            SetPreviewColor(color);
        }