Elin Decompiled Documentation EA 23.102 Nightly
Loading...
Searching...
No Matches
LabeledColorSlider.cs
Go to the documentation of this file.
1using System;
2using System.Text.RegularExpressions;
3using UnityEngine;
4using UnityEngine.UI;
5
7
8public class LabeledColorSlider : MonoBehaviour
9{
10 [SerializeField]
12
13 [SerializeField]
15
16 [SerializeField]
17 private Text label;
18
19 [SerializeField]
21
22 private bool useSecondaryMode;
23
24 private float sliderValueBackup;
25
26 [SerializeField]
28
29 [SerializeField]
31
33 {
34 get
35 {
37 {
38 return sliderType;
39 }
41 }
42 }
43
44 public float Value
45 {
46 get
47 {
48 return slider.value;
49 }
50 set
51 {
52 slider.SetValue(value, sendEvent: false);
53 UpdateInputLabel(value);
54 }
55 }
56
57 public event Action<float> ColorValueChanged = delegate
58 {
59 };
60
61 private void Awake()
62 {
63 slider.onValueChanged.AddListener(UpdateInputLabel);
64 slider.onValueChanged.AddListener(OnValueChanged);
65 bgController.Init(this);
66 input.InputSelected += OnInputSelected;
67 UiInputField uiInputField = input;
68 uiInputField.onValidateInput = (InputField.OnValidateInput)Delegate.Combine(uiInputField.onValidateInput, new InputField.OnValidateInput(OnValidateInput));
69 input.onValueChanged.AddListener(OnInputValueChanged);
70 input.onEndEdit.AddListener(OnInputEndEdit);
71 }
72
73 private char OnValidateInput(string text, int charIndex, char addedChar)
74 {
75 if (!Regex.IsMatch(addedChar.ToString(), "[0-9]"))
76 {
77 return '\0';
78 }
79 return addedChar;
80 }
81
82 public void SetSliderValueAndSendEvent(float value)
83 {
84 slider.SetValue(value, sendEvent: true);
85 }
86
87 private void OnValueChanged(float value)
88 {
89 this.ColorValueChanged(value);
90 }
91
92 private void UpdateInputLabel(float value)
93 {
94 input.text = ((int)(value * (float)GetMaxValue())).ToString();
95 }
96
97 private void OnInputSelected()
98 {
100 }
101
102 private void OnInputValueChanged(string stringValue)
103 {
104 if (input.isFocused)
105 {
106 int value = 0;
107 if (stringValue != "")
108 {
109 value = int.Parse(stringValue);
110 }
111 value = Mathf.Clamp(value, 0, GetMaxValue());
112 slider.value = (float)value / (float)GetMaxValue();
113 input.MoveTextEnd(shift: false);
114 this.ColorValueChanged(slider.value);
115 }
116 }
117
118 private void OnInputEndEdit(string stringValue)
119 {
120 if (string.IsNullOrEmpty(stringValue))
121 {
122 input.text = "0";
123 }
124 if (Input.GetKey(KeyCode.Escape))
125 {
127 }
128 }
129
130 private void RestoreOldValue()
131 {
132 if (!Mathf.Approximately(slider.value, sliderValueBackup))
133 {
135 }
136 input.text = ((int)(Value * 255f)).ToString();
137 this.ColorValueChanged(slider.value);
138 }
139
140 public void ToggleSliderMode()
141 {
144 label.text = Type.ToString().Substring(0, 1);
145 }
146
147 private int GetMaxValue()
148 {
149 if (Type != SliderType.Hue)
150 {
151 return 255;
152 }
153 return 360;
154 }
155}
void OnInputValueChanged(string stringValue)
SliderBackgroundController bgController
char OnValidateInput(string text, int charIndex, char addedChar)
void SetValue(float value, bool sendEvent)