optionsmenuvideo.c 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664
  1. class OptionsMenuVideo extends ScriptedWidgetEventHandler
  2. {
  3. protected Widget m_Root;
  4. protected Widget m_SettingsRoot;
  5. protected Widget m_DetailsRoot;
  6. protected Widget m_DetailsBodyDefault;
  7. protected Widget m_DetailsBodyConnectivity;
  8. protected TextWidget m_DetailsLabel;
  9. protected RichTextWidget m_DetailsText;
  10. protected GameOptions m_Options;
  11. protected OptionsMenu m_Menu;
  12. #ifdef PLATFORM_CONSOLE
  13. #ifdef PLATFORM_PS4
  14. protected ref OptionSelectorMultistate m_FlipModeSelector;
  15. #endif
  16. #else
  17. //Overall
  18. protected ref OptionSelectorMultistate m_OverallQualitySelector;
  19. //Screen
  20. protected ref OptionSelectorMultistate m_DisplayModeSelector;
  21. protected ref OptionSelectorMultistate m_ResolutionSelector;
  22. protected ref OptionSelectorSlider m_BrightnessSelector;
  23. protected ref OptionSelectorMultistate m_VSyncSelector;
  24. //protected ref OptionSelectorMultistate m_ColorDepthSelector;
  25. //Scene
  26. protected ref OptionSelectorMultistate m_ObjectDetailSelector;
  27. protected ref OptionSelectorMultistate m_TerrainDetailSelector;
  28. protected ref OptionSelectorMultistate m_TextureDetailSelector;
  29. protected ref OptionSelectorMultistate m_ShadowDetailSelector;
  30. protected ref OptionSelectorMultistate m_VisibilitySelector;
  31. protected ref OptionSelectorMultistate m_ObjectVisibilitySelector;
  32. //Rendering
  33. protected ref OptionSelectorMultistate m_TextureFilteringSelector;
  34. protected ref OptionSelectorMultistate m_TerrainSurfaceDetailSelector;
  35. protected ref OptionSelectorMultistate m_PPAASelector;
  36. protected ref OptionSelectorMultistate m_HWAASelector;
  37. protected ref OptionSelectorMultistate m_ATOCSelector;
  38. protected ref OptionSelectorMultistate m_AOSelector;
  39. protected ref OptionSelectorMultistate m_PPQualitySelector;
  40. protected ref OptionSelectorMultistate m_SSRQualitySelector;
  41. #endif
  42. #ifdef PLATFORM_CONSOLE
  43. #ifdef PLATFORM_PS4
  44. protected ref ListOptionsAccess m_FlipModeOption;
  45. #endif
  46. #else
  47. //Overall
  48. protected ref ListOptionsAccess m_OverallQualityOption;
  49. //Screen
  50. protected ref ListOptionsAccess m_DisplayModeOption;
  51. protected ref ListOptionsAccess m_ResolutionOption;
  52. protected ref NumericOptionsAccess m_BrightnessOption;
  53. protected ref ListOptionsAccess m_VSyncOption;
  54. //protected ref ListOptionsAccess m_ColorDepthOption;
  55. //Scene
  56. protected ref ListOptionsAccess m_ObjectDetailOption;
  57. protected ref ListOptionsAccess m_TerrainDetailOption;
  58. protected ref ListOptionsAccess m_TextureDetailOption;
  59. protected ref ListOptionsAccess m_ShadowDetailOption;
  60. protected ref ListOptionsAccess m_VisibilityOption;
  61. protected ref ListOptionsAccess m_ObjectVisibilityOption;
  62. //Rendering
  63. protected ref ListOptionsAccess m_TextureFilteringOption;
  64. protected ref ListOptionsAccess m_TerrainSurfaceDetailOption;
  65. protected ref ListOptionsAccess m_PPAAOption;
  66. protected ref ListOptionsAccess m_HWAAOption;
  67. protected ref ListOptionsAccess m_ATOCOption;
  68. protected ref ListOptionsAccess m_AOOption;
  69. protected ref ListOptionsAccess m_PPQualityOption;
  70. protected ref ListOptionsAccess m_SSRQualityOption;
  71. #endif
  72. protected ref map<int, ref Param2<string, string>> m_TextMap;
  73. void OptionsMenuVideo( Widget parent, Widget details_root, GameOptions options, OptionsMenu menu )
  74. {
  75. m_Root = GetGame().GetWorkspace().CreateWidgets( GetLayoutName(), parent );
  76. m_DetailsRoot = details_root;
  77. m_DetailsBodyDefault = m_DetailsRoot.FindAnyWidget("settings_details_body");
  78. m_DetailsBodyConnectivity = m_DetailsRoot.FindAnyWidget("settings_details_body_connectivity");
  79. m_DetailsLabel = TextWidget.Cast( m_DetailsRoot.FindAnyWidget( "details_label" ) );
  80. m_DetailsText = RichTextWidget.Cast( m_DetailsRoot.FindAnyWidget( "details_content" ) );
  81. SetOptions( options );
  82. m_Menu = menu;
  83. #ifdef PLATFORM_CONSOLE
  84. #ifdef PLATFORM_PS4
  85. m_Root.FindAnyWidget( "vsync_setting_option" ).SetUserID( OptionAccessType.AT_OPTIONS_FLIPMODE );
  86. #endif
  87. #else
  88. m_Root.FindAnyWidget( "overall_quality_setting_option" ).SetUserID( OptionAccessType.AT_QUALITY_PREFERENCE );
  89. m_Root.FindAnyWidget( "display_mode_setting_option" ).SetUserID( OptionAccessType.AT_OPTIONS_DISPLAY_MODE );
  90. m_Root.FindAnyWidget( "resolution_setting_option" ).SetUserID( OptionAccessType.AT_OPTIONS_RESOLUTION );
  91. m_Root.FindAnyWidget( "brightness_setting_option" ).SetUserID( OptionAccessType.AT_OPTIONS_BRIGHT_SLIDER );
  92. m_Root.FindAnyWidget( "vsync_setting_option" ).SetUserID( OptionAccessType.AT_VSYNC_VALUE );
  93. //m_Root.FindAnyWidget( "color_depth_setting_option" ).SetUserID( OptionAccessType.AT_HDR_DETAIL );
  94. //Scene
  95. m_Root.FindAnyWidget( "object_detail_setting_option" ).SetUserID( OptionAccessType.AT_OBJECTS_DETAIL );
  96. m_Root.FindAnyWidget( "terrain_detail_setting_option" ).SetUserID( OptionAccessType.AT_OPTIONS_TERRAIN );
  97. m_Root.FindAnyWidget( "texture_detail_setting_option" ).SetUserID( OptionAccessType.AT_TEXTURE_DETAIL );
  98. m_Root.FindAnyWidget( "shadow_detail_setting_option" ).SetUserID( OptionAccessType.AT_SHADOW_DETAIL );
  99. m_Root.FindAnyWidget( "visibility_setting_option" ).SetUserID( OptionAccessType.AT_OPTIONS_VISIBILITY_COMBO );
  100. m_Root.FindAnyWidget( "object_visibility_setting_option" ).SetUserID( OptionAccessType.AT_OPTIONS_OBJECT_VISIBILITY_COMBO );
  101. //Rendering
  102. m_Root.FindAnyWidget( "texture_filtering_setting_option" ).SetUserID( OptionAccessType.AT_ANISO_DETAIL );
  103. m_Root.FindAnyWidget( "terrain_surface_detail_setting_option" ).SetUserID( OptionAccessType.AT_OPTIONS_TERRAIN_SHADER );
  104. m_Root.FindAnyWidget( "ppaa_setting_option" ).SetUserID( OptionAccessType.AT_OPTIONS_FXAA_VALUE );
  105. m_Root.FindAnyWidget( "hwaa_setting_option" ).SetUserID( OptionAccessType.AT_FSAA_DETAIL );
  106. m_Root.FindAnyWidget( "atoc_setting_option" ).SetUserID( OptionAccessType.AT_ATOC_DETAIL );
  107. m_Root.FindAnyWidget( "ao_setting_option" ).SetUserID( OptionAccessType.AT_AMBIENT_OCCLUSION );
  108. m_Root.FindAnyWidget( "pp_setting_option" ).SetUserID( OptionAccessType.AT_POSTPROCESS_EFFECTS );
  109. m_Root.FindAnyWidget( "ssr_setting_option" ).SetUserID( OptionAccessType.AT_WATER_DETAIL );
  110. #endif
  111. FillTextMap();
  112. InitSelectors();
  113. RefreshCustom();
  114. GetGame().BeginOptionsVideo();
  115. float x, y, y2;
  116. m_Root.FindAnyWidget( "video_settings_scroll" ).GetScreenSize( x, y );
  117. m_Root.FindAnyWidget( "video_settings_root" ).GetScreenSize( x, y2 );
  118. int f = ( y2 > y );
  119. m_Root.FindAnyWidget( "video_settings_scroll" ).SetAlpha( f );
  120. m_Root.SetHandler( this );
  121. }
  122. void ~OptionsMenuVideo()
  123. {
  124. GetGame().EndOptionsVideo();
  125. }
  126. void InitSelectors()
  127. {
  128. #ifdef PLATFORM_CONSOLE
  129. #ifdef PLATFORM_PS4
  130. array<string> opt1 = { "#STR_ENABLED", "#STR_DISABLED", "#STR_SELECTIVE" };
  131. m_FlipModeSelector = new OptionSelectorMultistate( m_Root.FindAnyWidget( "vsync_setting_option" ), m_FlipModeOption.GetIndex(), this, false, opt1 );
  132. #endif
  133. #else
  134. array<string> opt1 = { "#options_controls_disabled", "#options_controls_enabled" };
  135. array<string> opt2 = { "#options_video_fullscreen", "#options_video_windowed" };
  136. array<string> opt3 = { "#options_video_low", "#options_video_medium", "#options_video_high" };
  137. array<string> opt4 = { "#options_video_poor", "#options_video_low", "#options_video_medium", "#options_video_high", "#options_video_extreme" };
  138. array<string> opt41 = { "#options_video_low", "#options_video_medium", "#options_video_high", "#options_video_extreme" };
  139. array<string> opt6 = { "#options_controls_disabled", "#options_video_low", "#options_video_medium", "#options_video_high", "#options_video_extreme" };
  140. array<string> opt7 = { "#options_controls_disabled", "#options_video_low", "#options_video_medium", "#options_video_high" };
  141. array<string> opt9 = { "#options_controls_disabled", "#options_video_low", "#options_video_high" };
  142. //Overall
  143. m_OverallQualitySelector = OptionSelectorMultistate.NewFromAccess( m_Root.FindAnyWidget( "overall_quality_setting_option" ), m_OverallQualityOption, this, false );
  144. //Screen
  145. m_DisplayModeSelector = new OptionSelectorMultistate( m_Root.FindAnyWidget( "display_mode_setting_option" ), m_DisplayModeOption.GetIndex(), this, false, opt2 );
  146. m_ResolutionSelector = OptionSelectorMultistate.NewFromAccess( m_Root.FindAnyWidget( "resolution_setting_option" ), m_ResolutionOption, this, false );
  147. m_BrightnessSelector = new OptionSelectorSlider( m_Root.FindAnyWidget( "brightness_setting_option" ), m_BrightnessOption.ReadValue(), this, false, m_BrightnessOption.GetMin(), m_BrightnessOption.GetMax() );
  148. m_VSyncSelector = new OptionSelectorMultistate( m_Root.FindAnyWidget( "vsync_setting_option" ), m_VSyncOption.GetIndex(), this, false, opt1 );
  149. //m_ColorDepthSelector = new OptionSelectorMultistate( m_Root.FindAnyWidget( "color_depth_setting_option" ), m_ColorDepthOption.GetIndex(), this, false, opt3 );
  150. //Scene
  151. m_ObjectDetailSelector = OptionSelectorMultistate.NewFromAccess( m_Root.FindAnyWidget( "object_detail_setting_option" ), m_ObjectDetailOption, this, false );
  152. m_TerrainDetailSelector = OptionSelectorMultistate.NewFromAccess( m_Root.FindAnyWidget( "terrain_detail_setting_option" ), m_TerrainDetailOption, this, false );
  153. m_TextureDetailSelector = OptionSelectorMultistate.NewFromAccess( m_Root.FindAnyWidget( "texture_detail_setting_option" ), m_TextureDetailOption, this, false );
  154. m_ShadowDetailSelector = new OptionSelectorMultistate( m_Root.FindAnyWidget( "shadow_detail_setting_option" ), m_ShadowDetailOption.GetIndex(), this, false, opt4 );
  155. m_VisibilitySelector = OptionSelectorMultistate.NewFromAccess( m_Root.FindAnyWidget( "visibility_setting_option" ), m_VisibilityOption, this, false );
  156. m_ObjectVisibilitySelector = OptionSelectorMultistate.NewFromAccess( m_Root.FindAnyWidget( "object_visibility_setting_option" ), m_ObjectVisibilityOption, this, false );
  157. //Rendering
  158. m_TextureFilteringSelector = new OptionSelectorMultistate( m_Root.FindAnyWidget( "texture_filtering_setting_option" ), m_TextureFilteringOption.GetIndex(), this, false, opt3 );
  159. m_TerrainSurfaceDetailSelector = new OptionSelectorMultistate( m_Root.FindAnyWidget( "terrain_surface_detail_setting_option" ), m_TerrainSurfaceDetailOption.GetIndex(), this, false, opt41 );
  160. m_PPAASelector = new OptionSelectorMultistate( m_Root.FindAnyWidget( "ppaa_setting_option" ), m_PPAAOption.GetIndex(), this, false, opt6 );
  161. m_HWAASelector = new OptionSelectorMultistate( m_Root.FindAnyWidget( "hwaa_setting_option" ), m_HWAAOption.GetIndex(), this, false, opt7 );
  162. m_ATOCSelector = new OptionSelectorMultistate( m_Root.FindAnyWidget( "atoc_setting_option" ), m_ATOCOption.GetIndex(), this, false, opt1 );
  163. m_AOSelector = new OptionSelectorMultistate( m_Root.FindAnyWidget( "ao_setting_option" ), m_AOOption.GetIndex(), this, false, opt6 );
  164. m_PPQualitySelector = new OptionSelectorMultistate( m_Root.FindAnyWidget( "pp_setting_option" ), m_PPQualityOption.GetIndex(), this, false, opt3 );
  165. m_SSRQualitySelector = new OptionSelectorMultistate( m_Root.FindAnyWidget( "ssr_setting_option" ), m_SSRQualityOption.GetIndex(), this, false, opt9 );
  166. #endif
  167. #ifdef PLATFORM_CONSOLE
  168. #ifdef PLATFORM_PS4
  169. m_FlipModeSelector.m_OptionChanged.Insert( OnFlipModeChanged );
  170. #endif
  171. #else
  172. //Overall
  173. m_OverallQualitySelector.m_OptionChanged.Insert( OnOverallQualityChanged );
  174. //Screen
  175. m_DisplayModeSelector.m_OptionChanged.Insert( OnDisplayModeChanged );
  176. m_ResolutionSelector.m_OptionChanged.Insert( OnResolutionChanged );
  177. m_BrightnessSelector.m_OptionChanged.Insert( OnBrightnessChanged );
  178. m_VSyncSelector.m_OptionChanged.Insert( OnVSyncChanged );
  179. //m_ColorDepthSelector.m_OptionChanged.Insert( OnColorDepthChanged );
  180. //Scene
  181. m_ObjectDetailSelector.m_OptionChanged.Insert( OnObjectDetailChanged );
  182. m_TerrainDetailSelector.m_OptionChanged.Insert( OnTerrainDetailChanged );
  183. m_TextureDetailSelector.m_OptionChanged.Insert( OnTextureDetailChanged );
  184. m_ShadowDetailSelector.m_OptionChanged.Insert( OnShadowDetailChanged );
  185. m_VisibilitySelector.m_OptionChanged.Insert( OnVisibilityChanged );
  186. m_ObjectVisibilitySelector.m_OptionChanged.Insert( OnObjectVisibilityChanged );
  187. //Rendering
  188. m_TextureFilteringSelector.m_OptionChanged.Insert( OnTextureFilteringChanged );
  189. m_TerrainSurfaceDetailSelector.m_OptionChanged.Insert( OnTerrainSurfaceDetailChanged );
  190. m_PPAASelector.m_OptionChanged.Insert( OnPPAAChanged );
  191. m_HWAASelector.m_OptionChanged.Insert( OnHWAAChanged );
  192. m_ATOCSelector.m_OptionChanged.Insert( OnATOCChanged );
  193. m_AOSelector.m_OptionChanged.Insert( OnAOChanged );
  194. m_PPQualitySelector.m_OptionChanged.Insert( OnPPQualityChanged );
  195. m_SSRQualitySelector.m_OptionChanged.Insert( OnSSRQualityChanged );
  196. #endif
  197. }
  198. string GetLayoutName()
  199. {
  200. #ifdef PLATFORM_PS4
  201. return "gui/layouts/new_ui/options/ps/video_tab.layout";
  202. #else
  203. #ifdef PLATFORM_WINDOWS
  204. return "gui/layouts/new_ui/options/pc/video_tab.layout";
  205. #endif
  206. #endif
  207. }
  208. void Focus()
  209. {
  210. #ifdef PLATFORM_PS4
  211. if (m_FlipModeSelector)
  212. {
  213. SetFocus( m_FlipModeSelector.GetParent() );
  214. }
  215. #endif
  216. }
  217. void ReloadOptions()
  218. {
  219. m_Menu.ReloadOptions();
  220. }
  221. bool IsChanged()
  222. {
  223. return false;
  224. }
  225. void Apply()
  226. {
  227. }
  228. void Revert()
  229. {
  230. #ifndef PLATFORM_CONSOLE
  231. m_DisplayModeSelector.SetValue( m_DisplayModeOption.GetIndex(), false );
  232. m_ResolutionSelector.SetValue( m_ResolutionOption.GetIndex(), false );
  233. m_BrightnessSelector.SetValue( m_BrightnessOption.ReadValue(), false );
  234. m_VSyncSelector.SetValue( m_VSyncOption.GetIndex(), false );
  235. //m_ColorDepthSelector.SetValue( m_ColorDepthOption.GetIndex(), false );
  236. m_OverallQualitySelector.SetValue( m_OverallQualityOption.GetIndex(), false );
  237. #endif
  238. RefreshCustom();
  239. #ifndef PLATFORM_CONSOLE
  240. m_OverallQualitySelector.SetValue( m_OverallQualityOption.GetIndex(), false );
  241. #endif
  242. }
  243. void SetToDefaults()
  244. {
  245. #ifdef PLATFORM_CONSOLE
  246. #ifdef PLATFORM_PS4
  247. m_FlipModeSelector.SetValue( m_FlipModeOption.GetDefaultIndex(), false );
  248. #endif
  249. #else
  250. m_DisplayModeSelector.SetValue( m_DisplayModeOption.GetDefaultIndex(), false );
  251. m_ResolutionSelector.SetValue( m_ResolutionOption.GetDefaultIndex(), false );
  252. m_BrightnessSelector.SetValue( m_BrightnessOption.GetDefault(), false );
  253. m_VSyncSelector.SetValue( m_VSyncOption.GetDefaultIndex(), false );
  254. int idx = m_OverallQualityOption.GetDefaultIndex();
  255. m_OverallQualitySelector.SetValue( m_OverallQualityOption.GetDefaultIndex(), true );
  256. #endif
  257. RefreshCustom();
  258. //DefaultValuesToCustom();
  259. }
  260. void SetOptions( GameOptions options )
  261. {
  262. m_Options = options;
  263. #ifdef PLATFORM_CONSOLE
  264. #ifdef PLATFORM_PS4
  265. m_FlipModeOption = ListOptionsAccess.Cast( m_Options.GetOptionByType( OptionAccessType.AT_OPTIONS_FLIPMODE ) );
  266. #endif
  267. #else
  268. //Overall
  269. m_OverallQualityOption = ListOptionsAccess.Cast( m_Options.GetOptionByType( OptionAccessType.AT_QUALITY_PREFERENCE ) );
  270. //Screen
  271. m_DisplayModeOption = ListOptionsAccess.Cast( m_Options.GetOptionByType( OptionAccessType.AT_OPTIONS_DISPLAY_MODE ) );
  272. m_ResolutionOption = ListOptionsAccess.Cast( m_Options.GetOptionByType( OptionAccessType.AT_OPTIONS_RESOLUTION ) );
  273. m_BrightnessOption = NumericOptionsAccess.Cast( m_Options.GetOptionByType( OptionAccessType.AT_OPTIONS_BRIGHT_SLIDER ) );
  274. m_VSyncOption = ListOptionsAccess.Cast( m_Options.GetOptionByType( OptionAccessType.AT_VSYNC_VALUE ) );
  275. //m_ColorDepthOption = ListOptionsAccess.Cast( m_Options.GetOptionByType( OptionAccessType.AT_HDR_DETAIL ) );
  276. //Scene
  277. m_ObjectDetailOption = ListOptionsAccess.Cast( m_Options.GetOptionByType( OptionAccessType.AT_OBJECTS_DETAIL ) );
  278. m_TerrainDetailOption = ListOptionsAccess.Cast( m_Options.GetOptionByType( OptionAccessType.AT_OPTIONS_TERRAIN ) );
  279. m_TextureDetailOption = ListOptionsAccess.Cast( m_Options.GetOptionByType( OptionAccessType.AT_TEXTURE_DETAIL ) );
  280. m_ShadowDetailOption = ListOptionsAccess.Cast( m_Options.GetOptionByType( OptionAccessType.AT_SHADOW_DETAIL ) );
  281. m_VisibilityOption = ListOptionsAccess.Cast( m_Options.GetOptionByType( OptionAccessType.AT_OPTIONS_VISIBILITY_COMBO ) );
  282. m_ObjectVisibilityOption = ListOptionsAccess.Cast( m_Options.GetOptionByType( OptionAccessType.AT_OPTIONS_OBJECT_VISIBILITY_COMBO ) );
  283. //Rendering
  284. m_TextureFilteringOption = ListOptionsAccess.Cast( m_Options.GetOptionByType( OptionAccessType.AT_ANISO_DETAIL ) );
  285. m_TerrainSurfaceDetailOption = ListOptionsAccess.Cast( m_Options.GetOptionByType( OptionAccessType.AT_OPTIONS_TERRAIN_SHADER ) );
  286. m_PPAAOption = ListOptionsAccess.Cast( m_Options.GetOptionByType( OptionAccessType.AT_OPTIONS_FXAA_VALUE ) );
  287. m_HWAAOption = ListOptionsAccess.Cast( m_Options.GetOptionByType( OptionAccessType.AT_FSAA_DETAIL ) );
  288. m_ATOCOption = ListOptionsAccess.Cast( m_Options.GetOptionByType( OptionAccessType.AT_ATOC_DETAIL ) );
  289. m_AOOption = ListOptionsAccess.Cast( m_Options.GetOptionByType( OptionAccessType.AT_AMBIENT_OCCLUSION ) );
  290. m_PPQualityOption = ListOptionsAccess.Cast( m_Options.GetOptionByType( OptionAccessType.AT_POSTPROCESS_EFFECTS ) );
  291. m_SSRQualityOption = ListOptionsAccess.Cast( m_Options.GetOptionByType( OptionAccessType.AT_WATER_DETAIL ) );
  292. #endif
  293. }
  294. void ToggleDependentOptions(int mode, bool state)
  295. {
  296. }
  297. void InitDependentOptionsVisibility()
  298. {
  299. }
  300. void RefreshCustom()
  301. {
  302. #ifdef PLATFORM_CONSOLE
  303. #ifdef PLATFORM_PS4
  304. m_FlipModeSelector.SetValue( m_FlipModeOption.GetIndex(), false );
  305. #endif
  306. #else
  307. //Scene
  308. m_ObjectDetailSelector.SetValue( m_ObjectDetailOption.GetIndex(), false );
  309. m_TerrainDetailSelector.SetValue( m_TerrainDetailOption.GetIndex(), false );
  310. m_TextureDetailSelector.SetValue( m_TextureDetailOption.GetIndex(), false );
  311. m_ShadowDetailSelector.SetValue( m_ShadowDetailOption.GetIndex(), false );
  312. m_VisibilitySelector.SetValue( m_VisibilityOption.GetIndex(), false );
  313. m_ObjectVisibilitySelector.SetValue( m_ObjectVisibilityOption.GetIndex(), false );
  314. //Rendering
  315. m_TextureFilteringSelector.SetValue( m_TextureFilteringOption.GetIndex(), false );
  316. m_TerrainSurfaceDetailSelector.SetValue( m_TerrainSurfaceDetailOption.GetIndex(), false );
  317. m_PPAASelector.SetValue( m_PPAAOption.GetIndex(), false );
  318. m_HWAASelector.SetValue( m_HWAAOption.GetIndex(), false );
  319. if ( m_HWAAOption.GetIndex() == 0 )
  320. {
  321. m_ATOCSelector.Disable();
  322. }
  323. else
  324. {
  325. m_ATOCSelector.Enable();
  326. }
  327. m_ATOCSelector.SetValue( m_ATOCOption.GetIndex(), false );
  328. m_AOSelector.SetValue( m_AOOption.GetIndex(), false );
  329. m_PPQualitySelector.SetValue( m_PPQualityOption.GetIndex(), false );
  330. m_SSRQualitySelector.SetValue( m_SSRQualityOption.GetIndex(), false );
  331. #endif
  332. }
  333. override bool OnMouseEnter( Widget w, int x, int y )
  334. {
  335. if ( w && w.IsInherited( ScrollWidget ) )
  336. {
  337. return false;
  338. }
  339. m_Menu.ColorHighlight( w );
  340. return true;
  341. }
  342. override bool OnMouseLeave( Widget w, Widget enterW, int x, int y )
  343. {
  344. if ( w && w.IsInherited( ScrollWidget ) )
  345. {
  346. return false;
  347. }
  348. m_Menu.ColorNormal( w );
  349. return true;
  350. }
  351. void OnOptionChanged()
  352. {
  353. #ifndef PLATFORM_CONSOLE
  354. int customPresetIndex = m_OverallQualityOption.GetItemsCount() - 1;
  355. if ( m_OverallQualityOption.GetIndex() != customPresetIndex )
  356. {
  357. m_OverallQualitySelector.SetValue( customPresetIndex );
  358. }
  359. #endif
  360. }
  361. #ifdef PLATFORM_CONSOLE
  362. #ifdef PLATFORM_PS4
  363. void OnFlipModeChanged( int value )
  364. {
  365. m_FlipModeOption.SetIndex( value );
  366. OnOptionChanged();
  367. m_Menu.OnChanged();
  368. }
  369. #endif
  370. #else
  371. void OnOverallQualityChanged( int value )
  372. {
  373. m_OverallQualityOption.SetIndex( value );
  374. m_OverallQualityOption.Test(); //here's the bastard!
  375. m_Options.Test();
  376. //SetOptions(m_Options);
  377. ReloadOptions();
  378. //InitSelectors();
  379. m_OverallQualityOption.SetIndex( value );
  380. RefreshCustom();
  381. m_Menu.OnChanged();
  382. }
  383. void OnDisplayModeChanged( int value )
  384. {
  385. m_DisplayModeOption.SetIndex( value );
  386. m_Menu.OnChanged();
  387. }
  388. void OnResolutionChanged( int value )
  389. {
  390. m_ResolutionOption.SetIndex( value );
  391. m_Menu.OnChanged();
  392. }
  393. void OnBrightnessChanged( float value )
  394. {
  395. m_BrightnessOption.WriteValue( value );
  396. m_Menu.OnChanged();
  397. }
  398. void OnVSyncChanged( float value )
  399. {
  400. m_VSyncOption.SetIndex( value );
  401. m_Menu.OnChanged();
  402. }
  403. void OnColorDepthChanged( int value )
  404. {
  405. //m_ColorDepthOption.SetIndex( value );
  406. m_Menu.OnChanged();
  407. }
  408. void OnObjectDetailChanged( int value )
  409. {
  410. m_ObjectDetailOption.SetIndex( value );
  411. OnOptionChanged();
  412. m_Menu.OnChanged();
  413. }
  414. void OnTerrainDetailChanged( int value )
  415. {
  416. m_TerrainDetailOption.SetIndex( value );
  417. OnOptionChanged();
  418. m_Menu.OnChanged();
  419. }
  420. void OnTextureDetailChanged( int value )
  421. {
  422. m_TextureDetailOption.SetIndex( value );
  423. OnOptionChanged();
  424. m_Menu.OnChanged();
  425. }
  426. void OnShadowDetailChanged( int value )
  427. {
  428. m_ShadowDetailOption.SetIndex( value );
  429. OnOptionChanged();
  430. m_Menu.OnChanged();
  431. }
  432. void OnVisibilityChanged( int value )
  433. {
  434. m_VisibilityOption.SetIndex( value );
  435. OnOptionChanged();
  436. m_Menu.OnChanged();
  437. }
  438. void OnObjectVisibilityChanged( int value )
  439. {
  440. m_ObjectVisibilityOption.SetIndex( value );
  441. OnOptionChanged();
  442. m_Menu.OnChanged();
  443. }
  444. void OnTextureFilteringChanged( int value )
  445. {
  446. m_TextureFilteringOption.SetIndex( value );
  447. OnOptionChanged();
  448. m_Menu.OnChanged();
  449. }
  450. void OnTerrainSurfaceDetailChanged( int value )
  451. {
  452. m_TerrainSurfaceDetailOption.SetIndex( value );
  453. OnOptionChanged();
  454. m_Menu.OnChanged();
  455. }
  456. void OnPPAAChanged( int value )
  457. {
  458. m_PPAAOption.SetIndex( value );
  459. OnOptionChanged();
  460. m_Menu.OnChanged();
  461. }
  462. void OnHWAAChanged( int value )
  463. {
  464. m_HWAAOption.SetIndex( value );
  465. if ( value == 0 )
  466. {
  467. m_ATOCSelector.Disable();
  468. }
  469. else
  470. {
  471. m_ATOCSelector.Enable();
  472. // with HWAA enabled, reapply last AToC option as it depends on HWAA
  473. int atoc = m_ATOCSelector.GetValue();
  474. if (atoc)
  475. {
  476. m_ATOCSelector.SetValue(atoc);
  477. }
  478. }
  479. OnOptionChanged();
  480. m_Menu.OnChanged();
  481. }
  482. void OnATOCChanged( int value )
  483. {
  484. m_ATOCOption.SetIndex( value );
  485. OnOptionChanged();
  486. m_Menu.OnChanged();
  487. }
  488. void OnAOChanged( int value )
  489. {
  490. m_AOOption.SetIndex( value );
  491. OnOptionChanged();
  492. m_Menu.OnChanged();
  493. }
  494. void OnPPQualityChanged( int value )
  495. {
  496. m_PPQualityOption.SetIndex( value );
  497. OnOptionChanged();
  498. m_Menu.OnChanged();
  499. }
  500. void OnSSRQualityChanged( int value )
  501. {
  502. m_SSRQualityOption.SetIndex( value );
  503. OnOptionChanged();
  504. m_Menu.OnChanged();
  505. }
  506. #endif
  507. override bool OnFocus( Widget w, int x, int y )
  508. {
  509. OptionsMenu menu = OptionsMenu.Cast( GetGame().GetUIManager().GetMenu() );
  510. if ( menu )
  511. menu.OnFocus( w, x, y );
  512. if ( w )
  513. {
  514. if (TextMapUpdateWidget(w.GetUserID()))
  515. {
  516. return true;
  517. }
  518. if ( w.IsInherited( SliderWidget ) )
  519. {
  520. return true;
  521. }
  522. }
  523. m_DetailsRoot.Show( false );
  524. return ( w != null );
  525. }
  526. bool TextMapUpdateWidget(int key)
  527. {
  528. bool connectivityInfoShown = key == OptionIDsScript.OPTION_CONNECTIVITY_INFO;
  529. Param2<string, string> p;
  530. Param tmp = m_TextMap.Get(key);
  531. m_DetailsBodyDefault.Show(!connectivityInfoShown);
  532. m_DetailsBodyConnectivity.Show(connectivityInfoShown);
  533. if (Class.CastTo(p,tmp))
  534. {
  535. m_DetailsRoot.Show(true);
  536. m_DetailsText.Show(true);
  537. m_DetailsLabel.SetText(p.param1);
  538. m_DetailsText.SetText(p.param2);
  539. m_DetailsText.Update();
  540. m_DetailsLabel.Update();
  541. m_DetailsRoot.Update();
  542. m_DetailsBodyConnectivity.Update(); //...
  543. return true;
  544. }
  545. return false;
  546. }
  547. void FillTextMap()
  548. {
  549. m_TextMap = new map<int, ref Param2<string, string>>;
  550. #ifdef PLATFORM_CONSOLE
  551. #ifdef PLATFORM_PS4
  552. m_TextMap.Insert( OptionAccessType.AT_OPTIONS_FLIPMODE, new Param2<string, string>( "#options_video_V-sync", "#options_video_V-sync_desc" ) );
  553. #endif
  554. #else
  555. m_TextMap.Insert( OptionAccessType.AT_QUALITY_PREFERENCE, new Param2<string, string>( "#options_video_quality", "#options_video_quality_desc" ) );
  556. m_TextMap.Insert( OptionAccessType.AT_OPTIONS_DISPLAY_MODE, new Param2<string, string>( "#options_video_display_mode", "#options_video_display_mode_desc" ) );
  557. m_TextMap.Insert( OptionAccessType.AT_OPTIONS_RESOLUTION, new Param2<string, string>( "#options_video_resolution", "#options_video_resolution_desc" ) );
  558. m_TextMap.Insert( OptionAccessType.AT_OPTIONS_BRIGHT_SLIDER, new Param2<string, string>( "#options_video_brightness", "#options_video_brightness_desc" ) );
  559. m_TextMap.Insert( OptionAccessType.AT_VSYNC_VALUE, new Param2<string, string>( "#options_video_V-sync", "#options_video_V-sync_desc" ) );
  560. m_TextMap.Insert( OptionAccessType.AT_HDR_DETAIL, new Param2<string, string>( "#options_video_color_depth", "#options_video_color_depth_desc" ) );
  561. m_TextMap.Insert( OptionAccessType.AT_OBJECTS_DETAIL, new Param2<string, string>( "#options_video_object_detail", "#options_video_object_detail_desc" ) );
  562. m_TextMap.Insert( OptionAccessType.AT_OPTIONS_TERRAIN, new Param2<string, string>( "#options_video_terrain_detail", "#options_video_terrain_detail_desc" ) );
  563. m_TextMap.Insert( OptionAccessType.AT_TEXTURE_DETAIL, new Param2<string, string>( "#options_video_texture_detail", "#options_video_texture_detail_desc" ) );
  564. m_TextMap.Insert( OptionAccessType.AT_SHADOW_DETAIL, new Param2<string, string>( "#options_video_shadow_detail", "#options_video_shadow_detail_desc" ) );
  565. m_TextMap.Insert( OptionAccessType.AT_ANISO_DETAIL, new Param2<string, string>( "#options_video_texture_filtering", "#options_video_texture_filtering_desc" ) );
  566. m_TextMap.Insert( OptionAccessType.AT_OPTIONS_TERRAIN_SHADER, new Param2<string, string>( "#options_video_terrain_surface_detail", "#options_video_terrain_surface_detail_desc" ) );
  567. m_TextMap.Insert( OptionAccessType.AT_OPTIONS_FXAA_VALUE, new Param2<string, string>( "#options_video_anti-aliasing", "#options_video_anti-aliasing_desc" ) );
  568. m_TextMap.Insert( OptionAccessType.AT_FSAA_DETAIL, new Param2<string, string>( "#options_video_anti-aliasing_hardware", "#options_video_anti-aliasing_hardware_desc" ) );
  569. m_TextMap.Insert( OptionAccessType.AT_ATOC_DETAIL, new Param2<string, string>( "#options_video_foliage_smoothing", "#options_video_foliage_smoothing_desc" ) );
  570. m_TextMap.Insert( OptionAccessType.AT_AMBIENT_OCCLUSION, new Param2<string, string>( "#options_video_ambient_occlusion", "#options_video_ambient_occlusion_desc" ) );
  571. m_TextMap.Insert( OptionAccessType.AT_POSTPROCESS_EFFECTS, new Param2<string, string>( "#options_video_post_process", "#options_video_post_process_desc" ) );
  572. m_TextMap.Insert( OptionAccessType.AT_WATER_DETAIL, new Param2<string, string>( "#STR_option_video_ssr_quality_tip_header", "#STR_option_video_ssr_quality_tip" ) );
  573. m_TextMap.Insert( OptionAccessType.AT_OPTIONS_VISIBILITY_COMBO, new Param2<string, string>( "#STR_option_video_visibility", "#STR_option_video_visibility_desc" ) );
  574. m_TextMap.Insert( OptionAccessType.AT_OPTIONS_OBJECT_VISIBILITY_COMBO, new Param2<string, string>( "#STR_option_video_objectvisibility", "#STR_option_video_objectvisibility_desc" ) );
  575. #endif
  576. }
  577. }