DayZ 1.30
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено
ServerBrowserTabConsolePages.c
См. документацию.
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}
void OnInputDeviceChanged(EInputDeviceType pInputDeviceType)
EBiosError
Possible Error codes for bios API. This is the list of errors that can be returned from bios API....
Определения BIOSErrorModule.c:7
ESortType
Определения BiosLobbyService.c:33
array< ref GetServersResultRow > GetServersResultRowArray
Определения BiosLobbyService.c:332
map
Определения ControlsXboxNew.c:4
DayZGame g_Game
Определения DayZGame.c:4074
ErrorCategory
ErrorCategory - To decide what ErrorHandlerModule needs to be called and easily identify where it cam...
Определения ErrorModuleHandler.c:5
Icon x
Icon y
ref ServerBrowserFilterContainer m_Filters
Определения ServerBrowserTab.c:35
void OnPressShoulder()
ref map< ESortType, ref array< ref GetServersResultRow > > m_EntriesSorted
Определения ServerBrowserTab.c:75
TabType m_TabType
Определения ServerBrowserTab.c:40
void Right()
Widget m_FilterSearchText
Определения ServerBrowserTab.c:69
Widget m_FiltersChanged
Определения ServerBrowserTab.c:62
void ApplyFilters()
Widget m_SlotsSort
Определения ServerBrowserTab.c:66
TextWidget m_RightAreaHeaderText
Определения ServerBrowserTab.c:79
bool m_LoadingFinished
Определения ServerBrowserTab.c:52
ServerBrowserEntry m_SelectedServer
Определения ServerBrowserTab.c:38
int m_CurrentLoadedPage
Определения ServerBrowserTab.c:56
ref GetServersInput m_CurrentFilterInput
Определения ServerBrowserTab.c:57
void SwitchRightAreaView()
Определения ServerBrowserTab.c:759
ButtonWidget m_BtnPageNext
Определения ServerBrowserTab.c:73
ButtonWidget m_BtnShowFilters
Определения ServerBrowserTab.c:85
ref map< string, ref ServerBrowserEntry > m_EntryWidgets
Определения ServerBrowserTab.c:32
int m_TotalPages
Определения ServerBrowserTab.c:51
bool m_BegunLoading
Определения ServerBrowserTab.c:46
void SwitchToDetails(bool focus=true)
TabType
Определения ServerBrowserTab.c:2
ScrollWidget m_ServerListScroller
Определения ServerBrowserTab.c:27
Widget m_PingSort
Определения ServerBrowserTab.c:67
int m_TotalLoadedServers
Определения ServerBrowserTab.c:49
string GetSortOption()
Определения ServerBrowserTab.c:576
Widget m_ApplyFilter
Определения ServerBrowserTab.c:59
ServerBrowserMenuNew m_Menu
Определения ServerBrowserTab.c:37
void ResetFilters()
Определения ServerBrowserTab.c:430
void SwitchToFilters(bool focus=true)
bool m_Loading
Определения ServerBrowserTab.c:47
SelectedPanel m_SelectedPanel
Определения ServerBrowserTab.c:44
int m_LastLoadedPage
Определения ServerBrowserTab.c:50
ESortType m_SortType
Определения ServerBrowserTab.c:41
TextWidget m_LoadingText
Определения ServerBrowserTab.c:71
Widget m_PopulationSort
Определения ServerBrowserTab.c:65
Widget m_MapSort
Определения ServerBrowserTab.c:68
Widget m_HostSort
Определения ServerBrowserTab.c:63
ButtonWidget m_BtnPagePrev
Определения ServerBrowserTab.c:72
ESortOrder m_SortOrder
Определения ServerBrowserTab.c:42
SpacerBaseWidget m_ServerList
Определения ServerBrowserTab.c:28
int m_TotalServers
Определения ServerBrowserTab.c:48
void ShowServerDetails()
Определения ServerBrowserTab.c:797
int m_CurrentPageNum
Определения ServerBrowserTab.c:53
void Left()
int GetCurrentPage()
Определения ServerBrowserTab.c:420
Widget m_FilterSearchTextBox
Определения ServerBrowserTab.c:70
ref ServerBrowserDetailsContainer m_Details
Определения ServerBrowserTab.c:87
Widget m_FilterRoot
Определения ServerBrowserTab.c:80
Widget m_ResetFilters
Определения ServerBrowserTab.c:61
Widget m_DetailsRoot
Определения ServerBrowserTab.c:84
Widget m_RefreshList
Определения ServerBrowserTab.c:60
Widget m_TimeSort
Определения ServerBrowserTab.c:64
Widget m_FilterContent
Определения ServerBrowserTab.c:81
ref set< string > m_OnlineFavServers
Определения ServerBrowserTab.c:77
void SetCurrentPage(int page_num)
Определения ServerBrowserTab.c:415
ButtonWidget m_BtnShowDetails
Определения ServerBrowserTab.c:82
Widget m_Root
Определения SizeToChild.c:91
bool m_Initialized
Определения UiHintPanel.c:317
static int COLOR_DISABLED_TEXT
Определения ColorManager.c:11
Определения ColorManager.c:2
Определения EnWidgets.c:354
static proto string GetClientMessage(ErrorCategory category, int code, string additionalInfo="")
Gets the Client Message for specified error.
The error handler itself, for managing and distributing errors to modules Manages the ErrorHandlerMod...
Определения ErrorModuleHandler.c:29
int m_Page
Определения BiosLobbyService.c:390
ESortOrder m_SortOrder
Определения BiosLobbyService.c:385
string m_SortBy
Определения BiosLobbyService.c:384
int m_NumServers
Определения BiosLobbyService.c:376
int m_Pages
Определения BiosLobbyService.c:373
ref GetServersResultRowArray m_Results
Определения BiosLobbyService.c:374
int m_Page
Определения BiosLobbyService.c:372
GetServersResult the output structure of the GetServers operation.
Определения BiosLobbyService.c:371
int m_HostPort
Определения BiosLobbyService.c:177
string m_HostIp
Определения BiosLobbyService.c:176
GetServersResultRow the output structure of the GetServers operation that represents one game server.
Определения BiosLobbyService.c:171
ref array< ref ServerBrowserEntry > m_ServerListEntiers
Определения ServerBrowserTabConsolePages.c:26
override void PressThumbRight()
Определения ServerBrowserTabConsolePages.c:486
bool CanNavigatePages()
Определения ServerBrowserTabConsolePages.c:940
override void PressSholderRight()
Определения ServerBrowserTabConsolePages.c:584
override void ShowServerDetails()
Определения ServerBrowserTabConsolePages.c:629
override void ColorDisable(Widget w)
Определения ServerBrowserTabConsolePages.c:900
bool m_IsFilterChanged
Определения ServerBrowserTabConsole.c:3
Widget m_PnlPagesPanel
Определения ServerBrowserTabConsolePages.c:24
override void PressA()
Определения ServerBrowserTabConsolePages.c:440
override void ApplyFilters()
Определения ServerBrowserTabConsolePages.c:428
override bool OnClick(Widget w, int x, int y, int button)
Определения ServerBrowserTabConsolePages.c:770
void SetFocusServers()
Определения ServerBrowserTabConsole.c:349
void UpdatePageButtons()
Определения ServerBrowserTabConsolePages.c:742
override void SwitchToDetails(bool focus=true)
Определения ServerBrowserTabConsolePages.c:913
Widget m_WidgetNavFilters
Определения ServerBrowserTabConsole.c:7
void SetFocusFilters()
Определения ServerBrowserTabConsolePages.c:640
ServerBrowserEntry GetServerEntryByIndex(int index)
Определения ServerBrowserTabConsolePages.c:350
override void PressY()
Определения ServerBrowserTabConsolePages.c:481
TextWidget m_PnlPagesLoadingText
Определения ServerBrowserTabConsolePages.c:25
override void SwitchToFilters(bool focus=true)
Определения ServerBrowserTabConsolePages.c:924
int m_TimeLastServerRefresh
Определения ServerBrowserTabConsolePages.c:21
Widget m_ButtonPageRightImg
Определения ServerBrowserTabConsolePages.c:13
override void ColorNormal(Widget w)
Определения ServerBrowserTabConsolePages.c:844
override void ResetFilters()
Определения ServerBrowserTabConsolePages.c:421
int m_ServersEstimateCount
Определения ServerBrowserTabConsolePages.c:20
Widget m_WidgetNavServers
Определения ServerBrowserTabConsole.c:8
override bool PassFilter(GetServersResultRow result)
Определения ServerBrowserTabConsolePages.c:335
Widget m_ButtonPageLeftImg
Определения ServerBrowserTabConsolePages.c:12
bool m_IsDetailsFocused
Определения ServerBrowserTabConsole.c:5
int m_TimeLastServerRefreshHoldButton
Определения ServerBrowserTabConsolePages.c:22
override void RefreshList()
Определения ServerBrowserTabConsolePages.c:386
override void LeftHold()
Определения ServerBrowserTabConsolePages.c:523
override void OnLoadServersAsyncConsole(GetServersResult result_list, EBiosError error, string response)
Определения ServerBrowserTabConsolePages.c:196
void RefreshServerList()
Определения ServerBrowserTabConsolePages.c:457
override void PressSholderLeft()
Определения ServerBrowserTabConsolePages.c:579
override void OnFilterChanged()
Определения ServerBrowserTabConsolePages.c:376
void SetFocusDetails()
Определения ServerBrowserTabConsolePages.c:661
void LoadEntries(int cur_page_index, GetServersResultRowArray page_entries)
Определения ServerBrowserTabConsolePages.c:281
void SetEnableServers(bool enable)
Определения ServerBrowserTabConsole.c:377
override void OnPressShoulder()
Определения ServerBrowserTabConsolePages.c:589
override void RightRelease()
Определения ServerBrowserTabConsolePages.c:571
void OnInputDeviceChanged(EInputDeviceType pInputDeviceType)
Определения ServerBrowserTabConsolePages.c:142
void SetEnableFilters(bool enable)
Определения ServerBrowserTabConsole.c:369
override void Construct(Widget parent, ServerBrowserMenuNew menu, TabType type)
Определения ServerBrowserTabConsolePages.c:30
override void Left()
Определения ServerBrowserTabConsolePages.c:509
override void Focus()
Определения ServerBrowserTabConsolePages.c:617
void ShowHideConsoleWidgets()
Определения ServerBrowserTabConsole.c:53
override void ColorHighlight(Widget w)
Определения ServerBrowserTabConsolePages.c:834
void OnLoadServersAsyncFinished()
Определения ServerBrowserTabConsolePages.c:256
override void RightHold()
Определения ServerBrowserTabConsolePages.c:558
const int SERVERS_VISIBLE_COUNT
Определения ServerBrowserTabConsolePages.c:3
bool CanRefreshServerList()
Определения ServerBrowserTabConsolePages.c:381
override void PressX()
Определения ServerBrowserTabConsolePages.c:445
bool m_IsFilterFocused
Определения ServerBrowserTabConsole.c:4
override void LeftRelease()
Определения ServerBrowserTabConsolePages.c:536
override void Right()
Определения ServerBrowserTabConsolePages.c:544
override bool PassFilter(GetServersResultRow result)
override void LoadExtraEntries(int index)
override void LoadEntries(int cur_page_index, GetServersResultRowArray page_entries)
Определения EnWidgets.c:220
Определения EnWidgets.c:190
Result for an object found in CGame.IsBoxCollidingGeometryProxy.
Определения Transport.c:70
MouseState
Определения EnSystem.c:311
WidgetFlags
Определения EnWidgets.c:58
proto native void SetFocus(Widget w)
EInputDeviceType
Определения input.c:3
int ARGB(int a, int r, int g, int b)
Определения proto.c:322