Dayz Explorer 1.28.160049
Loading...
Searching...
No Matches
optionsmenugame.c
Go to the documentation of this file.
1class OptionsMenuGame extends ScriptedWidgetEventHandler
2{
3 private const float HUD_BRIGHTNESS_MIN = -1.0;
4 private const float HUD_BRIGHTNESS_MAX = 0.0;
5
6 protected Widget m_Root;
7
8 protected Widget m_SettingsRoot;
9 protected Widget m_DetailsRoot;
10 protected Widget m_DetailsBodyDefault;
11 protected Widget m_DetailsBodyConnectivity;
12 protected TextWidget m_DetailsLabel;
13 protected RichTextWidget m_DetailsText;
14 protected ButtonWidget m_QuickbarButton;
15
16 protected ref NumericOptionsAccess m_FOVOption;
17 protected ref ListOptionsAccess m_LanguageOption;
18 protected ref ListOptionsAccess m_PauseOption;
19 #ifdef PLATFORM_CONSOLE
20 protected ref NumericOptionsAccess m_BrightnessOption;
21 protected ref OptionSelectorSlider m_BrightnessSelector;
22 #endif
23
24 protected ref OptionSelectorMultistate m_LanguageSelector;
25 protected ref OptionSelectorSlider m_FOVSelector;
26 protected ref OptionSelectorMultistate m_ShowHUDSelector;
27 protected ref OptionSelectorMultistate m_ShowCrosshairSelector;
28 protected ref OptionSelectorMultistate m_ShowQuickbarSelector;
29 protected ref OptionSelectorMultistate m_ShowHUDVehicleSelector;
30 protected ref OptionSelectorMultistate m_ShowGameSelector;
31 protected ref OptionSelectorMultistate m_ShowAdminSelector;
32 protected ref OptionSelectorMultistate m_ShowPlayerSelector;
33 protected ref OptionSelectorMultistate m_ShowServerInfoSelector;
34 protected ref OptionSelectorMultistate m_BleedingIndication;
35 protected ref OptionSelectorMultistate m_ConnectivityInfo;
36 protected ref OptionSelectorSlider m_HUDBrightnessSelector;
37 protected ref OptionSelectorMultistate m_PauseSelector;
38
39 protected GameOptions m_Options;
40 protected OptionsMenu m_Menu;
41
42 protected ref map<int, ref Param2<string, string>> m_TextMap;
43
44 void OptionsMenuGame(Widget parent, Widget details_root, GameOptions options, OptionsMenu menu)
45 {
46 m_Root = GetGame().GetWorkspace().CreateWidgets(GetLayoutName(), parent);
47
48 m_DetailsRoot = details_root;
49 m_DetailsBodyDefault = m_DetailsRoot.FindAnyWidget("settings_details_body");
50 m_DetailsBodyConnectivity = m_DetailsRoot.FindAnyWidget("settings_details_body_connectivity");
51 m_DetailsLabel = TextWidget.Cast(m_DetailsRoot.FindAnyWidget("details_label"));
52 m_DetailsText = RichTextWidget.Cast(m_DetailsRoot.FindAnyWidget("details_content"));
53
54 m_Options = options;
55 m_Menu = menu;
56
57 m_FOVOption = NumericOptionsAccess.Cast(m_Options.GetOptionByType(OptionAccessType.AT_OPTIONS_FIELD_OF_VIEW));
58 m_LanguageOption = ListOptionsAccess.Cast(m_Options.GetOptionByType(OptionAccessType.AT_OPTIONS_LANGUAGE));
59 m_PauseOption = ListOptionsAccess.Cast(m_Options.GetOptionByType(OptionAccessType.AT_OPTIONS_PAUSE));
60
61 m_Root.FindAnyWidget("fov_setting_option").SetUserID(OptionAccessType.AT_OPTIONS_FIELD_OF_VIEW);
62 m_Root.FindAnyWidget("hud_setting_option").SetUserID(OptionIDsScript.OPTION_HUD);
63 m_Root.FindAnyWidget("hud_vehicle_setting_option").SetUserID(OptionIDsScript.OPTION_HUD_VEHICLE);
64 m_Root.FindAnyWidget("hud_brightness_setting_option").SetUserID(OptionIDsScript.OPTION_HUD_BRIGHTNESS);
65 m_Root.FindAnyWidget("crosshair_setting_option").SetUserID(OptionIDsScript.OPTION_CROSSHAIR);
66 m_Root.FindAnyWidget("game_setting_option").SetUserID(OptionIDsScript.OPTION_GAME_MESSAGES);
67 m_Root.FindAnyWidget("admin_setting_option").SetUserID(OptionIDsScript.OPTION_ADMIN_MESSAGES);
68 m_Root.FindAnyWidget("player_setting_option").SetUserID(OptionIDsScript.OPTION_PLAYER_MESSAGES);
69 m_Root.FindAnyWidget("language_setting_option").SetUserID(OptionAccessType.AT_OPTIONS_LANGUAGE);
70 m_Root.FindAnyWidget("bleeding_indication_setting_option").SetUserID(OptionIDsScript.OPTION_BLEEDINGINDICATION);
71 m_Root.FindAnyWidget("connectivity_setting_option").SetUserID(OptionIDsScript.OPTION_CONNECTIVITY_INFO);
72 m_Root.FindAnyWidget("quickbar_setting_option").SetUserID(OptionIDsScript.OPTION_QUICKBAR);
73
74 #ifdef PLATFORM_CONSOLE
75 m_QuickbarButton = ButtonWidget.Cast(m_Root.FindAnyWidget("quickbar_button"));
76 m_Root.FindAnyWidget("brightness_setting_option").SetUserID(OptionAccessType.AT_OPTIONS_BRIGHT_SLIDER);
77 #else
78 m_Root.FindAnyWidget("serverinfo_setting_option").SetUserID(OptionIDsScript.OPTION_SERVER_INFO);
79 m_Root.FindAnyWidget("pause_setting_option").SetUserID(OptionAccessType.AT_OPTIONS_PAUSE);
80 #endif
81
82 FillTextMap();
83
84 array<string> opt = { "#options_controls_disabled", "#options_controls_enabled" };
85 array<string> opt2 = { "#options_controls_enabled", "#options_controls_disabled" };
87 for (int i = 0; i < m_LanguageOption.GetItemsCount(); ++i)
88 {
89 string text;
90 m_LanguageOption.GetItemText(i, text);
91 opt3.Insert(text);
92 }
93
94 array<string> opt4 = { "#options_pc_nopause_0", "#options_pc_nopause_1", "#options_pc_nopause_2" }; // Pause options menu strings
95
96 m_LanguageSelector = new OptionSelectorMultistate(m_Root.FindAnyWidget("language_setting_option"), m_LanguageOption.GetIndex(), this, false, opt3);
97 m_FOVSelector = new OptionSelectorSlider(m_Root.FindAnyWidget("fov_setting_option"), m_FOVOption.ReadValue(), this, false, m_FOVOption.GetMin(), m_FOVOption.GetMax());
98 m_ShowHUDSelector = new OptionSelectorMultistate(m_Root.FindAnyWidget("hud_setting_option"), g_Game.GetProfileOptionBool(EDayZProfilesOptions.HUD), this, false, opt);
99 m_HUDBrightnessSelector = new OptionSelectorSlider(m_Root.FindAnyWidget("hud_brightness_setting_option"), g_Game.GetProfileOptionFloat(EDayZProfilesOptions.HUD_BRIGHTNESS), this, false, HUD_BRIGHTNESS_MIN, HUD_BRIGHTNESS_MAX);
100 m_ShowCrosshairSelector = new OptionSelectorMultistate(m_Root.FindAnyWidget("crosshair_setting_option"), g_Game.GetProfileOptionBool(EDayZProfilesOptions.CROSSHAIR), this, false, opt);
101 m_ShowGameSelector = new OptionSelectorMultistate(m_Root.FindAnyWidget("game_setting_option"), g_Game.GetProfileOptionBool(EDayZProfilesOptions.GAME_MESSAGES), this, false, opt2);
102 m_ShowAdminSelector = new OptionSelectorMultistate(m_Root.FindAnyWidget("admin_setting_option"), g_Game.GetProfileOptionBool(EDayZProfilesOptions.ADMIN_MESSAGES), this, false, opt2);
103 m_ShowPlayerSelector = new OptionSelectorMultistate(m_Root.FindAnyWidget("player_setting_option"), g_Game.GetProfileOptionBool(EDayZProfilesOptions.PLAYER_MESSAGES), this, false, opt2);
104 m_BleedingIndication = new OptionSelectorMultistate(m_Root.FindAnyWidget("bleeding_indication_setting_option"), g_Game.GetProfileOptionBool(EDayZProfilesOptions.BLEEDINGINDICATION), this, false, opt);
105 m_ConnectivityInfo = new OptionSelectorMultistate(m_Root.FindAnyWidget("connectivity_setting_option"), g_Game.GetProfileOptionBool(EDayZProfilesOptions.CONNECTIVITY_INFO), this, false, opt);
106 m_ShowQuickbarSelector = new OptionSelectorMultistate(m_Root.FindAnyWidget("quickbar_setting_option"), g_Game.GetProfileOptionBool(EDayZProfilesOptions.QUICKBAR), this, false, opt);
107 m_ShowHUDVehicleSelector = new OptionSelectorMultistate(m_Root.FindAnyWidget("hud_vehicle_setting_option"), g_Game.GetProfileOptionBool(EDayZProfilesOptions.HUD_VEHICLE), this, false, opt);
108
109 m_LanguageSelector.m_OptionChanged.Insert(UpdateLanguageOption);
110 m_FOVSelector.m_OptionChanged.Insert(UpdateFOVOption);
111 m_ShowHUDSelector.m_OptionChanged.Insert(UpdateHUDOption);
112 m_HUDBrightnessSelector.m_OptionChanged.Insert(UpdateHUDBrightnessOption);
113 m_ShowCrosshairSelector.m_OptionChanged.Insert(UpdateCrosshairOption);
114 m_ShowGameSelector.m_OptionChanged.Insert(UpdateGameOption);
115 m_ShowAdminSelector.m_OptionChanged.Insert(UpdateAdminOption);
116 m_ShowPlayerSelector.m_OptionChanged.Insert(UpdatePlayerOption);
117 m_BleedingIndication.m_OptionChanged.Insert(UpdateBleedingIndication);
118 m_ConnectivityInfo.m_OptionChanged.Insert(UpdateConnectivityInfo);
119 m_ShowQuickbarSelector.m_OptionChanged.Insert(UpdateQuickbarOption);
120 m_ShowHUDVehicleSelector.m_OptionChanged.Insert(UpdateHUDVehicleOption);
121
122 #ifdef PLATFORM_CONSOLE
123 m_BrightnessOption = NumericOptionsAccess.Cast(m_Options.GetOptionByType(OptionAccessType.AT_OPTIONS_BRIGHT_SLIDER));
124 m_BrightnessSelector = new OptionSelectorSlider(m_Root.FindAnyWidget("brightness_setting_option"), m_BrightnessOption.ReadValue(), this, false, m_BrightnessOption.GetMin(), m_BrightnessOption.GetMax());
125 m_BrightnessSelector.m_OptionChanged.Insert(UpdateBrightnessOption);
126 #else
127 m_ShowServerInfoSelector = new OptionSelectorMultistate(m_Root.FindAnyWidget("serverinfo_setting_option"), g_Game.GetProfileOptionBool(EDayZProfilesOptions.SERVERINFO_DISPLAY), this, false, opt);
128 m_PauseSelector = new OptionSelectorMultistate(m_Root.FindAnyWidget("pause_setting_option"), m_PauseOption.GetIndex(), this, false, opt4);
129
130 m_ShowServerInfoSelector.m_OptionChanged.Insert(UpdateServerInfoOption);
131 m_PauseSelector.m_OptionChanged.Insert(UpdatePauseOption);
132 #endif
133
134 float x, y, y2;
135 m_Root.FindAnyWidget("game_settings_scroll").GetScreenSize(x, y);
136 m_Root.FindAnyWidget("game_settings_root").GetScreenSize(x, y2);
137 int f = (y2 > y);
138 m_Root.FindAnyWidget("game_settings_scroll").SetAlpha(f);
139
140 m_Root.SetHandler(this);
141 m_DetailsRoot.Show(false);
142
143 InitDependentOptionsVisibility();
144 }
145
146 void ~OptionsMenuGame()
147 {
148 if (m_FOVOption)
149 {
150 m_FOVOption.Revert();
151 g_Game.SetUserFOV(m_FOVOption.ReadValue());
152 }
153
154 RevertHUDBrightness();
155 }
156
157 string GetLayoutName()
158 {
159 #ifdef PLATFORM_CONSOLE
160 return "gui/layouts/new_ui/options/xbox/game_tab.layout";
161 #else
162 return "gui/layouts/new_ui/options/pc/game_tab.layout";
163 #endif
164 }
165
166 void Focus()
167 {
168 #ifdef PLATFORM_CONSOLE
169 SetFocus(m_LanguageSelector.GetParent());
170 #endif
171 }
172
173 bool IsChanged()
174 {
175 bool universal = (m_ShowHUDSelector.GetValue() != g_Game.GetProfileOptionBool(EDayZProfilesOptions.HUD) || m_ShowCrosshairSelector.GetValue() != g_Game.GetProfileOptionBool(EDayZProfilesOptions.CROSSHAIR));
176 universal = universal || m_HUDBrightnessSelector.GetValue() != g_Game.GetProfileOptionFloat(EDayZProfilesOptions.HUD_BRIGHTNESS);
177 universal = universal || m_ShowHUDVehicleSelector.GetValue() != g_Game.GetProfileOptionBool(EDayZProfilesOptions.HUD_VEHICLE);
178 universal = universal || (m_ShowGameSelector.GetValue() != g_Game.GetProfileOptionBool(EDayZProfilesOptions.GAME_MESSAGES) || m_ShowAdminSelector.GetValue() != g_Game.GetProfileOptionBool(EDayZProfilesOptions.ADMIN_MESSAGES));
179 universal = universal || m_ShowPlayerSelector.GetValue() != g_Game.GetProfileOptionBool(EDayZProfilesOptions.PLAYER_MESSAGES);
180 universal = universal || m_BleedingIndication.GetValue() != g_Game.GetProfileOptionBool(EDayZProfilesOptions.BLEEDINGINDICATION);
181 universal = universal || m_ConnectivityInfo.GetValue() != g_Game.GetProfileOptionBool(EDayZProfilesOptions.CONNECTIVITY_INFO);
182 universal = universal || m_LanguageOption.IsChanged();
183
184 #ifdef PLATFORM_CONSOLE
185 return universal;
186 #else
187 return (universal || m_ShowQuickbarSelector.GetValue() != g_Game.GetProfileOptionBool(EDayZProfilesOptions.QUICKBAR) || m_ShowServerInfoSelector.GetValue() != g_Game.GetProfileOptionBool(EDayZProfilesOptions.SERVERINFO_DISPLAY));
188 #endif
189 }
190
191 void Apply()
192 {
193 IngameHud hud = GetHud();
194 InGameMenu menu = InGameMenu.Cast(GetGame().GetUIManager().FindMenu(MENU_INGAME));
195 MissionGameplay mission = MissionGameplay.Cast(GetGame().GetMission());
196
197 g_Game.SetProfileOptionBool(EDayZProfilesOptions.HUD, m_ShowHUDSelector.GetValue());
198 g_Game.SetProfileOptionBool(EDayZProfilesOptions.CROSSHAIR, m_ShowCrosshairSelector.GetValue());
199 g_Game.SetProfileOptionBool(EDayZProfilesOptions.HUD_VEHICLE, m_ShowHUDVehicleSelector.GetValue());
200 g_Game.SetProfileOptionBool(EDayZProfilesOptions.GAME_MESSAGES, m_ShowGameSelector.GetValue());
201 g_Game.SetProfileOptionBool(EDayZProfilesOptions.ADMIN_MESSAGES, m_ShowAdminSelector.GetValue());
202 g_Game.SetProfileOptionBool(EDayZProfilesOptions.PLAYER_MESSAGES, m_ShowPlayerSelector.GetValue());
203 g_Game.SetProfileOptionFloat(EDayZProfilesOptions.HUD_BRIGHTNESS, m_HUDBrightnessSelector.GetValue());
204
205 #ifndef PLATFORM_CONSOLE
206 g_Game.SetProfileOptionBool(EDayZProfilesOptions.QUICKBAR, m_ShowQuickbarSelector.GetValue());
207 g_Game.SetProfileOptionBool(EDayZProfilesOptions.SERVERINFO_DISPLAY, m_ShowServerInfoSelector.GetValue());
208 #endif
209
210 if (hud)
211 {
212 #ifndef PLATFORM_CONSOLE
213 hud.ShowQuickBar(m_ShowQuickbarSelector.GetValue());
214 #else
215 hud.ShowQuickBar(GetGame().GetInput().IsEnabledMouseAndKeyboardEvenOnServer());
216 #endif
217 hud.ShowHud(m_ShowHUDSelector.GetValue());
218 hud.SetVehicleHudDisabled(!m_ShowHUDVehicleSelector.GetValue());
219 }
220
221 bool bleedingIndicationOld = g_Game.GetProfileOptionBool(EDayZProfilesOptions.BLEEDINGINDICATION);
222 bool bleedingIndicationNew = m_BleedingIndication.GetValue();
223 bool connectivityOld = g_Game.GetProfileOptionBool(EDayZProfilesOptions.CONNECTIVITY_INFO);
224 bool connectivityNew = m_ConnectivityInfo.GetValue();
225
226 g_Game.SetProfileOptionBool(EDayZProfilesOptions.BLEEDINGINDICATION, bleedingIndicationNew);
227 g_Game.SetProfileOptionBool(EDayZProfilesOptions.CONNECTIVITY_INFO, connectivityNew);
228
229 if (mission)
230 {
231 //BLEEDINGINDICATION changed
232 if (bleedingIndicationOld != bleedingIndicationNew)
233 {
234 OnBleedingIndicationChanged(bleedingIndicationNew);
235 }
236
237 //CONNECTIVITY_INFO changed
238 if (connectivityOld != connectivityNew)
239 {
240 mission.GetConnectivityInvoker().Invoke(connectivityNew);
241 }
242 }
243
244 #ifndef PLATFORM_CONSOLE
245 if (menu)
246 {
247 menu.SetServerInfoVisibility(m_ShowServerInfoSelector.GetValue());
248 }
249 #endif
250
251 if (m_LanguageOption.IsChanged()) //language changed
252 {
253 if (mission)
254 {
255 mission.ResetGUI();
256 }
257 else
258 {
259 ErrorEx("mission not found!", ErrorExSeverity.INFO);
260 }
261 }
262 }
263
264 void Revert()
265 {
266 if (m_ShowHUDSelector)
267 m_ShowHUDSelector.SetValue(g_Game.GetProfileOptionBool(EDayZProfilesOptions.HUD), false);
268
269 RevertHUDBrightness();
270
271 if (m_ShowCrosshairSelector)
272 m_ShowCrosshairSelector.SetValue(g_Game.GetProfileOptionBool(EDayZProfilesOptions.CROSSHAIR), false);
273
274 if (m_ShowHUDVehicleSelector)
275 m_ShowHUDVehicleSelector.SetValue(g_Game.GetProfileOptionBool(EDayZProfilesOptions.HUD_VEHICLE), false);
276
277 if (m_FOVOption)
278 {
279 m_FOVSelector.SetValue(m_FOVOption.ReadValue(), false);
280 g_Game.SetUserFOV(m_FOVOption.ReadValue());
281 }
282 if (m_LanguageOption)
283 m_LanguageSelector.SetValue(m_LanguageOption.GetIndex(), false);
284 if (m_ShowGameSelector)
285 m_ShowGameSelector.SetValue(g_Game.GetProfileOptionBool(EDayZProfilesOptions.GAME_MESSAGES), false);
286 if (m_ShowAdminSelector)
287 m_ShowAdminSelector.SetValue(g_Game.GetProfileOptionBool(EDayZProfilesOptions.ADMIN_MESSAGES), false);
288 if (m_ShowPlayerSelector)
289 m_ShowPlayerSelector.SetValue(g_Game.GetProfileOptionBool(EDayZProfilesOptions.PLAYER_MESSAGES), false);
290 if (m_BleedingIndication)
291 m_BleedingIndication.SetValue(g_Game.GetProfileOptionBool(EDayZProfilesOptions.BLEEDINGINDICATION), false);
292 if (m_ConnectivityInfo)
293 m_ConnectivityInfo.SetValue(g_Game.GetProfileOptionBool(EDayZProfilesOptions.CONNECTIVITY_INFO), false);
294
295 #ifdef PLATFORM_CONSOLE
296 if (m_BrightnessSelector)
297 m_BrightnessSelector.SetValue(m_BrightnessOption.ReadValue(), false);
298 #else
299 if (m_ShowQuickbarSelector)
300 m_ShowQuickbarSelector.SetValue(g_Game.GetProfileOptionBool(EDayZProfilesOptions.QUICKBAR), false);
301 if (m_ShowServerInfoSelector)
302 m_ShowServerInfoSelector.SetValue(g_Game.GetProfileOptionBool(EDayZProfilesOptions.SERVERINFO_DISPLAY), false);
303 if (m_PauseOption)
304 {
305 m_PauseSelector.SetValue(m_PauseOption.GetIndex(), false);
306 }
307 #endif
308 }
309
310 void SetToDefaults()
311 {
312 g_Game.ResetProfileOptions();
313
314 if (m_ShowHUDSelector)
315 m_ShowHUDSelector.SetValue(g_Game.GetProfileOptionDefaultBool(EDayZProfilesOptions.HUD), false);
316
317 if (m_HUDBrightnessSelector)
318 {
319 m_HUDBrightnessSelector.SetValue(g_Game.GetProfileOptionDefaultFloat(EDayZProfilesOptions.HUD_BRIGHTNESS), false);
320 g_Game.SetHudBrightness(m_HUDBrightnessSelector.GetValue());
321 }
322
323 if (m_ShowCrosshairSelector)
324 m_ShowCrosshairSelector.SetValue(g_Game.GetProfileOptionDefaultBool(EDayZProfilesOptions.CROSSHAIR), false);
325
326 if (m_ShowHUDVehicleSelector)
327 m_ShowHUDVehicleSelector.SetValue(g_Game.GetProfileOptionDefaultBool(EDayZProfilesOptions.HUD_VEHICLE), false);
328
329 if (m_FOVOption)
330 {
331 m_FOVOption.WriteValue(m_FOVOption.GetDefault());
332 m_FOVSelector.SetValue(m_FOVOption.ReadValue(), false);
333 g_Game.SetUserFOV(m_FOVOption.GetDefault());
334 }
335 if (m_ShowGameSelector)
336 m_ShowGameSelector.SetValue(g_Game.GetProfileOptionDefaultBool(EDayZProfilesOptions.GAME_MESSAGES), false);
337 if (m_ShowAdminSelector)
338 m_ShowAdminSelector.SetValue(g_Game.GetProfileOptionDefaultBool(EDayZProfilesOptions.ADMIN_MESSAGES), false);
339 if (m_ShowPlayerSelector)
340 m_ShowPlayerSelector.SetValue(g_Game.GetProfileOptionDefaultBool(EDayZProfilesOptions.PLAYER_MESSAGES), false);
341 if (m_BleedingIndication)
342 m_BleedingIndication.SetValue(g_Game.GetProfileOptionDefaultBool(EDayZProfilesOptions.BLEEDINGINDICATION), false);
343 if (m_ConnectivityInfo)
344 m_ConnectivityInfo.SetValue(g_Game.GetProfileOptionDefaultBool(EDayZProfilesOptions.CONNECTIVITY_INFO), false);
345
346 #ifdef PLATFORM_CONSOLE
347 if (m_BrightnessSelector)
348 {
349 m_BrightnessOption.WriteValue(m_BrightnessOption.GetDefault());
350 m_BrightnessSelector.SetValue(m_BrightnessOption.GetDefault(), false);
351 }
352 #else
353 if (m_ShowQuickbarSelector)
354 m_ShowQuickbarSelector.SetValue(g_Game.GetProfileOptionDefaultBool(EDayZProfilesOptions.QUICKBAR), false);
355 if (m_ShowServerInfoSelector)
356 m_ShowServerInfoSelector.SetValue(g_Game.GetProfileOptionDefaultBool(EDayZProfilesOptions.SERVERINFO_DISPLAY), false);
357 if (m_PauseOption)
358 {
359 m_PauseOption.SetIndex(m_PauseOption.GetDefaultIndex());
360 m_PauseSelector.SetValue(m_PauseOption.GetIndex(), false);
361 }
362 #endif
363 }
364
365 void ReloadOptions()
366 {
367 m_Menu.ReloadOptions();
368 }
369
370 void SetOptions(GameOptions options)
371 {
372 m_Options = options;
373
374 m_FOVOption = NumericOptionsAccess.Cast(m_Options.GetOptionByType(OptionAccessType.AT_OPTIONS_FIELD_OF_VIEW));
375 m_LanguageOption = ListOptionsAccess.Cast(m_Options.GetOptionByType(OptionAccessType.AT_OPTIONS_LANGUAGE));
376
377 if (m_FOVSelector)
378 m_FOVSelector.SetValue(m_FOVOption.ReadValue(), false);
379
380 if (m_LanguageOption)
381 m_LanguageSelector.SetValue(m_LanguageOption.GetIndex(), false);
382
383 #ifdef PLATFORM_CONSOLE
384 m_BrightnessOption = NumericOptionsAccess.Cast(m_Options.GetOptionByType(OptionAccessType.AT_OPTIONS_BRIGHT_SLIDER));
385 if (m_BrightnessOption)
386 m_BrightnessSelector.SetValue(m_BrightnessOption.ReadValue(), false);
387 #endif
388 }
389
390 void ToggleDependentOptions(int mode, bool state)
391 {
392 }
393
394 void InitDependentOptionsVisibility()
395 {
396 #ifdef PLATFORM_CONSOLE
397 m_QuickbarButton.Show(false);
398 #endif
399 }
400
401 protected void UpdateLanguageOption(int new_index)
402 {
403 m_LanguageOption.SetIndex(new_index);
404 m_Menu.OnChanged();
405
406 TextMapUpdateWidget(OptionAccessType.AT_OPTIONS_LANGUAGE);
407 }
408
409 protected void UpdatePauseOption(int new_index)
410 {
411 m_PauseOption.SetIndex(new_index);
412 m_Menu.OnChanged();
413 }
414
415 protected void UpdateFOVOption(float new_value)
416 {
417 m_FOVOption.WriteValue(new_value);
418 g_Game.SetUserFOV(new_value);
419 m_Menu.OnChanged();
420 }
421
422 protected void UpdateHUDBrightnessOption(float newValue)
423 {
424 g_Game.SetHudBrightness(newValue);
425 m_Menu.OnChanged();
426 }
427
428 protected void UpdateHUDOption(int new_index)
429 {
430 m_Menu.OnChanged();
431 }
432
433 protected void UpdateBleedingIndication(int new_index)
434 {
435 m_Menu.OnChanged();
436 }
437
438 protected void UpdateConnectivityInfo(int newIndex)
439 {
440 m_Menu.OnChanged();
441 }
442
443 protected void UpdateCrosshairOption(int new_index)
444 {
445 m_Menu.OnChanged();
446 }
447
448 protected void UpdateQuickbarOption(int new_index)
449 {
450 m_Menu.OnChanged();
451 }
452
453 protected void UpdateHUDVehicleOption(int new_index)
454 {
455 m_Menu.OnChanged();
456 }
457
458 protected void UpdateGameOption(int new_index)
459 {
460 m_Menu.OnChanged();
461 }
462
463 protected void UpdateAdminOption(int new_index)
464 {
465 m_Menu.OnChanged();
466 }
467
468 protected void UpdatePlayerOption(int new_index)
469 {
470 m_Menu.OnChanged();
471 }
472
473 protected void UpdateServerInfoOption(int new_index)
474 {
475 m_Menu.OnChanged();
476 }
477
478 IngameHud GetHud()
479 {
480 Mission mission = GetGame().GetMission();
481 if (mission)
482 {
483 IngameHud hud = IngameHud.Cast(mission.GetHud());
484 return hud;
485 }
486 return null;
487 }
488
489#ifdef PLATFORM_CONSOLE
490 void UpdateBrightnessOption(float value)
491 {
492 m_BrightnessOption.WriteValue(value);
493 m_Menu.OnChanged();
494 }
495#endif
496
497 override bool OnMouseEnter(Widget w, int x, int y)
498 {
499 if (w && w.IsInherited(ScrollWidget))
500 {
501 return false;
502 }
503
504 if (w && w.IsInherited(SliderWidget))
505 {
506 return false;
507 }
508
509 m_Menu.ColorHighlight(w);
510
511 return true;
512 }
513
514 override bool OnMouseLeave(Widget w, Widget enterW, int x, int y)
515 {
516 if (w && w.IsInherited(ScrollWidget))
517 {
518 return false;
519 }
520
521 m_Menu.ColorNormal(w);
522 return true;
523 }
524
525 override bool OnFocus(Widget w, int x, int y)
526 {
527 if (m_Menu)
528 {
529 m_Menu.OnFocus(w, x, y);
530 }
531
532 if (w)
533 {
534 if (TextMapUpdateWidget(w.GetUserID()))
535 {
536 return true;
537 }
538
539 if (w.IsInherited(SliderWidget))
540 {
541 return true;
542 }
543 }
544 m_DetailsRoot.Show(false);
545 return (w != null);
546 }
547
548 protected void OnBleedingIndicationChanged(bool state)
549 {
550 MissionGameplay mission = MissionGameplay.Cast(GetGame().GetMission());
551 if (mission)
552 {
553 Param1<bool> par = new Param1<bool>(state);
554 mission.GetEffectWidgets().UpdateWidgets(EffectWidgetsTypes.BLEEDING_LAYER,0,par);
555 }
556 }
557
558 bool TextMapUpdateWidget(int key)
559 {
560 bool connectivityInfoShown = key == OptionIDsScript.OPTION_CONNECTIVITY_INFO;
562 Param tmp = m_TextMap.Get(key);
563
564 m_DetailsBodyDefault.Show(!connectivityInfoShown);
565 m_DetailsBodyConnectivity.Show(connectivityInfoShown);
566
567 if (Class.CastTo(p,tmp))
568 {
569 m_DetailsRoot.Show(true);
570 m_DetailsText.Show(true);
571 m_DetailsLabel.SetText(p.param1);
572 m_DetailsText.SetText(p.param2);
573
574 m_DetailsText.Update();
575 m_DetailsLabel.Update();
576 m_DetailsRoot.Update();
577 m_DetailsBodyConnectivity.Update(); //...
578 return true;
579 }
580 return false;
581 }
582
583 void FillTextMap()
584 {
586 m_TextMap.Insert(OptionAccessType.AT_OPTIONS_LANGUAGE, new Param2<string, string>("#options_game_select_language", "#options_game_select_language_desc"));
587 m_TextMap.Insert(OptionAccessType.AT_OPTIONS_FIELD_OF_VIEW, new Param2<string, string>("#options_game_field_of_view", "#options_game_field_of_view_desc"));
588 m_TextMap.Insert(OptionIDsScript.OPTION_HUD, new Param2<string, string>("#options_game_show_HUD", "#options_game_show_HUD_desc"));
589 m_TextMap.Insert(OptionIDsScript.OPTION_HUD_VEHICLE, new Param2<string, string>("#options_game_show_HUD_vehicle", "#options_game_show_HUD_vehicle_desc"));
590 m_TextMap.Insert(OptionIDsScript.OPTION_HUD_BRIGHTNESS, new Param2<string, string>("#options_game_hud_brightness", "#options_game_hud_brightness_desc"));
591 m_TextMap.Insert(OptionIDsScript.OPTION_CROSSHAIR, new Param2<string, string>("#options_game_show_crosshair", "#options_game_show_crosshair_desc"));
592 m_TextMap.Insert(OptionIDsScript.OPTION_QUICKBAR, new Param2<string, string>("#options_game_show_quickbar", "#options_game_show_quickbar_desc"));
593 m_TextMap.Insert(OptionIDsScript.OPTION_SERVER_INFO, new Param2<string, string>("#options_game_show_serverinfo", "#options_game_show_serverinfo_desc"));
594 m_TextMap.Insert(OptionIDsScript.OPTION_BLEEDINGINDICATION, new Param2<string, string>("#options_game_show_bleedingindication", "#options_game_show_bleedingindication_desc"));
595 m_TextMap.Insert(OptionIDsScript.OPTION_CONNECTIVITY_INFO, new Param2<string, string>("#options_game_connectivity", ""));
596
597 #ifdef PLATFORM_WINDOWS
598 m_TextMap.Insert(OptionAccessType.AT_OPTIONS_PAUSE, new Param2<string, string>("#layout_options_pc_nopause_title", "#layout_options_pc_nopause_tooltip"));
599 m_TextMap.Insert(OptionIDsScript.OPTION_GAME_MESSAGES, new Param2<string, string>("#options_pc_game_messages", "#options_game_show_game_msg"));
600 m_TextMap.Insert(OptionIDsScript.OPTION_ADMIN_MESSAGES, new Param2<string, string>("#options_pc_admin_mes", "#options_game_show_admin_msg"));
601 m_TextMap.Insert(OptionIDsScript.OPTION_PLAYER_MESSAGES, new Param2<string, string>("#options_pc_player_messages", "#options_game_show_player_msg"));
602 #else
603 #ifdef PLATFORM_XBOX
604 m_TextMap.Insert(OptionAccessType.AT_OPTIONS_BRIGHT_SLIDER, new Param2<string, string>("#options_video_brightness", "#options_video_brightness_desc"));
605 m_TextMap.Insert(OptionIDsScript.OPTION_GAME_MESSAGES, new Param2<string, string>("#options_xbox_game_messages", "#options_game_show_game_msg"));
606 m_TextMap.Insert(OptionIDsScript.OPTION_ADMIN_MESSAGES, new Param2<string, string>("#options_xbox_admin_mes", "#options_game_show_admin_msg"));
607 m_TextMap.Insert(OptionIDsScript.OPTION_PLAYER_MESSAGES, new Param2<string, string>("#options_xbox_player_messages","#options_game_show_player_msg"));
608 #else
609 #ifdef PLATFORM_PS4
610 m_TextMap.Insert(OptionAccessType.AT_OPTIONS_BRIGHT_SLIDER, new Param2<string, string>("#ps4_options_video_brightness", "#ps4_options_video_brightness_desc"));
611 m_TextMap.Insert(OptionIDsScript.OPTION_GAME_MESSAGES, new Param2<string, string>("#ps4_options_game_messages", "#ps4_options_game_show_game_msg"));
612 m_TextMap.Insert(OptionIDsScript.OPTION_ADMIN_MESSAGES, new Param2<string, string>("#ps4_options_admin_mes", "#ps4_options_game_show_admin_msg"));
613 m_TextMap.Insert(OptionIDsScript.OPTION_PLAYER_MESSAGES, new Param2<string, string>("#ps4_options_player_messages","#ps4_options_game_show_player_msg"));
614 #endif
615 #endif
616 #endif
617 }
618
619 private void RevertHUDBrightness()
620 {
621 if (m_HUDBrightnessSelector)
622 {
623 m_HUDBrightnessSelector.SetValue(g_Game.GetProfileOptionFloat(EDayZProfilesOptions.HUD_BRIGHTNESS), false);
624 g_Game.SetHudBrightness(m_HUDBrightnessSelector.GetValue());
625 }
626 }
627}
override bool OnMouseEnter(Widget w, int x, int y)
override bool OnMouseLeave(Widget w, Widget enterW, int x, int y)
Super root of all classes in Enforce script.
Definition enscript.c:11
override void UpdateWidgets(int type=-1, float timeSlice=0, Param p=null, int handle=-1)
Usually called in course of an OnFrame update, can be manually called from elsewhere with parameters.
Mission class.
Definition gameplay.c:687
Base Param Class with no parameters. Used as general purpose parameter overloaded with Param1 to Para...
Definition param.c:12
Result for an object found in CGame.IsBoxCollidingGeometryProxy.
DayZGame g_Game
Definition dayzgame.c:3868
Mission mission
EDayZProfilesOptions
OptionIDsScript
Used for script-based game options. For anything C++ based, you would most likely use "Option Access ...
Definition gameplay.c:1293
proto native CGame GetGame()
OptionAccessType
C++ OptionAccessType.
Definition gameplay.c:1224
ErrorExSeverity
Definition endebug.c:62
enum ShapeType ErrorEx
const int MENU_INGAME
Definition constants.c:178
Icon x
Icon y
ServerBrowserMenuNew m_Menu
void Focus()
Widget m_DetailsRoot
override bool OnFocus(Widget w, int x, int y)
Widget m_Root
Definition sizetochild.c:91