1class OptionsMenuGame
extends ScriptedWidgetEventHandler
3 private const float HUD_BRIGHTNESS_MIN = -1.0;
4 private const float HUD_BRIGHTNESS_MAX = 0.0;
8 protected Widget m_SettingsRoot;
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;
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;
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;
39 protected GameOptions m_Options;
40 protected OptionsMenu
m_Menu;
44 void OptionsMenuGame(Widget parent, Widget details_root, GameOptions options, OptionsMenu menu)
46 m_Root =
g_Game.GetWorkspace().CreateWidgets(GetLayoutName(), parent);
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"));
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));
64 m_Root.FindAnyWidget(
"hud_brightness_setting_option").SetUserID(
OptionIDsScript.OPTION_HUD_BRIGHTNESS);
70 m_Root.FindAnyWidget(
"bleeding_indication_setting_option").SetUserID(
OptionIDsScript.OPTION_BLEEDINGINDICATION);
71 m_Root.FindAnyWidget(
"connectivity_setting_option").SetUserID(
OptionIDsScript.OPTION_CONNECTIVITY_INFO);
74 #ifdef PLATFORM_CONSOLE
75 m_QuickbarButton = ButtonWidget.Cast(
m_Root.FindAnyWidget(
"quickbar_button"));
84 array<string> opt = {
"#options_controls_disabled",
"#options_controls_enabled" };
85 array<string> opt2 = {
"#options_controls_enabled",
"#options_controls_disabled" };
86 array<string> opt3 =
new array<string>;
87 for (
int i = 0; i < m_LanguageOption.GetItemsCount(); ++i)
90 m_LanguageOption.GetItemText(i, text);
94 array<string> opt4 = {
"#options_pc_nopause_0",
"#options_pc_nopause_1",
"#options_pc_nopause_2" };
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);
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);
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);
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);
130 m_ShowServerInfoSelector.m_OptionChanged.Insert(UpdateServerInfoOption);
131 m_PauseSelector.m_OptionChanged.Insert(UpdatePauseOption);
135 m_Root.FindAnyWidget(
"game_settings_scroll").GetScreenSize(
x,
y);
136 m_Root.FindAnyWidget(
"game_settings_root").GetScreenSize(
x, y2);
138 m_Root.FindAnyWidget(
"game_settings_scroll").SetAlpha(f);
143 InitDependentOptionsVisibility();
146 void ~OptionsMenuGame()
150 m_FOVOption.Revert();
151 g_Game.SetUserFOV(m_FOVOption.ReadValue());
154 RevertHUDBrightness();
157 string GetLayoutName()
159 #ifdef PLATFORM_CONSOLE
160 return "gui/layouts/new_ui/options/xbox/game_tab.layout";
162 return "gui/layouts/new_ui/options/pc/game_tab.layout";
168 #ifdef PLATFORM_CONSOLE
169 SetFocus(m_LanguageSelector.GetParent());
176 universal = universal || m_HUDBrightnessSelector.GetValue() !=
g_Game.GetProfileOptionFloat(
EDayZProfilesOptions.HUD_BRIGHTNESS);
177 universal = universal || m_ShowHUDVehicleSelector.GetValue() !=
g_Game.GetProfileOptionBool(
EDayZProfilesOptions.HUD_VEHICLE);
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();
184 #ifdef PLATFORM_CONSOLE
193 IngameHud hud = GetHud();
195 MissionGameplay
mission = MissionGameplay.Cast(
g_Game.GetMission());
205 #ifndef PLATFORM_CONSOLE
212 #ifndef PLATFORM_CONSOLE
213 hud.ShowQuickBar(m_ShowQuickbarSelector.GetValue());
215 hud.ShowQuickBar(
g_Game.GetInput().IsEnabledMouseAndKeyboardEvenOnServer());
217 hud.ShowHud(m_ShowHUDSelector.GetValue());
218 hud.SetVehicleHudDisabled(!m_ShowHUDVehicleSelector.GetValue());
222 bool bleedingIndicationNew = m_BleedingIndication.GetValue();
224 bool connectivityNew = m_ConnectivityInfo.GetValue();
232 if (bleedingIndicationOld != bleedingIndicationNew)
234 OnBleedingIndicationChanged(bleedingIndicationNew);
238 if (connectivityOld != connectivityNew)
240 mission.GetConnectivityInvoker().Invoke(connectivityNew);
244 #ifndef PLATFORM_CONSOLE
247 menu.SetServerInfoVisibility(m_ShowServerInfoSelector.GetValue());
251 if (m_LanguageOption.IsChanged())
266 if (m_ShowHUDSelector)
269 RevertHUDBrightness();
271 if (m_ShowCrosshairSelector)
274 if (m_ShowHUDVehicleSelector)
279 m_FOVSelector.SetValue(m_FOVOption.ReadValue(),
false);
280 g_Game.SetUserFOV(m_FOVOption.ReadValue());
282 if (m_LanguageOption)
283 m_LanguageSelector.SetValue(m_LanguageOption.GetIndex(),
false);
284 if (m_ShowGameSelector)
286 if (m_ShowAdminSelector)
288 if (m_ShowPlayerSelector)
290 if (m_BleedingIndication)
292 if (m_ConnectivityInfo)
295 #ifdef PLATFORM_CONSOLE
296 if (m_BrightnessSelector)
297 m_BrightnessSelector.SetValue(m_BrightnessOption.ReadValue(),
false);
299 if (m_ShowQuickbarSelector)
301 if (m_ShowServerInfoSelector)
305 m_PauseSelector.SetValue(m_PauseOption.GetIndex(),
false);
312 g_Game.ResetProfileOptions();
314 if (m_ShowHUDSelector)
317 if (m_HUDBrightnessSelector)
320 g_Game.SetHudBrightness(m_HUDBrightnessSelector.GetValue());
323 if (m_ShowCrosshairSelector)
326 if (m_ShowHUDVehicleSelector)
331 m_FOVOption.WriteValue(m_FOVOption.GetDefault());
332 m_FOVSelector.SetValue(m_FOVOption.ReadValue(),
false);
333 g_Game.SetUserFOV(m_FOVOption.GetDefault());
335 if (m_ShowGameSelector)
337 if (m_ShowAdminSelector)
339 if (m_ShowPlayerSelector)
341 if (m_BleedingIndication)
343 if (m_ConnectivityInfo)
346 #ifdef PLATFORM_CONSOLE
347 if (m_BrightnessSelector)
349 m_BrightnessOption.WriteValue(m_BrightnessOption.GetDefault());
350 m_BrightnessSelector.SetValue(m_BrightnessOption.GetDefault(),
false);
353 if (m_ShowQuickbarSelector)
355 if (m_ShowServerInfoSelector)
359 m_PauseOption.SetIndex(m_PauseOption.GetDefaultIndex());
360 m_PauseSelector.SetValue(m_PauseOption.GetIndex(),
false);
364 if (m_LanguageSelector)
366 m_LanguageOption.SetIndex(m_PauseOption.GetDefaultIndex());
367 m_LanguageSelector.SetValue(m_PauseOption.GetIndex(),
false);
376 void SetOptions(GameOptions options)
380 m_FOVOption = NumericOptionsAccess.Cast(m_Options.GetOptionByType(
OptionAccessType.AT_OPTIONS_FIELD_OF_VIEW));
381 m_LanguageOption = ListOptionsAccess.Cast(m_Options.GetOptionByType(
OptionAccessType.AT_OPTIONS_LANGUAGE));
384 m_FOVSelector.SetValue(m_FOVOption.ReadValue(),
false);
386 if (m_LanguageOption)
387 m_LanguageSelector.SetValue(m_LanguageOption.GetIndex(),
false);
389 #ifdef PLATFORM_CONSOLE
390 m_BrightnessOption = NumericOptionsAccess.Cast(m_Options.GetOptionByType(
OptionAccessType.AT_OPTIONS_BRIGHT_SLIDER));
391 if (m_BrightnessOption)
392 m_BrightnessSelector.SetValue(m_BrightnessOption.ReadValue(),
false);
396 void ToggleDependentOptions(
int mode,
bool state)
400 void InitDependentOptionsVisibility()
402 #ifdef PLATFORM_CONSOLE
403 m_QuickbarButton.Show(
false);
407 protected void UpdateLanguageOption(
int new_index)
409 m_LanguageOption.SetIndex(new_index);
415 protected void UpdatePauseOption(
int new_index)
417 m_PauseOption.SetIndex(new_index);
421 protected void UpdateFOVOption(
float new_value)
423 m_FOVOption.WriteValue(new_value);
424 g_Game.SetUserFOV(new_value);
428 protected void UpdateHUDBrightnessOption(
float newValue)
430 g_Game.SetHudBrightness(newValue);
434 protected void UpdateHUDOption(
int new_index)
439 protected void UpdateBleedingIndication(
int new_index)
444 protected void UpdateConnectivityInfo(
int newIndex)
449 protected void UpdateCrosshairOption(
int new_index)
454 protected void UpdateQuickbarOption(
int new_index)
459 protected void UpdateHUDVehicleOption(
int new_index)
464 protected void UpdateGameOption(
int new_index)
469 protected void UpdateAdminOption(
int new_index)
474 protected void UpdatePlayerOption(
int new_index)
479 protected void UpdateServerInfoOption(
int new_index)
489 IngameHud hud = IngameHud.Cast(
mission.GetHud());
495#ifdef PLATFORM_CONSOLE
496 void UpdateBrightnessOption(
float value)
498 m_BrightnessOption.WriteValue(value);
505 if (w && w.IsInherited(ScrollWidget))
510 if (w && w.IsInherited(SliderWidget))
522 if (w && w.IsInherited(ScrollWidget))
531 override bool OnFocus(Widget w,
int x,
int y)
540 if (TextMapUpdateWidget(w.GetUserID()))
545 if (w.IsInherited(SliderWidget))
554 protected void OnBleedingIndicationChanged(
bool state)
556 MissionGameplay
mission = MissionGameplay.Cast(
g_Game.GetMission());
559 Param1<bool> par =
new Param1<bool>(state);
564 bool TextMapUpdateWidget(
int key)
566 bool connectivityInfoShown = key ==
OptionIDsScript.OPTION_CONNECTIVITY_INFO;
567 Param2<string, string> p;
568 Param tmp = m_TextMap.Get(key);
570 m_DetailsBodyDefault.Show(!connectivityInfoShown);
571 m_DetailsBodyConnectivity.Show(connectivityInfoShown);
573 if (Class.CastTo(p,tmp))
576 m_DetailsText.Show(
true);
577 m_DetailsLabel.SetText(p.param1);
578 m_DetailsText.SetText(p.param2);
580 m_DetailsText.Update();
581 m_DetailsLabel.Update();
583 m_DetailsBodyConnectivity.Update();
592 m_TextMap.Insert(
OptionAccessType.AT_OPTIONS_LANGUAGE,
new Param2<string, string>(
"#options_game_select_language",
"#options_game_select_language_desc"));
593 m_TextMap.Insert(
OptionAccessType.AT_OPTIONS_FIELD_OF_VIEW,
new Param2<string, string>(
"#options_game_field_of_view",
"#options_game_field_of_view_desc"));
594 m_TextMap.Insert(
OptionIDsScript.OPTION_HUD,
new Param2<string, string>(
"#options_game_show_HUD",
"#options_game_show_HUD_desc"));
595 m_TextMap.Insert(
OptionIDsScript.OPTION_HUD_VEHICLE,
new Param2<string, string>(
"#options_game_show_HUD_vehicle",
"#options_game_show_HUD_vehicle_desc"));
596 m_TextMap.Insert(
OptionIDsScript.OPTION_HUD_BRIGHTNESS,
new Param2<string, string>(
"#options_game_hud_brightness",
"#options_game_hud_brightness_desc"));
597 m_TextMap.Insert(
OptionIDsScript.OPTION_CROSSHAIR,
new Param2<string, string>(
"#options_game_show_crosshair",
"#options_game_show_crosshair_desc"));
598 m_TextMap.Insert(
OptionIDsScript.OPTION_QUICKBAR,
new Param2<string, string>(
"#options_game_show_quickbar",
"#options_game_show_quickbar_desc"));
599 m_TextMap.Insert(
OptionIDsScript.OPTION_SERVER_INFO,
new Param2<string, string>(
"#options_game_show_serverinfo",
"#options_game_show_serverinfo_desc"));
600 m_TextMap.Insert(
OptionIDsScript.OPTION_BLEEDINGINDICATION,
new Param2<string, string>(
"#options_game_show_bleedingindication",
"#options_game_show_bleedingindication_desc"));
601 m_TextMap.Insert(
OptionIDsScript.OPTION_CONNECTIVITY_INFO,
new Param2<string, string>(
"#options_game_connectivity",
""));
603 #ifdef PLATFORM_WINDOWS
604 m_TextMap.Insert(
OptionAccessType.AT_OPTIONS_PAUSE,
new Param2<string, string>(
"#layout_options_pc_nopause_title",
"#layout_options_pc_nopause_tooltip"));
605 m_TextMap.Insert(
OptionIDsScript.OPTION_GAME_MESSAGES,
new Param2<string, string>(
"#options_pc_game_messages",
"#options_game_show_game_msg"));
606 m_TextMap.Insert(
OptionIDsScript.OPTION_ADMIN_MESSAGES,
new Param2<string, string>(
"#options_pc_admin_mes",
"#options_game_show_admin_msg"));
607 m_TextMap.Insert(
OptionIDsScript.OPTION_PLAYER_MESSAGES,
new Param2<string, string>(
"#options_pc_player_messages",
"#options_game_show_player_msg"));
610 m_TextMap.Insert(
OptionAccessType.AT_OPTIONS_BRIGHT_SLIDER,
new Param2<string, string>(
"#options_video_brightness",
"#options_video_brightness_desc"));
611 m_TextMap.Insert(
OptionIDsScript.OPTION_GAME_MESSAGES,
new Param2<string, string>(
"#options_xbox_game_messages",
"#options_game_show_game_msg"));
612 m_TextMap.Insert(
OptionIDsScript.OPTION_ADMIN_MESSAGES,
new Param2<string, string>(
"#options_xbox_admin_mes",
"#options_game_show_admin_msg"));
613 m_TextMap.Insert(
OptionIDsScript.OPTION_PLAYER_MESSAGES,
new Param2<string, string>(
"#options_xbox_player_messages",
"#options_game_show_player_msg"));
616 m_TextMap.Insert(
OptionAccessType.AT_OPTIONS_BRIGHT_SLIDER,
new Param2<string, string>(
"#ps4_options_video_brightness",
"#ps4_options_video_brightness_desc"));
617 m_TextMap.Insert(
OptionIDsScript.OPTION_GAME_MESSAGES,
new Param2<string, string>(
"#ps4_options_game_messages",
"#ps4_options_game_show_game_msg"));
618 m_TextMap.Insert(
OptionIDsScript.OPTION_ADMIN_MESSAGES,
new Param2<string, string>(
"#ps4_options_admin_mes",
"#ps4_options_game_show_admin_msg"));
619 m_TextMap.Insert(
OptionIDsScript.OPTION_PLAYER_MESSAGES,
new Param2<string, string>(
"#ps4_options_player_messages",
"#ps4_options_game_show_player_msg"));
625 private void RevertHUDBrightness()
627 if (m_HUDBrightnessSelector)
630 g_Game.SetHudBrightness(m_HUDBrightnessSelector.GetValue());
OptionIDsScript
Used for script-based game options. For anything C++ based, you would most likely use "Option Access ...
OptionAccessType
C++ OptionAccessType.
ServerBrowserMenuNew m_Menu
override bool OnFocus(Widget w, int x, int y)
override bool OnMouseEnter(Widget w, int x, int y)
override bool OnMouseLeave(Widget w, Widget enterW, int x, int y)