optionsmenugame.c 25 KB

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