Dayz Build 1.29.163047, Scripts Rev. 123548
Dayz Code Explorer by Zeroy
Loading...
Searching...
No Matches
serverbrowsertabconsolepages.c
Go to the documentation of this file.
2{
3 protected const int SERVERS_VISIBLE_COUNT = 22;
4
5 private bool m_IsFilterChanged;
6 private bool m_IsFilterFocused;
7 protected bool m_MouseKeyboardControlled
8
11
14
15 protected int m_PreviousPage;
16 protected int m_TotalServersCount;
17 protected int m_PageStartNum;
18 protected int m_PageEndNum;
19 protected int m_PagesCount;
23
27
28 private bool m_IsDetailsFocused;
29
30 protected override void Construct(Widget parent, ServerBrowserMenuNew menu, TabType type)
31 {
32 m_Root = g_Game.GetWorkspace().CreateWidgets("gui/layouts/new_ui/server_browser/xbox/server_browser_tab_console_pages.layout", parent);
33
34 m_ServerListScroller = ScrollWidget.Cast( m_Root.FindAnyWidget("server_list_scroller"));
35 m_ServerList = SpacerBaseWidget.Cast(m_ServerListScroller.FindAnyWidget("server_list_content"));
36 m_ServerListScroller.VScrollToPos01(0);
37
41
44
45 m_Menu = menu;
46 m_TabType = type;
47
48 m_FilterRoot = m_Root.FindAnyWidget("filters_root");
49 m_FilterContent = m_Root.FindAnyWidget("filters_content");
50 m_ApplyFilter = m_Root.FindAnyWidget("apply_filter_button");
51 m_ResetFilters = m_Root.FindAnyWidget("reset_filter_button");
52 m_RefreshList = m_Root.FindAnyWidget("refresh_list_button");
53 m_FiltersChanged = m_Root.FindAnyWidget("unapplied_filters_notify");
54 m_HostSort = m_Root.FindAnyWidget("server_list_content_header_host");
55 m_TimeSort = m_Root.FindAnyWidget("server_list_content_header_time");
56 m_PopulationSort = m_Root.FindAnyWidget("server_list_content_header_population");
57 m_SlotsSort = m_Root.FindAnyWidget("server_list_content_header_slots");
58 m_PingSort = m_Root.FindAnyWidget("server_list_content_header_ping");
59 m_MapSort = m_Root.FindAnyWidget("server_list_content_header_map");
60 m_FilterSearchText = m_Root.FindAnyWidget("search_name_button");
61 m_FilterSearchTextBox = m_Root.FindAnyWidget("search_name_setting_option");
62 m_LoadingText = TextWidget.Cast( m_Root.FindAnyWidget("loading_servers_info"));
63 m_WidgetNavFilters = m_Root.FindAnyWidget("filters_root_nav_wrapper");
64 m_WidgetNavServers = m_Root.FindAnyWidget("server_list_root_nav_wrapper");
65
66 #ifdef PLATFORM_MSSTORE
67 // Find M&K filter and disable it
68 Widget keyboard_button = m_Root.FindAnyWidget("keyboard_button");
69 if (keyboard_button)
70 keyboard_button.Show(false);
71 #endif
72
73 m_BtnPagePrev = ButtonWidget.Cast(m_Root.FindAnyWidget("servers_navigation_prev"));
74 m_BtnPageNext = ButtonWidget.Cast(m_Root.FindAnyWidget("servers_navigation_next"));
75
76 #ifdef PLATFORM_PS4
77 m_ButtonPageLeftImg = m_Root.FindAnyWidget("servers_navigation_page_prev_icon_ps4");
78 m_ButtonPageRightImg = m_Root.FindAnyWidget("servers_navigation_page_next_icon_ps4");
79 m_Root.FindAnyWidget("servers_navigation_page_prev_icon_xbox").Show(false);
80 m_Root.FindAnyWidget("servers_navigation_page_next_icon_xbox").Show(false);
81 #else
82 m_ButtonPageLeftImg = m_Root.FindAnyWidget("servers_navigation_page_prev_icon_xbox");
83 m_ButtonPageRightImg = m_Root.FindAnyWidget("servers_navigation_page_next_icon_xbox");
84 m_Root.FindAnyWidget("servers_navigation_page_prev_icon_ps4" ).Show(false);
85 m_Root.FindAnyWidget("servers_navigation_page_next_icon_ps4" ).Show(false);
86 #endif
87
88 m_RightAreaHeaderText = TextWidget.Cast(m_Root.FindAnyWidget("right_area_header_text"));
89 m_FilterRoot = m_Root.FindAnyWidget("filters_root");
90 m_BtnShowDetails = ButtonWidget.Cast(m_Root.FindAnyWidget("show_details_button"));
91
92 m_DetailsRoot = m_Root.FindAnyWidget("details_root");
93 m_BtnShowFilters = ButtonWidget.Cast(m_Root.FindAnyWidget("show_filters_button"));
94
96
97 m_Filters = new ServerBrowserFilterContainer(m_Root.FindAnyWidget("filters_content"), this);
98
99 m_PnlPagesPanel = m_Root.FindAnyWidget( "servers_navigation_spacer" );
100 m_PreviousPage = 1;
102 m_PnlPagesPanel.Show(true);
103 m_LoadingFinished = true;
104
105 m_Filters.OnSortChanged(m_Filters.m_SortingFilter.GetValue());
107
108 m_Root.SetHandler(this);
109 m_FilterSearchTextBox.SetHandler(this);
110
111 g_Game.GetMission().GetOnInputDeviceChanged().Insert(OnInputDeviceChanged);
112
113 OnInputDeviceChanged(g_Game.GetInput().GetCurrentInputDevice());
114
115 m_Details = new ServerBrowserDetailsContainer(m_Root.FindAnyWidget("details_content"), this);
116
117 #ifdef DIAG_DEVELOPER
118 InitDummyServers();
119 #endif
120
121 }
122
124 {
125 bool is_xbox = true;
126
127 #ifdef PLATFORM_PS4
128 is_xbox = false;
129 #endif
130
131 m_Root.FindAnyWidget( "filters_root_nav_img_lb_xbox" ).Show( is_xbox );
132 m_Root.FindAnyWidget( "filters_root_nav_img_rb_xbox" ).Show( is_xbox );
133 m_Root.FindAnyWidget( "server_list_root_nav_img_lb_xbox" ).Show( is_xbox );
134 m_Root.FindAnyWidget( "server_list_root_nav_img_rb_xbox" ).Show( is_xbox );
135
136 m_Root.FindAnyWidget( "filters_root_nav_img_l1_ps4" ).Show( !is_xbox );
137 m_Root.FindAnyWidget( "filters_root_nav_img_r1_ps4" ).Show( !is_xbox );
138 m_Root.FindAnyWidget( "server_list_root_nav_img_l1_ps4" ).Show( !is_xbox );
139 m_Root.FindAnyWidget( "server_list_root_nav_img_r1_ps4" ).Show( !is_xbox );
140 }
141
142 protected void OnInputDeviceChanged(EInputDeviceType pInputDeviceType)
143 {
144 switch (pInputDeviceType)
145 {
146 case EInputDeviceType.CONTROLLER:
147 {
148 m_MouseKeyboardControlled = false;
149
151
153 if (m_TabType != TabType.FAVORITE)
154 {
156 }
157
158 m_BtnShowFilters.Show(false);
159 m_BtnShowDetails.Show(false);
160 m_RefreshList.Show(false);
161 m_Root.FindAnyWidget("spacer2").Show(false);
162 m_Root.FindAnyWidget("spacer5").Show(false);
163 m_Menu.GetLayoutRoot().FindAnyWidget("play_panel_root").Show(false);
164 m_Menu.GetLayoutRoot().FindAnyWidget("MouseAndKeyboardWarning").Show(false);
165
167 break;
168 }
169
170 default:
171 {
172 if (g_Game.GetInput().IsEnabledMouseAndKeyboardEvenOnServer())
173 {
174 bool isFavoriteTab = m_TabType == TabType.FAVORITE;
175
176 m_MouseKeyboardControlled = true;
177
178 m_WidgetNavFilters.Show(false);
179 m_WidgetNavServers.Show(false);
180 m_RefreshList.Show(true);
181 m_BtnShowDetails.Show(!m_DetailsRoot.IsVisible());
182 m_BtnShowFilters.Show(!isFavoriteTab);
183 m_Root.FindAnyWidget("spacer").Show(!isFavoriteTab);
184 m_Root.FindAnyWidget("spacer2").Show(true);
185 m_Root.FindAnyWidget("spacer5").Show(!isFavoriteTab);
186 m_Menu.GetLayoutRoot().FindAnyWidget("play_panel_root").Show(true);
187 m_Menu.GetLayoutRoot().FindAnyWidget("MouseAndKeyboardWarning").Show(true);
188
190 }
191 break;
192 }
193 }
194 }
195
196 override void OnLoadServersAsyncConsole( GetServersResult result_list, EBiosError error, string response )
197 {
198 #ifdef DIAG_DEVELOPER
199 if (m_DummyServersEnabled)
200 return;
201 #endif
202
203 if ( error != EBiosError.OK )
204 {
205 m_LoadingText.SetText( string.Format("Error: %1", ErrorModuleHandler.GetClientMessage(ErrorCategory.BIOSError, error)) );
206 m_Menu.SetServersLoadingTab( TabType.NONE );
207 m_LoadingFinished = true;
209 return;
210 }
211
212 m_PagesCount = result_list.m_Pages;
213 if (m_PagesCount < 1)
214 m_PagesCount = 1;
215
216 m_TotalServersCount = result_list.m_NumServers;
217
218 #ifdef DIAG_DEVELOPER
219 if (m_DummyServersEnabled)
220 {
221 m_PagesCount = m_DummyServers.m_Pages;
222 if (m_PagesCount < 1)
223 m_PagesCount = 1;
224
225 m_TotalServersCount = m_DummyServers.m_NumServers;
226
227 int startIndex = (GetCurrentPage() - 1) * SERVERS_VISIBLE_COUNT;
228 int endIndex = startIndex + SERVERS_VISIBLE_COUNT;
229
230 int resultCount = m_DummyServers.m_Results.Count();
231 if (endIndex > resultCount)
232 {
233 endIndex = resultCount;
234 }
235
236 GetServersResultRowArray tempDummyServerResult = new GetServersResultRowArray();
237 for (int i = startIndex; i < endIndex; ++i)
238 {
239 tempDummyServerResult.Insert(m_DummyServers.m_Results[i]);
240 }
241
242 LoadEntries(GetCurrentPage(), tempDummyServerResult);
243 }
244 else
245 {
246 LoadEntries(result_list.m_Page, result_list.m_Results);
247 }
248 #else
249 LoadEntries(result_list.m_Page, result_list.m_Results);
250 #endif
251
254 }
255
257 {
258 string msg = "#servers_found: " + m_TotalLoadedServers;
259 if (m_TotalLoadedServers == 0)
260 {
261
262 msg = "#server_browser_tab_unable_to_get_server";
263 }
264
265 m_LoadingText.SetText(msg);
266 m_LoadingFinished = true;
267 m_Menu.SetServersLoadingTab(TabType.NONE);
268
269 if (m_ServerListEntiers && m_ServerListEntiers.Count() && m_SelectedPanel == SelectedPanel.BROWSER)
270 {
271 ServerBrowserEntry entry = m_ServerListEntiers[0];
272 if (entry)
273 {
274 entry.Darken(entry.GetRoot(), 0, 0);
275 entry.Select();
276 SetFocus(entry.GetRoot());
277 }
278 }
279 }
280
281 protected void LoadEntries( int cur_page_index , GetServersResultRowArray page_entries )
282 {
283 int index = 0;
284 ServerBrowserEntry entry;
286
287 if ( !m_Menu || m_Menu.GetServersLoadingTab() != m_TabType )
288 {
289 return;
290 }
291
292 // only load servers if they correspond to current page
293 if (cur_page_index != m_CurrentPageNum)
294 {
295 return;
296 }
297
298 if ( m_PagesCount && page_entries )
299 {
300 foreach ( GetServersResultRow result : page_entries )
301 {
302 if ( PassFilter( result ) )
303 {
304 string ipPort = result.GetIpPort();
305 bool isFavorited = m_Menu.IsFavorited(ipPort);
306
307 entry = GetServerEntryByIndex( index );
308 entry.SetIsOnline(true);
309 entry.FillInfo( result );
310 entry.SetFavorite(isFavorited);
311 entry.UpdateEntry();
312
313 if (isFavorited && m_OnlineFavServers.Find(ipPort) == -1)
314 {
315 m_OnlineFavServers.Insert(ipPort);
316 }
317
318 m_EntryWidgets.Insert(ipPort, entry);
319 m_EntriesSorted[m_SortType].Insert( result );
320
321 index++;
322 }
323
324 if ( !m_Menu || m_Menu.GetServersLoadingTab() != m_TabType )
325 {
326 return;
327 }
328 }
329 }
330
331 LoadExtraEntries(index);
332 m_ServerList.Update();
333 }
334
335 override bool PassFilter(GetServersResultRow result)
336 {
337 if (m_Filters.m_PreviouslyPlayedFilter.IsSet())
338 {
339 bool is_visited = g_Game.IsVisited(result.m_HostIp, result.m_HostPort);
340 if (!is_visited && m_Filters.m_PreviouslyPlayedFilter.IsEnabled())
341 return false;
342
343 if (is_visited && !m_Filters.m_PreviouslyPlayedFilter.IsEnabled())
344 return false;
345 }
346
347 return super.PassFilter(result);
348 }
349
350 protected ServerBrowserEntry GetServerEntryByIndex( int index )
351 {
352 ServerBrowserEntry entry;
353
354 if ( index >= 0 )
355 {
356 if ( index < m_ServerListEntiers.Count() )
357 {
358 entry = m_ServerListEntiers[index];
359 }
360 else
361 {
362 entry = new ServerBrowserEntry( m_ServerList, index, this );
363 m_ServerListEntiers.Insert(entry);
364 }
365 }
366 else
367 {
368 return null;
369 }
370
371 entry.Show( true );
372
373 return entry;
374 }
375
376 override void OnFilterChanged()
377 {
378 m_IsFilterChanged = true;
379 }
380
382 {
383 return m_LoadingFinished;
384 }
385
386 override void RefreshList()
387 {
388 #ifdef DIAG_DEVELOPER
389 if (m_DummyServersEnabled)
390 {
391 RefreshDummyList();
392 return;
393 }
394 #endif
395
396 for ( int i = 0; i < m_ServerListEntiers.Count(); i++ )
397 {
398 m_ServerListEntiers[i].Show(false);
399 }
400
401 for ( int j = 0; j < m_EntriesSorted.Count(); j++ )
402 {
403 array<ref GetServersResultRow> result_rows = m_EntriesSorted.GetElement(j);
404
405 if ( result_rows )
406 {
407 result_rows.Clear();
408 }
409 }
410
411 m_IsFilterChanged = false;
412 m_Filters.SaveFilters();
413
414 super.RefreshList();
415
416 m_ServerListScroller.VScrollToPos01( 0 );
417
418 m_LoadingText.SetText( "#dayz_game_loading" );
419 }
420
421 override void ResetFilters()
422 {
423 super.ResetFilters();
424
425 m_IsFilterChanged = false;
426 }
427
428 override void ApplyFilters()
429 {
430 if ( m_IsFilterChanged )
431 {
433 }
434
435 m_IsFilterChanged = false;
436 m_CurrentFilterInput = m_Filters.GetFilterOptionsConsoles();
437 RefreshList();
438 }
439
440 override void PressA()
441 {
442
443 }
444
445 override void PressX()
446 {
447 #ifdef DIAG_DEVELOPER
448 RefreshServerList(!m_DummyServersEnabled);
449 #else
451 #endif
452 }
453
454#ifdef DIAG_DEVELOPER
455 void RefreshServerList(bool forcePageChange = false)
456#else
458#endif
459 {
460 int currentTime = g_Game.GetTime();
461 #ifdef DIAG_DEVELOPER
462 if (!forcePageChange && m_TabType != TabType.FAVORITE && (currentTime - m_TimeLastServerRefresh) < 1000)
463 #else
464 if (m_TabType != TabType.FAVORITE && (currentTime - m_TimeLastServerRefresh) < 1000)
465 #endif
466 return;
467
468 m_TimeLastServerRefresh = currentTime;
469 #ifdef DIAG_DEVELOPER
470 if (m_IsFilterChanged || forcePageChange)
471 #else
473 #endif
474 {
476 }
477 m_OnlineFavServers.Clear();
478 RefreshList();
479 }
480
481 override void PressY()
482 {
484 }
485
486 override void PressThumbRight()
487 {
488 switch (m_SelectedPanel)
489 {
490 case SelectedPanel.BROWSER:
491 {
493 {
494 m_Menu.ServerListFocus(true, m_SelectedServer.ToggleFavorite());
495 }
496 break;
497 }
498 case SelectedPanel.FILTERS:
499 {
500 if (m_Filters)
501 {
502 m_Filters.ResetFilters();
503 }
504 break;
505 }
506 }
507 }
508
509 override void Left()
510 {
511 if (CanNavigatePages())
512 {
513 int currPage = GetCurrentPage();
514 m_PreviousPage = currPage;
515 if ( currPage > 1 )
516 {
517 SetCurrentPage( currPage - 1 );
519 }
520 }
521 }
522
523 override void LeftHold()
524 {
525 if (CanNavigatePages())
526 {
527 int currentTime = g_Game.GetTime();
528 if ( (currentTime - m_TimeLastServerRefreshHoldButton) > 100 )
529 {
531 Left();
532 }
533 }
534 }
535
536 override void LeftRelease()
537 {
539 {
540 RefreshList();
541 }
542 }
543
544 override void Right()
545 {
546 if (CanNavigatePages())
547 {
548 int currPage = GetCurrentPage();
549 m_PreviousPage = currPage;
550 if (currPage < m_PagesCount)
551 {
552 SetCurrentPage(currPage + 1);
554 }
555 }
556 }
557
558 override void RightHold()
559 {
560 if (CanNavigatePages())
561 {
562 int currentTime = g_Game.GetTime();
563 if ( (currentTime - m_TimeLastServerRefreshHoldButton) > 100 )
564 {
566 Right();
567 }
568 }
569 }
570
571 override void RightRelease()
572 {
574 {
575 RefreshList();
576 }
577 }
578
579 override void PressSholderLeft()
580 {
582 }
583
584 override void PressSholderRight()
585 {
587 }
588
589 override void OnPressShoulder()
590 {
591 if (m_TabType == TabType.FAVORITE)
592 return;
593
594 switch (m_SelectedPanel)
595 {
596 case SelectedPanel.BROWSER:
597 {
598 if (m_TabType == TabType.FAVORITE)
599 {
601 }
602 else
603 {
605 }
606 break;
607 }
608 case SelectedPanel.DETAILS:
609 case SelectedPanel.FILTERS:
610 {
612 break;
613 }
614 }
615 }
616
617 override void Focus()
618 {
619 if (m_TabType == TabType.FAVORITE)
620 {
622 }
623 else
624 {
625 SwitchToFilters(true);
626 }
627 }
628
629 override void ShowServerDetails()
630 {
631 super.ShowServerDetails();
632
633 if (m_TabType != TabType.FAVORITE)
634 {
635 m_FilterRoot.Show(false);
636 m_BtnShowFilters.Show(m_MouseKeyboardControlled);
637 }
638 }
639
641 {
642 SetEnableFilters(true);
643 SetEnableServers(false);
644
645 // if loaded servers is 0, then hide Top navigation menu <Left / Right>
646 if (!m_MouseKeyboardControlled)
647 {
648 m_WidgetNavFilters.Show(true);
649 m_WidgetNavServers.Show(false);
650 }
651
652 m_Filters.Focus();
653 m_IsFilterFocused = true;
654 m_IsDetailsFocused = false;
655 m_Menu.ShowAButton(true);
656
658 m_SelectedPanel = SelectedPanel.FILTERS;
659 }
660
662 {
663 SetEnableFilters(false);
664 SetEnableServers(false);
665
666 if (!m_MouseKeyboardControlled)
667 {
668 m_WidgetNavFilters.Show(true);
669 m_WidgetNavServers.Show(false);
670 }
671
672 m_Details.Focus();
673 m_IsDetailsFocused = true;
674 m_IsFilterFocused = false;
675
677
678 m_SelectedPanel = SelectedPanel.DETAILS;
679 }
680
682 {
683 SetEnableServers(true);
684 SetEnableFilters(false);
685
686 if (!m_MouseKeyboardControlled)
687 {
688 m_WidgetNavFilters.Show(false);
689 if (m_TabType != TabType.FAVORITE)
690 {
691 m_WidgetNavServers.Show(true);
692 }
693 }
694
696 if (entries && entries.Count() > 0)
697 {
698 string entryKey = entries.Get(0).GetIpPort();
699 ServerBrowserEntry sbEntry = m_EntryWidgets.Get(entryKey);
700 if (sbEntry)
701 {
702 sbEntry.Focus();
703 }
704
705 m_Menu.ShowAButton(true);
706 m_Menu.UpdateAButtonLabel("#str_serverbrowserroot_toolbar_bg_consoletoolbar_connect_connecttext0");
707 m_Menu.ShowThumbRButton(true);
708 }
709 else
710 {
711 SetFocus(null);
712 m_Menu.ShowAButton(false);
713 m_Menu.ShowThumbRButton(false);
714 }
715
716 m_IsFilterFocused = false;
717 m_IsDetailsFocused = false;
718
720 m_SelectedPanel = SelectedPanel.BROWSER;
721 }
722
723 void SetEnableFilters(bool enable)
724 {
725 Widget w_filters = m_Root.FindAnyWidget("filters_content");
726 Widget w_content = m_Root.FindAnyWidget("server_list_scroller");
727 w_content.Enable( !enable );
728
729 if ( enable )
730 {
731 SetFocus( ButtonWidget.Cast(w_filters.FindWidget("sort_button")) );
732 }
733 }
734
735 void SetEnableServers(bool enable)
736 {
737 Widget w_filters = m_Root.FindAnyWidget("filters_content");
738 Widget w_content = m_Root.FindAnyWidget("server_list_scroller");
739 w_content.Enable( enable );
740 }
741
743 {
744 TextWidget wgtPageStat = TextWidget.Cast(m_Root.FindAnyWidget("servers_navigation_page_status"));
745
746 int pagesCount = GetPagesCount();
747 int currentPage = GetCurrentPage();
748
749 if (currentPage < 1)
750 currentPage = 1;
751
752 if (currentPage > pagesCount)
753 currentPage = pagesCount;
754
755 wgtPageStat.SetText(currentPage.ToString() + " / " + pagesCount.ToString());
756
757 bool canLeft = currentPage > 1;
758 bool canRight = currentPage < pagesCount;
759
760 bool showMouseKeyboardPaging = m_MouseKeyboardControlled && (pagesCount > 1);
761 bool showControllerPaging = !m_MouseKeyboardControlled && !m_IsFilterFocused && !m_IsDetailsFocused && (pagesCount > 1);
762
763 m_BtnPagePrev.Show(showMouseKeyboardPaging && canLeft);
764 m_BtnPageNext.Show(showMouseKeyboardPaging && canRight);
765
766 m_ButtonPageLeftImg.Show(showControllerPaging && canLeft);
767 m_ButtonPageRightImg.Show(showControllerPaging && canRight);
768 }
769
770 override bool OnClick(Widget w, int x, int y, int button)
771 {
772 super.OnClick(w, x, y, button);
773
774 int oldPage;
775 if (button == MouseState.LEFT)
776 {
777 if (w == m_ResetFilters)
778 {
779 ResetFilters();
780 }
781 else if (w == m_ApplyFilter)
782 {
783 ApplyFilters();
784 return true;
785 }
786 else if (w == m_RefreshList)
787 {
789 {
790 PressX();
791 }
792 else
793 {
794 RefreshList();
795 }
796
797 return true;
798 }
799 else if (w == m_BtnPagePrev)
800 {
801 oldPage = GetCurrentPage();
802 Left();
803
804 if (GetCurrentPage() != oldPage)
805 RefreshList();
806
807 return true;
808 }
809 else if (w == m_BtnPageNext)
810 {
811 oldPage = GetCurrentPage();
812 Right();
813
814 if (GetCurrentPage() != oldPage)
815 RefreshList();
816
817 return true;
818 }
819 else if (w == m_BtnShowDetails)
820 {
822 return true;
823 }
824 else if (w == m_BtnShowFilters)
825 {
827 return true;
828 }
829 }
830 return false;
831 }
832
833 //Coloring functions (Until WidgetStyles are useful)
834 override void ColorHighlight( Widget w )
835 {
836 if ( !w )
837 {
838 return;
839 }
840
841 w.SetColor( ARGB( 255, 200, 0, 0) );
842 }
843
844 override void ColorNormal( Widget w )
845 {
846 if ( !w )
847 {
848 return
849 }
850
851 if ( (w.GetFlags() & WidgetFlags.IGNOREPOINTER) == WidgetFlags.IGNOREPOINTER )
852 {
853 return;
854 }
855
856 if ( w.IsInherited( ButtonWidget ) )
857 {
858 ButtonWidget button = ButtonWidget.Cast( w );
859 button.SetTextColor( ARGB( 255, 255, 255, 255 ) );
860 }
861 else if ( !w.IsInherited( EditBoxWidget ) )
862 {
863 w.SetColor( ARGB( 0, 255, 255, 255 ) );
864 }
865
866 TextWidget text1 = TextWidget.Cast(w.FindAnyWidget( w.GetName() + "_text" ) );
867 TextWidget text2 = TextWidget.Cast(w.FindAnyWidget( w.GetName() + "_text_1" ) );
868 TextWidget text3 = TextWidget.Cast(w.FindAnyWidget( w.GetName() + "_label" ) );
869 ImageWidget image = ImageWidget.Cast( w.FindAnyWidget( w.GetName() + "_image" ) );
870
871 Widget option = Widget.Cast( w.FindAnyWidget( w.GetName() + "_option_wrapper" ) );
872
873 if ( text1 )
874 {
875 text1.SetColor( ARGB( 255, 255, 255, 255 ) );
876 }
877
878 if ( text2 )
879 {
880 text2.SetColor( ARGB( 255, 255, 255, 255 ) );
881 }
882
883 if ( text3 )
884 {
885 text3.SetColor( ARGB( 255, 255, 255, 255 ) );
886 w.SetAlpha(0);
887 }
888
889 if ( image )
890 {
891 image.SetColor( ARGB( 255, 255, 255, 255 ) );
892 }
893
894 if ( option )
895 {
896 option.SetColor( ARGB( 150, 255, 255, 255 ) );
897 }
898 }
899
900 override void ColorDisable( Widget w )
901 {
902 #ifdef PLATFORM_WINDOWS
903 SetFocus( null );
904 #endif
905
906 ButtonWidget button = ButtonWidget.Cast( w );
907 if ( button )
908 {
909 button.SetTextColor( ColorManager.COLOR_DISABLED_TEXT );
910 }
911 }
912
913 override void SwitchToDetails(bool focus = true)
914 {
916
917 if (focus)
919
920 m_Menu.UpdateYButtonLabel("#server_browser_tab_server #STR_server_browser_menu_server_filters");
921 m_RightAreaHeaderText.SetText("#STR_server_browser_menu_server_details");
922 }
923
924 override void SwitchToFilters(bool focus = true)
925 {
926 if (m_TabType == TabType.FAVORITE)
927 return;
928
929 m_FilterRoot.Show(true);
930 m_BtnShowDetails.Show(m_MouseKeyboardControlled);
931 m_DetailsRoot.Show(false);
932
933 if (focus)
935
936 m_Menu.UpdateYButtonLabel("#server_details_header");
937 m_RightAreaHeaderText.SetText("#STR_server_browser_menu_server_filters");
938 }
939
940 protected bool CanNavigatePages()
941 {
942 if (m_MouseKeyboardControlled)
943 {
944 return true;
945 }
946
948 }
949
950 protected int GetPagesCount()
951 {
952 if (m_PagesCount < 1)
953 {
954 return 1;
955 }
956
957 return m_PagesCount;
958 }
959
960#ifdef DIAG_DEVELOPER
961 protected void RefreshDummyList()
962 {
963 for (int i = 0; i < m_ServerListEntiers.Count(); ++i)
964 {
965 m_ServerListEntiers[i].Show(false);
966 }
967
968 for (int j = 0; j < m_EntriesSorted.Count(); ++j)
969 {
970 array<ref GetServersResultRow> resultRows = m_EntriesSorted.GetElement(j);
971 if (resultRows)
972 {
973 resultRows.Clear();
974 }
975 }
976
977 m_EntryWidgets.Clear();
978 m_OnlineFavServers.Clear();
979
980 m_IsFilterChanged = false;
981 m_Filters.SaveFilters();
982
983 m_Menu.SetServersLoadingTab(m_TabType);
984 m_LoadingFinished = false;
985 m_Initialized = true;
986 m_BegunLoading = false;
988 m_TotalPages = -1;
989 m_TotalServers = 0;
992 m_Loading = true;
993
994 m_Menu.DeselectCurrentServer();
995
996 m_CurrentFilterInput = m_Filters.GetFilterOptionsConsoles();
1000
1001 m_ServerListScroller.VScrollToPos01(0);
1002 m_LoadingText.SetText("#dayz_game_loading");
1003
1004 GetServersResultRowArray filteredResults = new GetServersResultRowArray();
1005
1006 if (m_DummyServers && m_DummyServers.m_Results)
1007 {
1008 for (int k = 0; k < m_DummyServers.m_Results.Count(); ++k)
1009 {
1010 GetServersResultRow row = m_DummyServers.m_Results[k];
1011 if (PassLocalFilters(row))
1012 {
1013 filteredResults.Insert(row);
1014 }
1015 }
1016 }
1017
1018 m_TotalServersCount = filteredResults.Count();
1019 m_PagesCount = (m_TotalServersCount + SERVERS_VISIBLE_COUNT - 1) / SERVERS_VISIBLE_COUNT;
1020 if (m_PagesCount < 1)
1021 {
1022 m_PagesCount = 1;
1023 }
1024
1025 int safePage = GetCurrentPage();
1026 if (safePage < 1)
1027 {
1028 safePage = 1;
1029 }
1030 if (safePage > m_PagesCount)
1031 {
1032 safePage = m_PagesCount;
1033 }
1034 SetCurrentPage(safePage);
1035
1036 int startIndex = (safePage - 1) * SERVERS_VISIBLE_COUNT;
1037 int endIndex = Math.Min(startIndex + SERVERS_VISIBLE_COUNT, filteredResults.Count());
1038
1040 for (int i2 = startIndex; i2 < endIndex; ++i2)
1041 {
1042 pageResults.Insert(filteredResults[i2]);
1043 }
1044
1045 LoadEntries(safePage, pageResults);
1047 UpdatePageButtons();
1048 }
1049
1050 override void OnDummyServersEnabledChanged()
1051 {
1052 super.OnDummyServersEnabledChanged();
1053
1054 SetCurrentPage(1);
1055 m_PreviousPage = 1;
1056 m_OnlineFavServers.Clear();
1057
1058 RefreshServerList(!m_DummyServersEnabled);
1059 }
1060
1061 override int GetServersVisibleCount()
1062 {
1063 return SERVERS_VISIBLE_COUNT;
1064 }
1065#endif
1066}
bool m_Initialized
void OnInputDeviceChanged(EInputDeviceType pInputDeviceType)
Definition inventory.c:261
EBiosError
Possible Error codes for bios API.
ESortType
array< ref GetServersResultRow > GetServersResultRowArray
static int COLOR_DISABLED_TEXT
The error handler itself, for managing and distributing errors to modules Manages the ErrorHandlerMod...
static proto string GetClientMessage(ErrorCategory category, int code, string additionalInfo="")
Gets the Client Message for specified error.
GetServersResult the output structure of the GetServers operation.
ref GetServersResultRowArray m_Results
GetServersResultRow the output structure of the GetServers operation that represents one game server.
override void LoadEntries(int cur_page_index, GetServersResultRowArray page_entries)
override bool PassFilter(GetServersResultRow result)
override void ColorDisable(Widget w)
void SetEnableServers(bool enable)
ServerBrowserEntry GetServerEntryByIndex(int index)
void SetEnableFilters(bool enable)
override void ColorNormal(Widget w)
override void SwitchToFilters(bool focus=true)
void OnInputDeviceChanged(EInputDeviceType pInputDeviceType)
void LoadEntries(int cur_page_index, GetServersResultRowArray page_entries)
override void SwitchToDetails(bool focus=true)
ref array< ref ServerBrowserEntry > m_ServerListEntiers
override bool PassFilter(GetServersResultRow result)
override void Construct(Widget parent, ServerBrowserMenuNew menu, TabType type)
override bool OnClick(Widget w, int x, int y, int button)
override void ColorHighlight(Widget w)
override void OnLoadServersAsyncConsole(GetServersResult result_list, EBiosError error, string response)
Result for an object found in CGame.IsBoxCollidingGeometryProxy.
DayZGame g_Game
Definition dayzgame.c:3942
ErrorCategory
ErrorCategory - To decide what ErrorHandlerModule needs to be called and easily identify where it cam...
MouseState
Definition ensystem.c:311
WidgetFlags
Definition enwidgets.c:58
proto native void SetFocus(Widget w)
Icon x
Icon y
EInputDeviceType
Definition input.c:3
int ARGB(int a, int r, int g, int b)
Definition proto.c:322
ref ServerBrowserFilterContainer m_Filters
void OnPressShoulder()
ref map< ESortType, ref array< ref GetServersResultRow > > m_EntriesSorted
TabType m_TabType
void Right()
Widget m_FilterSearchText
Widget m_FiltersChanged
void ApplyFilters()
Widget m_SlotsSort
TextWidget m_RightAreaHeaderText
bool m_LoadingFinished
ServerBrowserEntry m_SelectedServer
int m_CurrentLoadedPage
ref GetServersInput m_CurrentFilterInput
void SwitchRightAreaView()
ButtonWidget m_BtnPageNext
ButtonWidget m_BtnShowFilters
ref map< string, ref ServerBrowserEntry > m_EntryWidgets
int m_TotalPages
bool m_BegunLoading
void SwitchToDetails(bool focus=true)
TabType
ScrollWidget m_ServerListScroller
Widget m_PingSort
int m_TotalLoadedServers
string GetSortOption()
Widget m_ApplyFilter
ServerBrowserMenuNew m_Menu
void ResetFilters()
void SwitchToFilters(bool focus=true)
bool m_Loading
SelectedPanel m_SelectedPanel
int m_LastLoadedPage
ESortType m_SortType
TextWidget m_LoadingText
Widget m_PopulationSort
Widget m_MapSort
Widget m_HostSort
ButtonWidget m_BtnPagePrev
ESortOrder m_SortOrder
SpacerBaseWidget m_ServerList
int m_TotalServers
void ShowServerDetails()
int m_CurrentPageNum
void Left()
int GetCurrentPage()
Widget m_FilterSearchTextBox
ref ServerBrowserDetailsContainer m_Details
Widget m_FilterRoot
Widget m_ResetFilters
Widget m_DetailsRoot
Widget m_RefreshList
Widget m_TimeSort
Widget m_FilterContent
ref set< string > m_OnlineFavServers
void SetCurrentPage(int page_num)
ButtonWidget m_BtnShowDetails
Widget m_Root
Definition sizetochild.c:91