Dayz Explorer 1.28.160049
Loading...
Searching...
No Matches
serverbrowsertabconsole.c
Go to the documentation of this file.
1class ServerBrowserTabConsole extends ServerBrowserTab
2{
3 private bool m_IsFilterChanged;
4 private bool m_IsFilterFocused;
5 private bool m_IsDetailsFocused;
6
7 private Widget m_WidgetNavFilters;
8 private Widget m_WidgetNavServers;
9
10 protected override void Construct( Widget parent, ServerBrowserMenuNew menu, TabType type )
11 {
12 m_Root = GetGame().GetWorkspace().CreateWidgets( "gui/layouts/new_ui/server_browser/xbox/server_browser_tab.layout", parent );
13
14 m_ServerListScroller = ScrollWidget.Cast( m_Root.FindAnyWidget( "server_list_scroller" ) );
15 m_ServerList = SpacerBaseWidget.Cast( m_ServerListScroller.FindAnyWidget( "server_list_content" ) );
16 m_ServerListScroller.VScrollToPos01( 0 );
17
20
23
24 m_Menu = menu;
25 m_TabType = type;
26
27 m_ApplyFilter = m_Root.FindAnyWidget( "apply_filter_button" );
28 m_RefreshList = m_Root.FindAnyWidget( "refresh_list_button" );
29 m_FiltersChanged = m_Root.FindAnyWidget( "unapplied_filters_notify" );
30 m_HostSort = m_Root.FindAnyWidget( "server_list_content_header_host" );
31 m_TimeSort = m_Root.FindAnyWidget( "server_list_content_header_time" );
32 m_PopulationSort = m_Root.FindAnyWidget( "server_list_content_header_population" );
33 m_SlotsSort = m_Root.FindAnyWidget( "server_list_content_header_slots" );
34 m_PingSort = m_Root.FindAnyWidget( "server_list_content_header_ping" );
35 m_MapSort = m_Root.FindAnyWidget( "server_list_content_header_map" );
36 m_LoadingText = TextWidget.Cast( m_Root.FindAnyWidget( "loading_servers_info" ) );
37 m_WidgetNavFilters = m_Root.FindAnyWidget( "filters_root_nav_wrapper" );
38 m_WidgetNavServers = m_Root.FindAnyWidget( "server_list_root_nav_wrapper" );
39
41
42 m_Filters = new ServerBrowserFilterContainer(m_Root.FindAnyWidget("filters_content"), this);
43
44 SetSort(ESortType.HOST, ESortOrder.ASCENDING);
45
46 m_Details = new ServerBrowserDetailsContainer(m_Root.FindAnyWidget("details_content"), this);
47
48 m_Root.SetHandler(this);
49
51 }
52
54 {
55#ifdef PLATFORM_PS4
56 bool is_xbox = false;
57#else
58 bool is_xbox = true;
59#endif
60
61 m_Root.FindAnyWidget( "filters_root_nav_img_lb_xbox" ).Show( is_xbox );
62 m_Root.FindAnyWidget( "filters_root_nav_img_rb_xbox" ).Show( is_xbox );
63 m_Root.FindAnyWidget( "server_list_root_nav_img_lb_xbox" ).Show( is_xbox );
64 m_Root.FindAnyWidget( "server_list_root_nav_img_rb_xbox" ).Show( is_xbox );
65
66 m_Root.FindAnyWidget( "filters_root_nav_img_l1_ps4" ).Show( !is_xbox );
67 m_Root.FindAnyWidget( "filters_root_nav_img_r1_ps4" ).Show( !is_xbox );
68 m_Root.FindAnyWidget( "server_list_root_nav_img_l1_ps4" ).Show( !is_xbox );
69 m_Root.FindAnyWidget( "server_list_root_nav_img_r1_ps4" ).Show( !is_xbox );
70 }
71
72 override void OnLoadServersAsyncConsole( GetServersResult result_list, EBiosError error, string response )
73 {
74 //Print("m_NumServers: "+ result_list.m_NumServers +" m_Pages: "+ result_list.m_Pages + " m_Page: "+ result_list.m_Page);
75 //string smg = "m_NumServers: "+ result_list.m_NumServers +" m_Pages: "+ result_list.m_Pages + " m_Page: "+ result_list.m_Page +" response: "+ response +" error: "+ error;
76 //m_LoadingText.SetText( smg );
77
78 if ( error != EBiosError.OK || !result_list )
79 {
80 m_LoadingText.SetText( string.Format("Error: %1", ErrorModuleHandler.GetClientMessage(ErrorCategory.BIOSError, error)) );
81 return;
82 }
83
84 if ( result_list.m_Page == 1 )
85 {
86 m_TotalPages = result_list.m_Pages;
87 m_TotalServers = result_list.m_NumServers;
88
89 if ( m_Menu.GetServersLoadingTab() != m_TabType || !result_list || ( !result_list.m_Results || result_list.m_Results.Count() == 0 ) )
90 {
91 m_Menu.SetServersLoadingTab( TabType.NONE );
92 m_LoadingText.SetText("#server_browser_tab_unable_to_get_server #server_browser_tab_no_servers_with_filter");
93 return;
94 }
95 }
96
97 m_LastLoadedPage = result_list.m_Page;
98
99 if ( m_TotalPages > 0 )
100 {
101 LoadEntries( result_list.m_Page, result_list.m_Results );
102 }
103
105 {
106 GetNextPage();
107 return;
108 }
109
110 if ( result_list.m_Page == result_list.m_Pages )
111 {
113 }
114 }
115
117 {
118 string msg = "#servers_found: "+ m_TotalLoadedServers;
119 if ( m_TotalLoadedServers == 0 )
120 {
121 msg = "#server_browser_tab_unable_to_get_server";
122 }
123 m_LoadingText.SetText( msg );
124 m_LoadingFinished = true;
125 }
126
127 void LoadEntries( int cur_page_index , GetServersResultRowArray page )
128 {
129 if ( !m_Menu || m_Menu.GetServersLoadingTab() != m_TabType )
130 {
131 return;
132 }
133
134 int index = cur_page_index * SERVER_BROWSER_PAGE_SIZE;
135 GetServersResultRowArray page_entries = page;
136 if ( page_entries )
137 {
138 foreach ( GetServersResultRow result : page_entries )
139 {
141
142 if ( PassFilter( result ) )
143 {
144 ServerBrowserEntry entry = new ServerBrowserEntry( m_ServerList, index, this );
145 string ipPort = result.GetIpPort();
146 entry.FillInfo( result );
147 entry.SetFavorite( m_Menu.IsFavorited(ipPort));
148 entry.UpdateEntry();
149
150 m_EntryWidgets.Insert(ipPort, entry);
151 index++;
152 m_EntriesSorted[m_SortType].Insert( result );
153
154 if ( m_EntryWidgets.Count() > 0 )
155 {
157 }
158 }
159
160 if ( !m_Menu || m_Menu.GetServersLoadingTab() != m_TabType )
161 return;
162 }
163
164 m_ServerList.Update();
165 }
166 /*
167 if ( cur_page_index == 1 && m_EntryWidgets.Count() > 0 )
168 {
169 SetFocusServers();
170 }
171 else
172 {
173 m_LoadingText.SetText( "#server_browser_unable_with_filter" );
174 SetFocusFilters();
175 }
176 */
177
178 if ( m_EntriesSorted[m_SortType].Count() > 0 )
179 {
180 /*
181
182 */
183 }
184 else
185 {
186 //m_LoadingText.SetText( "#server_browser_unable_with_filter" );
187
188 }
189
190 if ( !m_Menu )
191 return;
192
194 {
195 //m_LoadingText.SetText( "#server_browser_tab_loaded" + " " + m_EntryWidgets.Count() + "/" + m_EntryWidgets.Count() + " " + "#server_browser_servers_desc" );
196 m_Menu.SetServersLoadingTab( TabType.NONE );
197 }
198 }
199
200 override void OnFilterFocus( Widget w )
201 {
202 super.OnFilterFocus( w );
203
204 //ColorHighlight( w );
205 }
206
207 override void OnFilterChanged()
208 {
209 m_IsFilterChanged = true;
210 }
211
212 override void RefreshList()
213 {
214 for ( int i = 0; i < m_EntriesSorted.Count(); i++ )
215 {
216 m_EntriesSorted.GetElement(i).Clear();
217 }
218
219 m_Filters.SaveFilters();
220
221 super.RefreshList();
222
223 m_ServerListScroller.VScrollToPos01( 0 );
224
225 m_LoadingText.SetText( "#dayz_game_loading" );
226
227 //SetFocusFilters();
228 //UpdateStatusBar();
229 }
230
231 override void ResetFilters()
232 {
233 super.ResetFilters();
234
235 m_IsFilterChanged = false;
236 }
237
238 override void ApplyFilters()
239 {
240 m_IsFilterChanged = false;
241 m_CurrentFilterInput = m_Filters.GetFilterOptionsConsoles();
242 RefreshList();
243 }
244
245 override void OnFilterFocusLost( Widget w )
246 {
247 super.OnFilterFocusLost( w );
248 }
249
250 override void PressA()
251 {
252
253 }
254
255 override void PressX()
256 {
257 RefreshList();
258 }
259
260 override void PressY()
261 {
262 /*
263 if( m_Menu.GetServersLoadingTab() != TabType.NONE )
264 {
265 return;
266 }
267 */
268
269 switch ( m_SelectedPanel )
270 {
271 case SelectedPanel.BROWSER:
272 {
273 if ( m_SelectedServer )
274 {
275 m_Menu.ServerListFocus( true, m_SelectedServer.ToggleFavorite() );
276 }
277 break;
278 }
279 case SelectedPanel.FILTERS:
280 {
281 if ( m_Filters )
282 m_Filters.ResetFilters();
283 break;
284 }
285 }
286 }
287
288 override void PressSholderLeft()
289 {
291 }
292
293 override void PressSholderRight()
294 {
296 }
297
298 override void OnPressShoulder()
299 {
300 switch (m_SelectedPanel)
301 {
302 case SelectedPanel.FILTERS:
303 case SelectedPanel.DETAILS:
304 {
306 break;
307 }
308 case SelectedPanel.BROWSER:
309 {
311 break;
312 }
313 }
314 }
315
317 {
318 SetEnableFilters(true);
319 SetEnableServers(false);
320
321 // if loaded servers is 0, then hide Top navigation menu <Left / Right>
322 m_WidgetNavFilters.Show((m_EntryWidgets.Count() > 0));
323 m_WidgetNavServers.Show(false);
324
325 m_Filters.Focus();
326 m_IsFilterFocused = true;
327 }
328
330 {
331 SetEnableFilters(false);
332 SetEnableServers(false);
333
334 m_Details.Focus();
335 m_IsDetailsFocused = true;
336 m_IsFilterFocused = false;
337 }
338
339 override void Focus()
340 {
341 if ( m_EntryWidgets.Contains( m_CurrentSelectedServer ) )
342 {
345 }
347 }
348
350 {
351 SetEnableServers(true);
352 SetEnableFilters(false);
353
354 m_WidgetNavFilters.Show(false);
355 m_WidgetNavServers.Show(true);
356
358 if (entries.Count() > 0)
359 {
360 m_EntryWidgets.Get(entries.Get(0).GetIpPort()).Focus();
361 m_IsFilterFocused = false;
362 }
363 /*else
364 {
365 SetFocusFilters();
366 }*/
367 }
368
369 void SetEnableFilters(bool enable)
370 {
371 Widget w_filters = m_Root.FindAnyWidget("filters_content");
372 Widget w_content = m_Root.FindAnyWidget("server_list_scroller");
373 w_filters.Enable( enable );
374 w_content.Enable( !enable );
375 }
376
377 void SetEnableServers(bool enable)
378 {
379 Widget w_filters = m_Root.FindAnyWidget("filters_content");
380 Widget w_content = m_Root.FindAnyWidget("server_list_scroller");
381 w_filters.Enable( !enable );
382 w_content.Enable( enable );
383 }
384
385 //Coloring functions (Until WidgetStyles are useful)
386 override void ColorHighlight( Widget w )
387 {
388 if ( !w )
389 {
390 return;
391 }
392
393 w.SetColor( ARGB( 255, 200, 0, 0) );
394 }
395
396 override void ColorNormal( Widget w )
397 {
398 if ( !w)
399 {
400 return
401 }
402
403 if ( (w.GetFlags() & WidgetFlags.IGNOREPOINTER) == WidgetFlags.IGNOREPOINTER )
404 {
405 return;
406 }
407
408 if ( w.IsInherited( ButtonWidget ) )
409 {
410 ButtonWidget button = ButtonWidget.Cast( w );
411 button.SetTextColor( ARGB( 255, 255, 255, 255 ) );
412 }
413
414 TextWidget text1 = TextWidget.Cast(w.FindAnyWidget( w.GetName() + "_text" ) );
415 TextWidget text2 = TextWidget.Cast(w.FindAnyWidget( w.GetName() + "_text_1" ) );
416 TextWidget text3 = TextWidget.Cast(w.FindAnyWidget( w.GetName() + "_label" ) );
417 ImageWidget image = ImageWidget.Cast( w.FindAnyWidget( w.GetName() + "_image" ) );
418
419 Widget option = Widget.Cast( w.FindAnyWidget( w.GetName() + "_option_wrapper" ) );
420
421 if ( text1 )
422 {
423 text1.SetColor( ARGB( 255, 255, 255, 255 ) );
424 }
425
426 if ( text2 )
427 {
428 text2.SetColor( ARGB( 255, 255, 255, 255 ) );
429 }
430
431 if ( text3 )
432 {
433 text3.SetColor( ARGB( 255, 255, 255, 255 ) );
434 w.SetAlpha(0);
435 }
436
437 if ( image )
438 {
439 image.SetColor( ARGB( 255, 255, 255, 255 ) );
440 }
441
442 if ( option )
443 {
444 option.SetColor( ARGB( 150, 255, 255, 255 ) );
445 }
446 }
447
448 override void ColorDisable( Widget w )
449 {
450 #ifdef PLATFORM_WINDOWS
451 SetFocus( null );
452 #endif
453
454 ButtonWidget button = ButtonWidget.Cast( w );
455 if ( button )
456 {
457 button.SetTextColor( ColorManager.COLOR_DISABLED_TEXT );
458 }
459 }
460}
EBiosError
Possible Error codes for bios API. This is the list of errors that can be returned from bios API....
ESortOrder
ESortType
The error handler itself, for managing and distributing errors to modules Manages the ErrorHandlerMod...
GetServersResult the output structure of the GetServers operation.
GetServersResultRow the output structure of the GetServers operation that represents one game server.
override void OnFilterFocus(Widget w)
override void OnFilterFocusLost(Widget w)
override void PressSholderRight()
override void ColorDisable(Widget w)
void LoadEntries(int cur_page_index, GetServersResultRowArray page)
override void SetSort(ESortType type, ESortOrder order)
override void SwitchToFilters(bool focus=true)
override void ColorNormal(Widget w)
override bool PassFilter(GetServersResultRow result)
override void OnLoadServersAsyncConsole(GetServersResult result_list, EBiosError error, string response)
override void PressSholderLeft()
override void OnFilterChanged()
void SetEnableServers(bool enable)
override void OnPressShoulder()
void SetEnableFilters(bool enable)
override void Construct(Widget parent, ServerBrowserMenuNew menu, TabType type)
override void ColorHighlight(Widget w)
Result for an object found in CGame.IsBoxCollidingGeometryProxy.
ErrorCategory
ErrorCategory - To decide what ErrorHandlerModule needs to be called and easily identify where it cam...
proto native CGame GetGame()
WidgetFlags
Definition enwidgets.c:58
int ARGB(int a, int r, int g, int b)
Definition proto.c:322
const int SERVER_BROWSER_PAGE_SIZE
ref ServerBrowserFilterContainer m_Filters
ref map< ESortType, ref array< ref GetServersResultRow > > m_EntriesSorted
TabType m_TabType
Widget m_FiltersChanged
Widget m_SlotsSort
void GetNextPage()
bool m_LoadingFinished
ServerBrowserEntry m_SelectedServer
ref GetServersInput m_CurrentFilterInput
ref map< string, ref ServerBrowserEntry > m_EntryWidgets
int m_TotalPages
void ScrollToEntry(ServerBrowserEntry entry)
TabType
ScrollWidget m_ServerListScroller
Widget m_PingSort
int m_TotalLoadedServers
string m_CurrentSelectedServer
Widget m_ApplyFilter
ServerBrowserMenuNew m_Menu
SelectedPanel m_SelectedPanel
int m_LastLoadedPage
ESortType m_SortType
TextWidget m_LoadingText
Widget m_PopulationSort
Widget m_MapSort
Widget m_HostSort
SpacerBaseWidget m_ServerList
int m_TotalServers
ref ServerBrowserDetailsContainer m_Details
Widget m_RefreshList
Widget m_TimeSort
Widget m_Root
Definition sizetochild.c:91