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;
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;
40 protected OptionsMenu
m_Menu;
44 void OptionsMenuGame(Widget parent, Widget details_root,
GameOptions options, OptionsMenu menu)
46 m_Root =
GetGame().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"));
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" };
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(
GetGame().GetMission());
205 #ifndef PLATFORM_CONSOLE
212 #ifndef PLATFORM_CONSOLE
213 hud.ShowQuickBar(m_ShowQuickbarSelector.GetValue());
215 hud.ShowQuickBar(
GetGame().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);
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));
378 m_FOVSelector.SetValue(m_FOVOption.ReadValue(),
false);
380 if (m_LanguageOption)
381 m_LanguageSelector.SetValue(m_LanguageOption.GetIndex(),
false);
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);
390 void ToggleDependentOptions(
int mode,
bool state)
394 void InitDependentOptionsVisibility()
396 #ifdef PLATFORM_CONSOLE
397 m_QuickbarButton.Show(
false);
401 protected void UpdateLanguageOption(
int new_index)
403 m_LanguageOption.SetIndex(new_index);
409 protected void UpdatePauseOption(
int new_index)
411 m_PauseOption.SetIndex(new_index);
415 protected void UpdateFOVOption(
float new_value)
417 m_FOVOption.WriteValue(new_value);
418 g_Game.SetUserFOV(new_value);
422 protected void UpdateHUDBrightnessOption(
float newValue)
424 g_Game.SetHudBrightness(newValue);
428 protected void UpdateHUDOption(
int new_index)
433 protected void UpdateBleedingIndication(
int new_index)
438 protected void UpdateConnectivityInfo(
int newIndex)
443 protected void UpdateCrosshairOption(
int new_index)
448 protected void UpdateQuickbarOption(
int new_index)
453 protected void UpdateHUDVehicleOption(
int new_index)
458 protected void UpdateGameOption(
int new_index)
463 protected void UpdateAdminOption(
int new_index)
468 protected void UpdatePlayerOption(
int new_index)
473 protected void UpdateServerInfoOption(
int new_index)
483 IngameHud hud = IngameHud.Cast(
mission.GetHud());
489#ifdef PLATFORM_CONSOLE
490 void UpdateBrightnessOption(
float value)
492 m_BrightnessOption.WriteValue(value);
499 if (w && w.IsInherited(ScrollWidget))
504 if (w && w.IsInherited(SliderWidget))
516 if (w && w.IsInherited(ScrollWidget))
525 override bool OnFocus(Widget w,
int x,
int y)
534 if (TextMapUpdateWidget(w.GetUserID()))
539 if (w.IsInherited(SliderWidget))
548 protected void OnBleedingIndicationChanged(
bool state)
550 MissionGameplay
mission = MissionGameplay.Cast(
GetGame().GetMission());
553 Param1<bool> par =
new Param1<bool>(state);
558 bool TextMapUpdateWidget(
int key)
560 bool connectivityInfoShown = key ==
OptionIDsScript.OPTION_CONNECTIVITY_INFO;
562 Param tmp = m_TextMap.Get(key);
564 m_DetailsBodyDefault.Show(!connectivityInfoShown);
565 m_DetailsBodyConnectivity.Show(connectivityInfoShown);
567 if (
Class.CastTo(p,tmp))
570 m_DetailsText.Show(
true);
571 m_DetailsLabel.SetText(p.param1);
572 m_DetailsText.SetText(p.param2);
574 m_DetailsText.Update();
575 m_DetailsLabel.Update();
577 m_DetailsBodyConnectivity.Update();
597 #ifdef PLATFORM_WINDOWS
619 private void RevertHUDBrightness()
621 if (m_HUDBrightnessSelector)
624 g_Game.SetHudBrightness(m_HUDBrightnessSelector.GetValue());
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.
Base Param Class with no parameters. Used as general purpose parameter overloaded with Param1 to Para...
Result for an object found in CGame.IsBoxCollidingGeometryProxy.
OptionIDsScript
Used for script-based game options. For anything C++ based, you would most likely use "Option Access ...
proto native CGame GetGame()
OptionAccessType
C++ OptionAccessType.
ServerBrowserMenuNew m_Menu
override bool OnFocus(Widget w, int x, int y)