DayZ Scripts
v1.21.156300 ยท Jun 20, 2023
 
Loading...
Searching...
No Matches
ScriptConsoleWeatherTab.c
Go to the documentation of this file.
2{
3 protected Widget m_Root;
4 ref Timer m_RPCTimer = new Timer();
6 {
7 m_Root = root;
8 }
9
10 void Update(float timeslice);
11
12 bool OnChange(Widget w, int x, int y, bool finished);
13 bool OnClick(Widget w, int x, int y, int button);
14}
15
17{
18 protected const int INTERPOLATION_MAX = 920;
19 protected const int DURATION_MAX = 920;
20
21 // FOG
22 protected SliderWidget m_FogValueSetSlider;
23 protected SliderWidget m_FogValueGetSlider;
24
26
27 protected SliderWidget m_FogInterpolationTimeSlider;
28 protected SliderWidget m_FogDurationTimeSlider;
29
30
33
34 protected EditBoxWidget m_FogValueEditbox;
35 protected EditBoxWidget m_FogInterpolationEditbox;
36 protected EditBoxWidget m_FogDurationEditbox;
37
38 protected static float m_FogValue = -1;
39 protected static float m_FogInterpolationTimeValue;
40 protected static float m_FogDurationTimeValue = -1;
41
42
43 // OVERCAST
44 protected SliderWidget m_OvercastValueSetSlider;
45 protected SliderWidget m_OvercastValueGetSlider;
46
48
49 protected SliderWidget m_OvercastInterpolationTimeSlider;
50 protected SliderWidget m_OvercastDurationTimeSlider;
51
52
55
56 protected EditBoxWidget m_OvercastValueEditbox;
57 protected EditBoxWidget m_OvercastInterpolationEditbox;
58 protected EditBoxWidget m_OvercastDurationEditbox;
59
60 protected static float m_OvercastValue = -1;
61 protected static float m_OvercastInterpolationTimeValue;
62 protected static float m_OvercastDurationTimeValue = -1;
63
64
65 // Rain
66 protected SliderWidget m_RainValueSetSlider;
67 protected SliderWidget m_RainValueGetSlider;
68
70
71 protected SliderWidget m_RainInterpolationTimeSlider;
72 protected SliderWidget m_RainDurationTimeSlider;
73
74
77
78 protected EditBoxWidget m_RainValueEditbox;
79 protected EditBoxWidget m_RainInterpolationEditbox;
80 protected EditBoxWidget m_RainDurationEditbox;
81
82 protected static float m_RainValue = -1;
83 protected static float m_RainInterpolationTimeValue;
84 protected static float m_RainDurationTimeValue = -1;
85
86
87 // Other
88 protected ButtonWidget m_ResetButton;
89 protected ButtonWidget m_UpdateButton;
90 protected ButtonWidget m_ApplyButton;
91
92 protected ButtonWidget m_CopyButton;
93 protected ButtonWidget m_PasteButton;
94
95
96
98 {
99 // FOG
100 m_FogValue = m_FogValueSetSlider.GetCurrent() / 100;
103
104 // OVERCAST
105 m_OvercastValue = m_OvercastValueSetSlider.GetCurrent() / 100;
108
109 // Rain
110 m_RainValue = m_RainValueSetSlider.GetCurrent() / 100;
113 }
114
116 {
117 // FOG
118 m_FogValueSetSlider = SliderWidget.Cast(root.FindAnyWidget("SliderFogValue"));
119 m_FogValueGetSlider = SliderWidget.Cast(root.FindAnyWidget("SliderFogActualValue"));
120 m_FogValueSetText = TextWidget.Cast(root.FindAnyWidget("TextFogValueActual"));
121
122 m_FogInterpolationTimeSlider = SliderWidget.Cast(root.FindAnyWidget("SliderFogTarget"));
123 m_FogDurationTimeSlider = SliderWidget.Cast(root.FindAnyWidget("SliderFogDuration"));
124
125 m_FogInterpolationMaxText = TextWidget.Cast(root.FindAnyWidget("TextMaxFogTarget"));
126 m_FogDurationMaxText = TextWidget.Cast(root.FindAnyWidget("TextMaxFogDuration"));
127
128 m_FogValueEditbox = EditBoxWidget.Cast(root.FindAnyWidget("EditBoxFogValue"));
129 m_FogInterpolationEditbox = EditBoxWidget.Cast(root.FindAnyWidget("EditBoxFogTarget"));
130 m_FogDurationEditbox = EditBoxWidget.Cast(root.FindAnyWidget("EditBoxFogDuration"));
131
132 // OVERCAST
133 m_OvercastValueSetSlider = SliderWidget.Cast(root.FindAnyWidget("SliderOvercastValue"));
134 m_OvercastValueGetSlider = SliderWidget.Cast(root.FindAnyWidget("SliderOvercastActualValue"));
135 m_OvercastValueSetText = TextWidget.Cast(root.FindAnyWidget("TextOvercastValueActual"));
136
137 m_OvercastInterpolationTimeSlider = SliderWidget.Cast(root.FindAnyWidget("SliderOvercastTarget"));
138 m_OvercastDurationTimeSlider = SliderWidget.Cast(root.FindAnyWidget("SliderOvercastDuration"));
139
140 m_OvercastInterpolationMaxText = TextWidget.Cast(root.FindAnyWidget("TextMaxOvercastTarget"));
141 m_OvercastDurationMaxText = TextWidget.Cast(root.FindAnyWidget("TextMaxOvercastDuration"));
142
143 m_OvercastValueEditbox = EditBoxWidget.Cast(root.FindAnyWidget("EditBoxOvercastValue"));
144 m_OvercastInterpolationEditbox = EditBoxWidget.Cast(root.FindAnyWidget("EditBoxOvercastTarget"));
145 m_OvercastDurationEditbox = EditBoxWidget.Cast(root.FindAnyWidget("EditBoxOvercastDuration"));
146
147 // Rain
148 m_RainValueSetSlider = SliderWidget.Cast(root.FindAnyWidget("SliderRainValue"));
149 m_RainValueGetSlider = SliderWidget.Cast(root.FindAnyWidget("SliderRainActualValue"));
150 m_RainValueSetText = TextWidget.Cast(root.FindAnyWidget("TextRainValueActual"));
151
152 m_RainInterpolationTimeSlider = SliderWidget.Cast(root.FindAnyWidget("SliderRainTarget"));
153 m_RainDurationTimeSlider = SliderWidget.Cast(root.FindAnyWidget("SliderRainDuration"));
154
155 m_RainInterpolationMaxText = TextWidget.Cast(root.FindAnyWidget("TextMaxRainTarget"));
156 m_RainDurationMaxText = TextWidget.Cast(root.FindAnyWidget("TextMaxRainDuration"));
157
158 m_RainValueEditbox = EditBoxWidget.Cast(root.FindAnyWidget("EditBoxRainValue"));
159 m_RainInterpolationEditbox = EditBoxWidget.Cast(root.FindAnyWidget("EditBoxRainTarget"));
160 m_RainDurationEditbox = EditBoxWidget.Cast(root.FindAnyWidget("EditBoxRainDuration"));
161
162 //Other
163 m_ResetButton = ButtonWidget.Cast(root.FindAnyWidget("ButtonReset"));
164 m_UpdateButton = ButtonWidget.Cast(root.FindAnyWidget("ButtonUpdate"));
165 m_ApplyButton = ButtonWidget.Cast(root.FindAnyWidget("ButtonApply"));
166
167 m_CopyButton = ButtonWidget.Cast(root.FindAnyWidget("ButtonCopy"));
168 m_PasteButton = ButtonWidget.Cast(root.FindAnyWidget("ButtonPaste"));
169
170
171 InitValues();
172 }
173
174 protected void ResetValues()
175 {
176 // FOG
177 m_FogValueEditbox.SetText("0");
178 m_FogDurationEditbox.SetText(DURATION_MAX.ToString());
179 m_FogInterpolationEditbox.SetText("0");
180
181 // OVERCAST
182 m_OvercastValueEditbox.SetText("0");
183 m_OvercastDurationEditbox.SetText(DURATION_MAX.ToString());
185
186 // Rain
187 m_RainValueEditbox.SetText("0");
188 m_RainDurationEditbox.SetText(DURATION_MAX.ToString());
189 m_RainInterpolationEditbox.SetText("0");
190
192
193 //FOG
194 m_FogValue = 0;
197
198 // OVERCAST
199 m_OvercastValue = 0;
202
203 //RAIN
204 m_RainValue = 0;
207
208
209 }
210
211 protected void InitValues(bool forceCurrent = false)
212 {
213
214 // FOG
215 float fogVal = m_FogValue;
216 if (forceCurrent || m_FogValue == -1)
217 {
218 fogVal = GetGame().GetWeather().GetFog().GetActual();
219 }
220 m_FogValueEditbox.SetText(fogVal.ToString());
221
223
224 if (m_FogDurationTimeValue == -1)
227
229 m_FogDurationMaxText.SetText(DURATION_MAX.ToString());
230
231
232 // OVERCAST
233 float overcastVal = m_OvercastValue;
234 if (forceCurrent || m_OvercastValue == -1)
235 {
236 overcastVal = GetGame().GetWeather().GetOvercast().GetActual();
237 }
238 m_OvercastValueEditbox.SetText(overcastVal.ToString());
239
241
242
246
248 m_OvercastDurationMaxText.SetText(DURATION_MAX.ToString());
249
250 // RAIN
251 float rainVal = m_RainValue;
252 if (forceCurrent || m_RainValue == -1)
253 {
254 rainVal = GetGame().GetWeather().GetRain().GetActual();
255 }
256
257 m_RainValueEditbox.SetText(rainVal.ToString());
259
260 if (m_RainDurationTimeValue == -1)
263
265 m_RainDurationMaxText.SetText(DURATION_MAX.ToString());
266
268 }
269
270 protected void PasteValues(string clipboard)
271 {
272 TStringArray values = new TStringArray();
273 clipboard.Split(" ", values);
274 if (values.Count() != 9)
275 return;
276 // FOG
277 m_FogValueEditbox.SetText(values.Get(0));
278 m_FogInterpolationEditbox.SetText(values.Get(1));
279 m_FogDurationEditbox.SetText(values.Get(2));
280 // OVERCAST
281 m_OvercastValueEditbox.SetText(values.Get(3));
282 m_OvercastInterpolationEditbox.SetText(values.Get(4));
283 m_OvercastDurationEditbox.SetText(values.Get(5));
284 // RAIN
285 m_RainValueEditbox.SetText(values.Get(6));
286 m_RainInterpolationEditbox.SetText(values.Get(7));
287 m_RainDurationEditbox.SetText(values.Get(8));
288 }
289
290 protected string CopyValues()
291 {
292 string output;
293
294 // FOG
295 output += m_FogValueEditbox.GetText();
296 output += " ";
297 output += m_FogInterpolationEditbox.GetText();
298 output += " ";
299 output += m_FogDurationEditbox.GetText();
300 output += " ";
301 // OVERCAST
302 output += m_OvercastValueEditbox.GetText();
303 output += " ";
304 output += m_OvercastInterpolationEditbox.GetText();
305 output += " ";
306 output += m_OvercastDurationEditbox.GetText();
307 output += " ";
308 // RAIN
309 output += m_RainValueEditbox.GetText();
310 output += " ";
311 output += m_RainInterpolationEditbox.GetText();
312 output += " ";
313 output += m_RainDurationEditbox.GetText();
314
315 return output;
316 }
317
318 override bool OnChange(Widget w, int x, int y, bool finished)
319 {
320 bool rmbDrag = (GetMouseState(MouseState.RIGHT) & MB_EVENT_CLICK);
321
322 if (rmbDrag)
323 {
324 // first row
325 if (w == m_FogValueSetSlider)
326 {
327 m_OvercastValueSetSlider.SetCurrent(m_FogValueSetSlider.GetCurrent());
328 m_RainValueSetSlider.SetCurrent(m_FogValueSetSlider.GetCurrent());
329 }
330 else if (w == m_OvercastValueSetSlider)
331 {
332 m_FogValueSetSlider.SetCurrent(m_OvercastValueSetSlider.GetCurrent());
333 m_RainValueSetSlider.SetCurrent(m_OvercastValueSetSlider.GetCurrent());
334 }
335
336 else if (w == m_RainValueSetSlider)
337 {
338 m_FogValueSetSlider.SetCurrent(m_RainValueSetSlider.GetCurrent());
339 m_OvercastValueSetSlider.SetCurrent(m_RainValueSetSlider.GetCurrent());
340 }
341 // second row
342 else if (w == m_FogInterpolationTimeSlider)
343 {
346 }
348 {
351 }
352
353 else if (w == m_RainInterpolationTimeSlider)
354 {
357 }
358 // third row
359 else if (w == m_FogDurationTimeSlider)
360 {
361 m_RainDurationTimeSlider.SetCurrent(m_FogDurationTimeSlider.GetCurrent());
363 }
364 else if (w == m_RainDurationTimeSlider)
365 {
366 m_FogDurationTimeSlider.SetCurrent(m_RainDurationTimeSlider.GetCurrent());
368 }
369
370 else if (w == m_OvercastDurationTimeSlider)
371 {
374 }
375
376 }
377
378
379 SliderWidget slider = SliderWidget.Cast(w);
380 if (slider)
381 {
382 if (rmbDrag && !m_RPCTimer.IsRunning())
383 {
385 m_RPCTimer.Run(0.25, this, "InvokeSendRPC");
386 }
388 return true;
389 }
390 EditBoxWidget box = EditBoxWidget.Cast(w);
391 if (box)
392 {
394 return true;
395 }
396 return false;
397 }
398
400 {
401 //fog
402 float editboxFogValue = m_FogValueEditbox.GetText().ToFloat();
403 m_FogValueSetSlider.SetCurrent(editboxFogValue * 100);
404
405 float editboxFogInterpolation = m_FogInterpolationEditbox.GetText().ToFloat();
406 m_FogInterpolationTimeSlider.SetCurrent(Math.InverseLerp(0,INTERPOLATION_MAX,editboxFogInterpolation) * 100);
407
408 float editboxFogDuration = m_FogDurationEditbox.GetText().ToFloat();
409 m_FogDurationTimeSlider.SetCurrent(Math.InverseLerp(0,INTERPOLATION_MAX,editboxFogDuration) * 100);
410
411 //overcast
412 float editboxOvercastValue = m_OvercastValueEditbox.GetText().ToFloat();
413 m_OvercastValueSetSlider.SetCurrent(editboxOvercastValue * 100);
414
415 float editboxOvercastInterpolation = m_OvercastInterpolationEditbox.GetText().ToFloat();
416 m_OvercastInterpolationTimeSlider.SetCurrent(Math.InverseLerp(0,INTERPOLATION_MAX,editboxOvercastInterpolation) * 100);
417
418 float editboxOvercastDuration = m_OvercastDurationEditbox.GetText().ToFloat();
419 m_OvercastDurationTimeSlider.SetCurrent(Math.InverseLerp(0,INTERPOLATION_MAX,editboxOvercastDuration) * 100);
420
421 //rain
422 float editboxRainValue = m_RainValueEditbox.GetText().ToFloat();
423 m_RainValueSetSlider.SetCurrent(editboxRainValue * 100);
424
425 float editboxRainInterpolation = m_RainInterpolationEditbox.GetText().ToFloat();
426 m_RainInterpolationTimeSlider.SetCurrent(Math.InverseLerp(0,INTERPOLATION_MAX,editboxRainInterpolation) * 100);
427
428 float editboxRainDuration = m_RainDurationEditbox.GetText().ToFloat();
429 m_RainDurationTimeSlider.SetCurrent(Math.InverseLerp(0,INTERPOLATION_MAX,editboxRainDuration) * 100);
430 }
431
433 {
434 //fog
437
440
441 m_FogValue = m_FogValueSetSlider.GetCurrent() / 100;
443
444 //overcast
447
450
451 m_OvercastValue = m_OvercastValueSetSlider.GetCurrent() / 100;
453
454 //rain
457
460
461 m_RainValue = m_RainValueSetSlider.GetCurrent() / 100;
463 }
464
465 override bool OnClick(Widget w, int x, int y, int button)
466 {
467 if (w == m_ApplyButton)
468 {
470 return true;
471 }
472 else if (w == m_UpdateButton)
473 {
474 InitValues(true);
475 return true;
476 }
477 else if (w == m_ResetButton)
478 {
479 ResetValues();
480 InitValues(true);
481 return true;
482 }
483 else if (w == m_CopyButton)
484 {
485 string output = CopyValues();
486 GetGame().CopyToClipboard(output);
487 return true;
488 }
489
490 else if (w == m_PasteButton)
491 {
492 string input;
493 GetGame().CopyFromClipboard(input);
494 PasteValues(input);
496 return true;
497 }
498
499 return false;
500 }
501
502
503
504 //RPC data where each value is strickly as shown in the UI on the sliders
506 {
508 // FOG
509 data.m_FogValue = m_FogValueSetSlider.GetCurrent() / 100;
511 data.m_FogDuration = m_FogDurationTimeSlider.GetCurrent() / 100 * 960;
512
513 // Rain
514 data.m_RainValue = m_RainValueSetSlider.GetCurrent() / 100;
516 data.m_RainDuration = m_RainDurationTimeSlider.GetCurrent() / 100 * 960;
517
518 // OVERCAST
519 data.m_OvercastValue = m_OvercastValueSetSlider.GetCurrent() / 100;
521 data.m_OvercastDuration = m_OvercastDurationTimeSlider.GetCurrent() / 100 * 960;
522
523 return data;
524 }
525
526 //RPC data where the duration and interpolation times are forced(their slider values are ignored) to allow for immediate change and lasting effect
528 {
530 // FOG
531 data.m_FogValue = m_FogValueSetSlider.GetCurrent() / 100;
532 data.m_FogInterpolation = 0;
533 data.m_FogDuration = 960;
534
535 // Rain
536 data.m_RainValue = m_RainValueSetSlider.GetCurrent() / 100;
537 data.m_RainInterpolation = 0;
538 data.m_RainDuration = 960;
539
540 // OVERCAST
541 data.m_OvercastValue = m_OvercastValueSetSlider.GetCurrent() / 100;
543 data.m_OvercastDuration = 960;
544
545 return data;
546 }
547
548 protected void SendRPC(DebugWeatherRPCData data)
549 {
550 GetGame().RPCSingleParam(null, ERPCs.DEV_SET_WEATHER, new Param1<DebugWeatherRPCData>(data), true, GetGame().GetPlayer().GetIdentity());
551 }
552
553 protected void InvokeSendRPC()
554 {
556 }
557
558 override void Update(float timeslice)
559 {
560 super.Update(timeslice);
561 float overcast = GetGame().GetWeather().GetOvercast().GetActual();
562 m_OvercastValueGetSlider.SetCurrent(overcast * 100);
563 m_OvercastValueSetText.SetText(overcast.ToString());
564
565 float fog = GetGame().GetWeather().GetFog().GetActual();
566 m_FogValueGetSlider.SetCurrent(fog * 100);
567 m_FogValueSetText.SetText(fog.ToString());
568
569 float rain = GetGame().GetWeather().GetRain().GetActual();
570 m_RainValueGetSlider.SetCurrent(rain * 100);
571 m_RainValueSetText.SetText(rain.ToString());
572 }
573}
void SendRPC()
ERPCs
Definition ERPCs.c:2
Icon x
Icon y
PlayerBase GetPlayer()
override void InitValues()
protected ButtonWidget m_ApplyButton
protected SliderWidget m_OvercastDurationTimeSlider
static protected float m_OvercastInterpolationTimeValue
protected EditBoxWidget m_RainValueEditbox
protected TextWidget m_OvercastValueSetText
protected SliderWidget m_FogDurationTimeSlider
static protected float m_RainValue
protected EditBoxWidget m_RainInterpolationEditbox
void ScriptConsoleWeatherTab(Widget root)
protected DebugWeatherRPCData GetRPCDataImmediate()
protected SliderWidget m_FogInterpolationTimeSlider
void UpdateSliderValues()
protected EditBoxWidget m_FogValueEditbox
protected EditBoxWidget m_OvercastDurationEditbox
protected void InvokeSendRPC()
protected EditBoxWidget m_OvercastValueEditbox
static protected float m_RainDurationTimeValue
protected TextWidget m_FogValueSetText
protected EditBoxWidget m_FogDurationEditbox
static protected float m_FogInterpolationTimeValue
protected SliderWidget m_RainValueSetSlider
protected ButtonWidget m_PasteButton
static protected float m_OvercastDurationTimeValue
static protected float m_RainInterpolationTimeValue
protected TextWidget m_FogDurationMaxText
static protected float m_OvercastValue
protected EditBoxWidget m_FogInterpolationEditbox
static protected float m_FogValue
protected TextWidget m_RainDurationMaxText
protected SliderWidget m_FogValueSetSlider
protected TextWidget m_RainValueSetText
protected EditBoxWidget m_OvercastInterpolationEditbox
protected TextWidget m_RainInterpolationMaxText
protected SliderWidget m_RainDurationTimeSlider
protected SliderWidget m_OvercastValueSetSlider
protected string CopyValues()
protected SliderWidget m_RainInterpolationTimeSlider
void ~ScriptConsoleWeatherTab()
protected SliderWidget m_RainValueGetSlider
protected ButtonWidget m_CopyButton
static protected float m_FogDurationTimeValue
protected SliderWidget m_OvercastInterpolationTimeSlider
protected const int DURATION_MAX
protected SliderWidget m_OvercastValueGetSlider
protected TextWidget m_OvercastDurationMaxText
protected void PasteValues(string clipboard)
class ScriptConsoleTab INTERPOLATION_MAX
protected ButtonWidget m_ResetButton
void UpdateEditboxValues()
protected void ResetValues()
protected SliderWidget m_FogValueGetSlider
protected ButtonWidget m_UpdateButton
protected TextWidget m_OvercastInterpolationMaxText
protected DebugWeatherRPCData GetRPCDataNormal()
protected TextWidget m_FogInterpolationMaxText
protected EditBoxWidget m_RainDurationEditbox
proto void CopyFromClipboard(out string text)
proto native void CopyToClipboard(string text)
void RPCSingleParam(Object target, int rpc_type, Param param, bool guaranteed, PlayerIdentity recipient=null)
see CGame.RPC
Definition Game.c:882
proto native Weather GetWeather()
Returns weather controller object.
Definition EnMath.c:7
void ScriptConsoleTab(Widget root)
void Update(float timeslice)
bool OnClick(Widget w, int x, int y, int button)
protected Widget m_Root
bool OnChange(Widget w, int x, int y, bool finished)
proto native Overcast GetOvercast()
Returns an overcast phenomenon object.
proto native Rain GetRain()
Returns a rain phenomenon object.
proto native Fog GetFog()
Returns a fog phenomenon object.
proto native float GetActual()
Returns actual value of phenomenon in range <0, 1>.
proto string ToString()
proto native CGame GetGame()
array< string > TStringArray
Definition EnScript.c:685
static proto float InverseLerp(float a, float b, float value)
Calculates the linear value that produces the interpolant value within the range [a,...
const int MB_EVENT_CLICK
MouseState
Definition EnSystem.c:311
proto native int GetMouseState(MouseState index)
void Split(string sample, out array< string > output)
Splits string into array of strings separated by 'sample'.
Definition EnString.c:396
proto native volatile void Update()