DayZ 1.27
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено
OptionSelectorSlider.c
См. документацию.
1class OptionSelectorSlider extends OptionSelectorSliderSetup
2{
3 protected bool m_Changed;
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 = 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);
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 {
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 {
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() == "")
240 }
241
243 {
244 return m_ShowEditbox;
245 }
246}
Icon x
Icon y
override void SetValue(int value, bool fire_event=true)
Определения OptionSelectorMultistate.c:233
class PlayerStatBase m_MinValue
T m_MaxValue
Определения PlayerStatBase.c:35
Widget m_Root
Определения SizeToChild.c:91
Widget m_Parent
Определения SizeToChild.c:92
void Refresh()
Определения SizeToChild.c:108
float GetValue()
Определения SyncedValue.c:55
proto native WorkspaceWidget GetWorkspace()
Определения EnWidgets.c:354
override bool OnDoubleClick(Widget w, int x, int y, int button)
Определения OptionSelectorSlider.c:143
void UpdateActiveOption()
Определения OptionSelectorSlider.c:222
bool IsValidEditboxValue(string text)
Определения OptionSelectorSlider.c:118
bool IsValueTextVisible()
Определения OptionSelectorSlider.c:242
override bool OnFocusLost(Widget w, int x, int y)
Определения OptionSelectorSlider.c:176
override bool IsFocusable(Widget w)
Определения OptionSelectorSlider.c:187
override bool OnFocus(Widget w, int x, int y)
Определения OptionSelectorSlider.c:161
EditBoxWidget m_ValueText
Определения OptionSelectorSlider.c:4
float GetRangePercantageByValue()
Определения OptionSelectorSlider.c:73
override void Enable()
Определения OptionSelectorLevelMarker.c:36
void OptionSelectorSlider(Widget parent, float value, ScriptedWidgetEventHandler parent_menu, bool disabled, float min, float max, bool showEditbox=false)
Определения OptionSelectorSlider.c:8
override bool OnMouseLeave(Widget w, Widget enterW, int x, int y)
Определения OptionSelectorSlider.c:196
void Refresh(float defaultValue=-1)
Определения OptionSelectorSlider.c:59
override bool OnChange(Widget w, int x, int y, bool finished)
Определения OptionSelectorSlider.c:79
This Option Selector handles a Slider Marker, which basically has 2 sliders One slider is for selecti...
Определения OptionSelectorLevelMarker.c:7
map: item x vector(index, width, height)
Определения EnWidgets.c:651
Определения EnWidgets.c:190
proto string ToString(bool simple=true)
proto native CGame GetGame()
array< string > TStringArray
Определения EnScript.c:685
proto native int Length()
Returns length of string.
proto string Get(int index)
Gets n-th character from string.
proto native int ToInt()
Converts string to integer.
WidgetFlags
Определения EnWidgets.c:58
proto native external Widget CreateWidgets(string layout, Widget parentWidget=NULL, bool immedUpdate=true)
Create widgets from *.layout file.
proto native void SetFocus(Widget w)
int ARGB(int a, int r, int g, int b)
Определения proto.c:322