Dayz Explorer 1.28.160049
Loading...
Searching...
No Matches
optionselectorslider.c
Go to the documentation of this file.
1class OptionSelectorSlider extends OptionSelectorSliderSetup
2{
3 protected bool m_Changed;
4 protected EditBoxWidget m_ValueText;
5 protected bool m_ShowEditbox;
6 protected float m_LastValue;
7
8 void OptionSelectorSlider(Widget parent, float value, ScriptedWidgetEventHandler parent_menu, bool disabled, float min, float max, bool showEditbox = false)
9 {
10 if (!showEditbox)
11 {
12 m_Root = GetGame().GetWorkspace().CreateWidgets("gui/layouts/new_ui/option_slider.layout", parent);
13 }
14 else
15 {
16 m_Root = GetGame().GetWorkspace().CreateWidgets("gui/layouts/new_ui/option_slider_editbox.layout", parent);
17 m_ValueText = EditBoxWidget.Cast(m_Root.FindAnyWidget("option_value_text"));
18 m_ValueText.Enable(false);
19 #ifdef PLATFORM_CONSOLE
20 m_ValueText.SetFlags(WidgetFlags.IGNOREPOINTER);
21 #endif
22 }
23
24 #ifdef PLATFORM_CONSOLE
25 m_Parent = parent.GetParent().GetParent();
26 #else
27 #ifdef PLATFORM_WINDOWS
28 m_Parent = parent.GetParent();
29 #endif
30 #endif
31
32 m_SelectorType = 1;
33 m_ParentClass = parent_menu;
34 m_Slider = SliderWidget.Cast(m_Root.FindAnyWidget("option_value"));
35 m_Slider.SetCurrent(value);
36
37 m_MinValue = min;
38 m_MaxValue = max;
39 m_LastValue = value;
40 m_ShowEditbox = showEditbox;
41
42 SetValue(value);
43 Enable();
44
45 if (showEditbox)
46 {
48 }
49
50 m_Parent.SetHandler(this);
51 }
52
54 {
55 float percentage = Math.Round(GetRangePercantageByValue());
56 m_ValueText.SetText(percentage.ToString());
57 }
58
59 void Refresh(float defaultValue = -1)
60 {
61 if (m_ShowEditbox)
62 {
63 if (m_ValueText.GetText() == "" && defaultValue > -1)
64 {
65 SetValue(defaultValue);
67 }
68 }
69
70 m_Changed = false;
71 }
72
74 {
75 float percentage = ((GetValue() - m_MinValue) * 100) / (m_MaxValue - m_MinValue);
76 return percentage;
77 }
78
79 override bool OnChange(Widget w, int x, int y, bool finished)
80 {
81 float value;
82 if (w == m_Slider)
83 {
84 if (m_ShowEditbox)
85 {
87 }
88
89 value = GetValue();
90 m_OptionChanged.Invoke(value);
91 m_LastValue = value;
92 return true;
93 }
94 else if (m_ShowEditbox && w == m_ValueText)
95 {
96 if (IsValidEditboxValue(m_ValueText.GetText()))
97 {
98 value = (m_ValueText.GetText().ToFloat() * (m_MaxValue - m_MinValue) / 100) + m_MinValue;
99 m_Slider.SetCurrent(NormalizeInput(value));
100 m_OptionChanged.Invoke(GetValue());
101 return true;
102 }
103 else
104 {
105 m_ValueText.SetText("");
106 Refresh();
107 return true;
108 }
109 }
110 return false;
111 }
112
113 bool Changed()
114 {
115 return m_Changed;
116 }
117
118 bool IsValidEditboxValue(string text)
119 {
120 TStringArray allowedCharacters = {"0","1","2","3","4","5","6","7","8","9"};
121 for (int i = 0; i < text.Length(); i++)
122 {
123 int foundIndex = allowedCharacters.Find(text.Get(i));
124 if (foundIndex == -1)
125 return false;
126
127 // make sure user input value can not contain zeros only
128 if (i > 0 && text.ToInt() == 0)
129 {
130 return false;
131 }
132 }
133
134 // make sure user input value is in valid percantage range (0 - 100)
135 if (text.ToInt() > 100 || text.ToInt() < 0)
136 {
137 return false;
138 }
139
140 return true;
141 }
142
143 override bool OnDoubleClick(Widget w, int x, int y, int button)
144 {
145 #ifndef PLATFORM_CONSOLE
146 if (m_ShowEditbox && w == m_ValueText)
147 {
148 m_ValueText.Enable(true);
149 SetFocus(m_ValueText);
150 m_LastValue = GetValue();
151 m_ValueText.SetText("");
152 m_ValueText.SetTextColor(ARGB(255, 255, 0, 0));
154 return true;
155 }
156 #endif
157
158 return false;
159 }
160
161 override bool OnFocus(Widget w, int x, int y)
162 {
163 if (m_ShowEditbox)
164 {
165 m_LastValue = GetValue();
168 }
169 #ifdef PLATFORM_CONSOLE
170 return super.OnFocus(m_Parent, x, y);
171 #else
172 return false;
173 #endif
174 }
175
176 override bool OnFocusLost(Widget w, int x, int y)
177 {
178 if (m_ShowEditbox && w == m_ValueText)
179 {
180 m_ValueText.Enable(false);
182 }
183
184 return super.OnFocusLost(w, x, y);
185 }
186
187 override bool IsFocusable(Widget w)
188 {
189 if (m_ShowEditbox && w)
190 {
191 return (w == m_Parent || w == m_Slider || w == m_ValueText);
192 }
193 return super.IsFocusable(w);
194 }
195
196 override bool OnMouseLeave(Widget w, Widget enterW, int x, int y)
197 {
198 #ifdef PLATFORM_CONSOLE
199 if (ButtonWidget.Cast(w))
200 {
201 ColorNormalConsole(w);
202 }
203 #else
204 if (m_ShowEditbox && m_ValueText.GetText() == "")
205 {
206 Refresh(m_LastValue);
207 }
208 #endif
209
210 return super.OnMouseLeave(w, enterW, x, y);
211 }
212
214 {
215 OptionsMenuControls menuControls = OptionsMenuControls.Cast(m_ParentClass);
216 if (menuControls)
217 {
218 menuControls.SetActiveOption(this);
219 }
220 }
221
223 {
224 OptionsMenuControls menuControls = OptionsMenuControls.Cast(m_ParentClass);
225 if (menuControls && menuControls.GetActiveOption())
226 {
227 OptionSelectorSlider optionSlider = OptionSelectorSlider.Cast(menuControls.GetActiveOption());
228 if (!optionSlider || !optionSlider.IsValueTextVisible())
229 return;
230
231 optionSlider.Update();
232 }
233 }
234
235 void Update()
236 {
237 m_ValueText.SetTextColor(ARGB(255, 255, 255, 255));
238 if (m_ValueText.GetText() == "")
239 Refresh(m_LastValue);
240 }
241
243 {
244 return m_ShowEditbox;
245 }
246}
Definition enmath.c:7
This Option Selector handles a Slider Marker, which basically has 2 sliders One slider is for selecti...
override bool OnDoubleClick(Widget w, int x, int y, int button)
bool IsValidEditboxValue(string text)
override bool OnFocusLost(Widget w, int x, int y)
override bool IsFocusable(Widget w)
override bool OnFocus(Widget w, int x, int y)
void OptionSelectorSlider(Widget parent, float value, ScriptedWidgetEventHandler parent_menu, bool disabled, float min, float max, bool showEditbox=false)
override bool OnMouseLeave(Widget w, Widget enterW, int x, int y)
void Refresh(float defaultValue=-1)
override bool OnChange(Widget w, int x, int y, bool finished)
Result for an object found in CGame.IsBoxCollidingGeometryProxy.
proto native CGame GetGame()
WidgetFlags
Definition enwidgets.c:58
Icon x
Icon y
override void SetValue(int value, bool fire_event=true)
class PlayerStatBase m_MinValue
T m_MaxValue
int ARGB(int a, int r, int g, int b)
Definition proto.c:322
Widget m_Root
Definition sizetochild.c:91
Widget m_Parent
Definition sizetochild.c:92
void Refresh()
float GetValue()
Definition syncedvalue.c:55