class ServerBrowserTabConsolePages extends ServerBrowserTab
{
protected const int SERVERS_VISIBLE_COUNT = 22;
private bool m_IsFilterChanged;
private bool m_IsFilterFocused;
protected bool m_MouseKeyboardControlled
private Widget m_WidgetNavFilters;
private Widget m_WidgetNavServers;
protected Widget m_ButtonPageLeftImg;
protected Widget m_ButtonPageRightImg;
protected int m_PreviousPage;
protected int m_TotalServersCount;
protected int m_PageStartNum;
protected int m_PageEndNum;
protected int m_PagesCount;
protected int m_ServersEstimateCount;
protected int m_TimeLastServerRefresh;
protected int m_TimeLastServerRefreshHoldButton;
protected Widget m_PnlPagesPanel;
protected TextWidget m_PnlPagesLoadingText;
protected ref array<ref ServerBrowserEntry> m_ServerListEntiers;
private bool m_IsDetailsFocused;
protected override void Construct(Widget parent, ServerBrowserMenuNew menu, TabType type)
{
m_Root = g_Game.GetWorkspace().CreateWidgets("gui/layouts/new_ui/server_browser/xbox/server_browser_tab_console_pages.layout", parent);
m_ServerListScroller = ScrollWidget.Cast( m_Root.FindAnyWidget("server_list_scroller"));
m_ServerList = SpacerBaseWidget.Cast(m_ServerListScroller.FindAnyWidget("server_list_content"));
m_ServerListScroller.VScrollToPos01(0);
m_ServerListEntiers = new array<ref ServerBrowserEntry>();
m_EntryWidgets = new map<string, ref ServerBrowserEntry>();
m_EntriesSorted = new map<ESortType, ref array<ref GetServersResultRow>>();
m_EntriesSorted[ESortType.HOST] = new array<ref GetServersResultRow>();
m_EntriesSorted[ESortType.POPULATION] = new array<ref GetServersResultRow>();
m_Menu = menu;
m_TabType = type;
m_FilterRoot = m_Root.FindAnyWidget("filters_root");
m_FilterContent = m_Root.FindAnyWidget("filters_content");
m_ApplyFilter = m_Root.FindAnyWidget("apply_filter_button");
m_ResetFilters = m_Root.FindAnyWidget("reset_filter_button");
m_RefreshList = m_Root.FindAnyWidget("refresh_list_button");
m_FiltersChanged = m_Root.FindAnyWidget("unapplied_filters_notify");
m_HostSort = m_Root.FindAnyWidget("server_list_content_header_host");
m_TimeSort = m_Root.FindAnyWidget("server_list_content_header_time");
m_PopulationSort = m_Root.FindAnyWidget("server_list_content_header_population");
m_SlotsSort = m_Root.FindAnyWidget("server_list_content_header_slots");
m_PingSort = m_Root.FindAnyWidget("server_list_content_header_ping");
m_MapSort = m_Root.FindAnyWidget("server_list_content_header_map");
m_FilterSearchText = m_Root.FindAnyWidget("search_name_button");
m_FilterSearchTextBox = m_Root.FindAnyWidget("search_name_setting_option");
m_LoadingText = TextWidget.Cast( m_Root.FindAnyWidget("loading_servers_info"));
m_WidgetNavFilters = m_Root.FindAnyWidget("filters_root_nav_wrapper");
m_WidgetNavServers = m_Root.FindAnyWidget("server_list_root_nav_wrapper");
#ifdef PLATFORM_MSSTORE
// Find M&K filter and disable it
Widget keyboard_button = m_Root.FindAnyWidget("keyboard_button");
if (keyboard_button)
keyboard_button.Show(false);
#endif
m_BtnPagePrev = ButtonWidget.Cast(m_Root.FindAnyWidget("servers_navigation_prev"));
m_BtnPageNext = ButtonWidget.Cast(m_Root.FindAnyWidget("servers_navigation_next"));
#ifdef PLATFORM_PS4
m_ButtonPageLeftImg = m_Root.FindAnyWidget("servers_navigation_page_prev_icon_ps4");
m_ButtonPageRightImg = m_Root.FindAnyWidget("servers_navigation_page_next_icon_ps4");
m_Root.FindAnyWidget("servers_navigation_page_prev_icon_xbox").Show(false);
m_Root.FindAnyWidget("servers_navigation_page_next_icon_xbox").Show(false);
#else
m_ButtonPageLeftImg = m_Root.FindAnyWidget("servers_navigation_page_prev_icon_xbox");
m_ButtonPageRightImg = m_Root.FindAnyWidget("servers_navigation_page_next_icon_xbox");
m_Root.FindAnyWidget("servers_navigation_page_prev_icon_ps4" ).Show(false);
m_Root.FindAnyWidget("servers_navigation_page_next_icon_ps4" ).Show(false);
#endif
m_RightAreaHeaderText = TextWidget.Cast(m_Root.FindAnyWidget("right_area_header_text"));
m_FilterRoot = m_Root.FindAnyWidget("filters_root");
m_BtnShowDetails = ButtonWidget.Cast(m_Root.FindAnyWidget("show_details_button"));
m_DetailsRoot = m_Root.FindAnyWidget("details_root");
m_BtnShowFilters = ButtonWidget.Cast(m_Root.FindAnyWidget("show_filters_button"));
ShowHideConsoleWidgets();
m_Filters = new ServerBrowserFilterContainer(m_Root.FindAnyWidget("filters_content"), this);
m_PnlPagesPanel = m_Root.FindAnyWidget( "servers_navigation_spacer" );
m_PreviousPage = 1;
SetCurrentPage(1);
m_PnlPagesPanel.Show(true);
m_LoadingFinished = true;
m_Filters.OnSortChanged(m_Filters.m_SortingFilter.GetValue());
UpdatePageButtons();
m_Root.SetHandler(this);
m_FilterSearchTextBox.SetHandler(this);
g_Game.GetMission().GetOnInputDeviceChanged().Insert(OnInputDeviceChanged);
OnInputDeviceChanged(g_Game.GetInput().GetCurrentInputDevice());
m_Details = new ServerBrowserDetailsContainer(m_Root.FindAnyWidget("details_content"), this);
#ifdef DIAG_DEVELOPER
InitDummyServers();
#endif
}
void ShowHideConsoleWidgets()
{
bool is_xbox = true;
#ifdef PLATFORM_PS4
is_xbox = false;
#endif
m_Root.FindAnyWidget( "filters_root_nav_img_lb_xbox" ).Show( is_xbox );
m_Root.FindAnyWidget( "filters_root_nav_img_rb_xbox" ).Show( is_xbox );
m_Root.FindAnyWidget( "server_list_root_nav_img_lb_xbox" ).Show( is_xbox );
m_Root.FindAnyWidget( "server_list_root_nav_img_rb_xbox" ).Show( is_xbox );
m_Root.FindAnyWidget( "filters_root_nav_img_l1_ps4" ).Show( !is_xbox );
m_Root.FindAnyWidget( "filters_root_nav_img_r1_ps4" ).Show( !is_xbox );
m_Root.FindAnyWidget( "server_list_root_nav_img_l1_ps4" ).Show( !is_xbox );
m_Root.FindAnyWidget( "server_list_root_nav_img_r1_ps4" ).Show( !is_xbox );
}
protected void OnInputDeviceChanged(EInputDeviceType pInputDeviceType)
{
switch (pInputDeviceType)
{
case EInputDeviceType.CONTROLLER:
{
m_MouseKeyboardControlled = false;
ShowHideConsoleWidgets();
m_WidgetNavFilters.Show(m_IsFilterFocused || m_IsDetailsFocused);
if (m_TabType != TabType.FAVORITE)
{
m_WidgetNavServers.Show(!m_IsFilterFocused && !m_IsDetailsFocused);
}
m_BtnShowFilters.Show(false);
m_BtnShowDetails.Show(false);
m_RefreshList.Show(false);
m_Root.FindAnyWidget("spacer2").Show(false);
m_Root.FindAnyWidget("spacer5").Show(false);
m_Menu.GetLayoutRoot().FindAnyWidget("play_panel_root").Show(false);
m_Menu.GetLayoutRoot().FindAnyWidget("MouseAndKeyboardWarning").Show(false);
UpdatePageButtons();
break;
}
default:
{
if (g_Game.GetInput().IsEnabledMouseAndKeyboardEvenOnServer())
{
bool isFavoriteTab = m_TabType == TabType.FAVORITE;
m_MouseKeyboardControlled = true;
m_WidgetNavFilters.Show(false);
m_WidgetNavServers.Show(false);
m_RefreshList.Show(true);
m_BtnShowDetails.Show(!m_DetailsRoot.IsVisible());
m_BtnShowFilters.Show(!isFavoriteTab);
m_Root.FindAnyWidget("spacer").Show(!isFavoriteTab);
m_Root.FindAnyWidget("spacer2").Show(true);
m_Root.FindAnyWidget("spacer5").Show(!isFavoriteTab);
m_Menu.GetLayoutRoot().FindAnyWidget("play_panel_root").Show(true);
m_Menu.GetLayoutRoot().FindAnyWidget("MouseAndKeyboardWarning").Show(true);
UpdatePageButtons();
}
break;
}
}
}
override void OnLoadServersAsyncConsole( GetServersResult result_list, EBiosError error, string response )
{
#ifdef DIAG_DEVELOPER
if (m_DummyServersEnabled)
return;
#endif
if ( error != EBiosError.OK )
{
m_LoadingText.SetText( string.Format("Error: %1", ErrorModuleHandler.GetClientMessage(ErrorCategory.BIOSError, error)) );
m_Menu.SetServersLoadingTab( TabType.NONE );
m_LoadingFinished = true;
SetFocusFilters();
return;
}
m_PagesCount = result_list.m_Pages;
if (m_PagesCount < 1)
m_PagesCount = 1;
m_TotalServersCount = result_list.m_NumServers;
#ifdef DIAG_DEVELOPER
if (m_DummyServersEnabled)
{
m_PagesCount = m_DummyServers.m_Pages;
if (m_PagesCount < 1)
m_PagesCount = 1;
m_TotalServersCount = m_DummyServers.m_NumServers;
int startIndex = (GetCurrentPage() - 1) * SERVERS_VISIBLE_COUNT;
int endIndex = startIndex + SERVERS_VISIBLE_COUNT;
int resultCount = m_DummyServers.m_Results.Count();
if (endIndex > resultCount)
{
endIndex = resultCount;
}
GetServersResultRowArray tempDummyServerResult = new GetServersResultRowArray();
for (int i = startIndex; i < endIndex; ++i)
{
tempDummyServerResult.Insert(m_DummyServers.m_Results[i]);
}
LoadEntries(GetCurrentPage(), tempDummyServerResult);
}
else
{
LoadEntries(result_list.m_Page, result_list.m_Results);
}
#else
LoadEntries(result_list.m_Page, result_list.m_Results);
#endif
OnLoadServersAsyncFinished();
UpdatePageButtons();
}
void OnLoadServersAsyncFinished()
{
string msg = "#servers_found: " + m_TotalLoadedServers;
if (m_TotalLoadedServers == 0)
{
msg = "#server_browser_tab_unable_to_get_server";
}
m_LoadingText.SetText(msg);
m_LoadingFinished = true;
m_Menu.SetServersLoadingTab(TabType.NONE);
if (m_ServerListEntiers && m_ServerListEntiers.Count() && m_SelectedPanel == SelectedPanel.BROWSER)
{
ServerBrowserEntry entry = m_ServerListEntiers[0];
if (entry)
{
entry.Darken(entry.GetRoot(), 0, 0);
entry.Select();
SetFocus(entry.GetRoot());
}
}
}
protected void LoadEntries( int cur_page_index , GetServersResultRowArray page_entries )
{
int index = 0;
ServerBrowserEntry entry;
m_TotalLoadedServers = m_TotalServersCount;
if ( !m_Menu || m_Menu.GetServersLoadingTab() != m_TabType )
{
return;
}
// only load servers if they correspond to current page
if (cur_page_index != m_CurrentPageNum)
{
return;
}
if ( m_PagesCount && page_entries )
{
foreach ( GetServersResultRow result : page_entries )
{
if ( PassFilter( result ) )
{
string ipPort = result.GetIpPort();
bool isFavorited = m_Menu.IsFavorited(ipPort);
entry = GetServerEntryByIndex( index );
entry.SetIsOnline(true);
entry.FillInfo( result );
entry.SetFavorite(isFavorited);
entry.UpdateEntry();
if (isFavorited && m_OnlineFavServers.Find(ipPort) == -1)
{
m_OnlineFavServers.Insert(ipPort);
}
m_EntryWidgets.Insert(ipPort, entry);
m_EntriesSorted[m_SortType].Insert( result );
index++;
}
if ( !m_Menu || m_Menu.GetServersLoadingTab() != m_TabType )
{
return;
}
}
}
LoadExtraEntries(index);
m_ServerList.Update();
}
override bool PassFilter(GetServersResultRow result)
{
if (m_Filters.m_PreviouslyPlayedFilter.IsSet())
{
bool is_visited = g_Game.IsVisited(result.m_HostIp, result.m_HostPort);
if (!is_visited && m_Filters.m_PreviouslyPlayedFilter.IsEnabled())
return false;
if (is_visited && !m_Filters.m_PreviouslyPlayedFilter.IsEnabled())
return false;
}
return super.PassFilter(result);
}
protected ServerBrowserEntry GetServerEntryByIndex( int index )
{
ServerBrowserEntry entry;
if ( index >= 0 )
{
if ( index < m_ServerListEntiers.Count() )
{
entry = m_ServerListEntiers[index];
}
else
{
entry = new ServerBrowserEntry( m_ServerList, index, this );
m_ServerListEntiers.Insert(entry);
}
}
else
{
return null;
}
entry.Show( true );
return entry;
}
override void OnFilterChanged()
{
m_IsFilterChanged = true;
}
bool CanRefreshServerList()
{
return m_LoadingFinished;
}
override void RefreshList()
{
#ifdef DIAG_DEVELOPER
if (m_DummyServersEnabled)
{
RefreshDummyList();
return;
}
#endif
for ( int i = 0; i < m_ServerListEntiers.Count(); i++ )
{
m_ServerListEntiers[i].Show(false);
}
for ( int j = 0; j < m_EntriesSorted.Count(); j++ )
{
array<ref GetServersResultRow> result_rows = m_EntriesSorted.GetElement(j);
if ( result_rows )
{
result_rows.Clear();
}
}
m_IsFilterChanged = false;
m_Filters.SaveFilters();
super.RefreshList();
m_ServerListScroller.VScrollToPos01( 0 );
m_LoadingText.SetText( "#dayz_game_loading" );
}
override void ResetFilters()
{
super.ResetFilters();
m_IsFilterChanged = false;
}
override void ApplyFilters()
{
if ( m_IsFilterChanged )
{
SetCurrentPage(1);
}
m_IsFilterChanged = false;
m_CurrentFilterInput = m_Filters.GetFilterOptionsConsoles();
RefreshList();
}
override void PressA()
{
}
override void PressX()
{
#ifdef DIAG_DEVELOPER
RefreshServerList(!m_DummyServersEnabled);
#else
RefreshServerList();
#endif
}
#ifdef DIAG_DEVELOPER
void RefreshServerList(bool forcePageChange = false)
#else
void RefreshServerList()
#endif
{
int currentTime = g_Game.GetTime();
#ifdef DIAG_DEVELOPER
if (!forcePageChange && m_TabType != TabType.FAVORITE && (currentTime - m_TimeLastServerRefresh) < 1000)
#else
if (m_TabType != TabType.FAVORITE && (currentTime - m_TimeLastServerRefresh) < 1000)
#endif
return;
m_TimeLastServerRefresh = currentTime;
#ifdef DIAG_DEVELOPER
if (m_IsFilterChanged || forcePageChange)
#else
if (m_IsFilterChanged)
#endif
{
SetCurrentPage(1);
}
m_OnlineFavServers.Clear();
RefreshList();
}
override void PressY()
{
SwitchRightAreaView();
}
override void PressThumbRight()
{
switch (m_SelectedPanel)
{
case SelectedPanel.BROWSER:
{
if (m_SelectedServer)
{
m_Menu.ServerListFocus(true, m_SelectedServer.ToggleFavorite());
}
break;
}
case SelectedPanel.FILTERS:
{
if (m_Filters)
{
m_Filters.ResetFilters();
}
break;
}
}
}
override void Left()
{
if (CanNavigatePages())
{
int currPage = GetCurrentPage();
m_PreviousPage = currPage;
if ( currPage > 1 )
{
SetCurrentPage( currPage - 1 );
UpdatePageButtons();
}
}
}
override void LeftHold()
{
if (CanNavigatePages())
{
int currentTime = g_Game.GetTime();
if ( (currentTime - m_TimeLastServerRefreshHoldButton) > 100 )
{
m_TimeLastServerRefreshHoldButton = currentTime;
Left();
}
}
}
override void LeftRelease()
{
if ( CanNavigatePages() && GetCurrentPage() != m_PreviousPage )
{
RefreshList();
}
}
override void Right()
{
if (CanNavigatePages())
{
int currPage = GetCurrentPage();
m_PreviousPage = currPage;
if (currPage < m_PagesCount)
{
SetCurrentPage(currPage + 1);
UpdatePageButtons();
}
}
}
override void RightHold()
{
if (CanNavigatePages())
{
int currentTime = g_Game.GetTime();
if ( (currentTime - m_TimeLastServerRefreshHoldButton) > 100 )
{
m_TimeLastServerRefreshHoldButton = currentTime;
Right();
}
}
}
override void RightRelease()
{
if (CanNavigatePages() && GetCurrentPage() != m_PreviousPage)
{
RefreshList();
}
}
override void PressSholderLeft()
{
OnPressShoulder();
}
override void PressSholderRight()
{
OnPressShoulder();
}
override void OnPressShoulder()
{
if (m_TabType == TabType.FAVORITE)
return;
switch (m_SelectedPanel)
{
case SelectedPanel.BROWSER:
{
if (m_TabType == TabType.FAVORITE)
{
SwitchToDetails();
}
else
{
SwitchToFilters();
}
break;
}
case SelectedPanel.DETAILS:
case SelectedPanel.FILTERS:
{
SetFocusServers();
break;
}
}
}
override void Focus()
{
if (m_TabType == TabType.FAVORITE)
{
SetFocusServers();
}
else
{
SwitchToFilters(true);
}
}
override void ShowServerDetails()
{
super.ShowServerDetails();
if (m_TabType != TabType.FAVORITE)
{
m_FilterRoot.Show(false);
m_BtnShowFilters.Show(m_MouseKeyboardControlled);
}
}
void SetFocusFilters()
{
SetEnableFilters(true);
SetEnableServers(false);
// if loaded servers is 0, then hide Top navigation menu <Left / Right>
if (!m_MouseKeyboardControlled)
{
m_WidgetNavFilters.Show(true);
m_WidgetNavServers.Show(false);
}
m_Filters.Focus();
m_IsFilterFocused = true;
m_IsDetailsFocused = false;
m_Menu.ShowAButton(true);
UpdatePageButtons();
m_SelectedPanel = SelectedPanel.FILTERS;
}
void SetFocusDetails()
{
SetEnableFilters(false);
SetEnableServers(false);
if (!m_MouseKeyboardControlled)
{
m_WidgetNavFilters.Show(true);
m_WidgetNavServers.Show(false);
}
m_Details.Focus();
m_IsDetailsFocused = true;
m_IsFilterFocused = false;
UpdatePageButtons();
m_SelectedPanel = SelectedPanel.DETAILS;
}
void SetFocusServers()
{
SetEnableServers(true);
SetEnableFilters(false);
if (!m_MouseKeyboardControlled)
{
m_WidgetNavFilters.Show(false);
if (m_TabType != TabType.FAVORITE)
{
m_WidgetNavServers.Show(true);
}
}
array<ref GetServersResultRow> entries = m_EntriesSorted[m_SortType];
if (entries && entries.Count() > 0)
{
string entryKey = entries.Get(0).GetIpPort();
ServerBrowserEntry sbEntry = m_EntryWidgets.Get(entryKey);
if (sbEntry)
{
sbEntry.Focus();
}
m_Menu.ShowAButton(true);
m_Menu.UpdateAButtonLabel("#str_serverbrowserroot_toolbar_bg_consoletoolbar_connect_connecttext0");
m_Menu.ShowThumbRButton(true);
}
else
{
SetFocus(null);
m_Menu.ShowAButton(false);
m_Menu.ShowThumbRButton(false);
}
m_IsFilterFocused = false;
m_IsDetailsFocused = false;
UpdatePageButtons();
m_SelectedPanel = SelectedPanel.BROWSER;
}
void SetEnableFilters(bool enable)
{
Widget w_filters = m_Root.FindAnyWidget("filters_content");
Widget w_content = m_Root.FindAnyWidget("server_list_scroller");
w_content.Enable( !enable );
if ( enable )
{
SetFocus( ButtonWidget.Cast(w_filters.FindWidget("sort_button")) );
}
}
void SetEnableServers(bool enable)
{
Widget w_filters = m_Root.FindAnyWidget("filters_content");
Widget w_content = m_Root.FindAnyWidget("server_list_scroller");
w_content.Enable( enable );
}
void UpdatePageButtons()
{
TextWidget wgtPageStat = TextWidget.Cast(m_Root.FindAnyWidget("servers_navigation_page_status"));
int pagesCount = GetPagesCount();
int currentPage = GetCurrentPage();
if (currentPage < 1)
currentPage = 1;
if (currentPage > pagesCount)
currentPage = pagesCount;
wgtPageStat.SetText(currentPage.ToString() + " / " + pagesCount.ToString());
bool canLeft = currentPage > 1;
bool canRight = currentPage < pagesCount;
bool showMouseKeyboardPaging = m_MouseKeyboardControlled && (pagesCount > 1);
bool showControllerPaging = !m_MouseKeyboardControlled && !m_IsFilterFocused && !m_IsDetailsFocused && (pagesCount > 1);
m_BtnPagePrev.Show(showMouseKeyboardPaging && canLeft);
m_BtnPageNext.Show(showMouseKeyboardPaging && canRight);
m_ButtonPageLeftImg.Show(showControllerPaging && canLeft);
m_ButtonPageRightImg.Show(showControllerPaging && canRight);
}
override bool OnClick(Widget w, int x, int y, int button)
{
super.OnClick(w, x, y, button);
int oldPage;
if (button == MouseState.LEFT)
{
if (w == m_ResetFilters)
{
ResetFilters();
}
else if (w == m_ApplyFilter)
{
ApplyFilters();
return true;
}
else if (w == m_RefreshList)
{
if (m_Loading && !m_LoadingFinished)
{
PressX();
}
else
{
RefreshList();
}
return true;
}
else if (w == m_BtnPagePrev)
{
oldPage = GetCurrentPage();
Left();
if (GetCurrentPage() != oldPage)
RefreshList();
return true;
}
else if (w == m_BtnPageNext)
{
oldPage = GetCurrentPage();
Right();
if (GetCurrentPage() != oldPage)
RefreshList();
return true;
}
else if (w == m_BtnShowDetails)
{
SwitchToDetails();
return true;
}
else if (w == m_BtnShowFilters)
{
SwitchToFilters();
return true;
}
}
return false;
}
//Coloring functions (Until WidgetStyles are useful)
override void ColorHighlight( Widget w )
{
if ( !w )
{
return;
}
w.SetColor( ARGB( 255, 200, 0, 0) );
}
override void ColorNormal( Widget w )
{
if ( !w )
{
return
}
if ( (w.GetFlags() & WidgetFlags.IGNOREPOINTER) == WidgetFlags.IGNOREPOINTER )
{
return;
}
if ( w.IsInherited( ButtonWidget ) )
{
ButtonWidget button = ButtonWidget.Cast( w );
button.SetTextColor( ARGB( 255, 255, 255, 255 ) );
}
else if ( !w.IsInherited( EditBoxWidget ) )
{
w.SetColor( ARGB( 0, 255, 255, 255 ) );
}
TextWidget text1 = TextWidget.Cast(w.FindAnyWidget( w.GetName() + "_text" ) );
TextWidget text2 = TextWidget.Cast(w.FindAnyWidget( w.GetName() + "_text_1" ) );
TextWidget text3 = TextWidget.Cast(w.FindAnyWidget( w.GetName() + "_label" ) );
ImageWidget image = ImageWidget.Cast( w.FindAnyWidget( w.GetName() + "_image" ) );
Widget option = Widget.Cast( w.FindAnyWidget( w.GetName() + "_option_wrapper" ) );
if ( text1 )
{
text1.SetColor( ARGB( 255, 255, 255, 255 ) );
}
if ( text2 )
{
text2.SetColor( ARGB( 255, 255, 255, 255 ) );
}
if ( text3 )
{
text3.SetColor( ARGB( 255, 255, 255, 255 ) );
w.SetAlpha(0);
}
if ( image )
{
image.SetColor( ARGB( 255, 255, 255, 255 ) );
}
if ( option )
{
option.SetColor( ARGB( 150, 255, 255, 255 ) );
}
}
override void ColorDisable( Widget w )
{
#ifdef PLATFORM_WINDOWS
SetFocus( null );
#endif
ButtonWidget button = ButtonWidget.Cast( w );
if ( button )
{
button.SetTextColor( ColorManager.COLOR_DISABLED_TEXT );
}
}
override void SwitchToDetails(bool focus = true)
{
ShowServerDetails();
if (focus)
SetFocusDetails();
m_Menu.UpdateYButtonLabel("#server_browser_tab_server #STR_server_browser_menu_server_filters");
m_RightAreaHeaderText.SetText("#STR_server_browser_menu_server_details");
}
override void SwitchToFilters(bool focus = true)
{
if (m_TabType == TabType.FAVORITE)
return;
m_FilterRoot.Show(true);
m_BtnShowDetails.Show(m_MouseKeyboardControlled);
m_DetailsRoot.Show(false);
if (focus)
SetFocusFilters();
m_Menu.UpdateYButtonLabel("#server_details_header");
m_RightAreaHeaderText.SetText("#STR_server_browser_menu_server_filters");
}
protected bool CanNavigatePages()
{
if (m_MouseKeyboardControlled)
{
return true;
}
return !m_IsFilterFocused && !m_IsDetailsFocused;
}
protected int GetPagesCount()
{
if (m_PagesCount < 1)
{
return 1;
}
return m_PagesCount;
}
#ifdef DIAG_DEVELOPER
protected void RefreshDummyList()
{
for (int i = 0; i < m_ServerListEntiers.Count(); ++i)
{
m_ServerListEntiers[i].Show(false);
}
for (int j = 0; j < m_EntriesSorted.Count(); ++j)
{
array<ref GetServersResultRow> resultRows = m_EntriesSorted.GetElement(j);
if (resultRows)
{
resultRows.Clear();
}
}
m_EntryWidgets.Clear();
m_OnlineFavServers.Clear();
m_IsFilterChanged = false;
m_Filters.SaveFilters();
m_Menu.SetServersLoadingTab(m_TabType);
m_LoadingFinished = false;
m_Initialized = true;
m_BegunLoading = false;
m_LastLoadedPage = 0;
m_TotalPages = -1;
m_TotalServers = 0;
m_TotalLoadedServers = 0;
m_CurrentLoadedPage = 0;
m_Loading = true;
m_Menu.DeselectCurrentServer();
m_CurrentFilterInput = m_Filters.GetFilterOptionsConsoles();
m_CurrentFilterInput.m_Page = GetCurrentPage();
m_CurrentFilterInput.m_SortBy = GetSortOption();
m_CurrentFilterInput.m_SortOrder = m_SortOrder;
m_ServerListScroller.VScrollToPos01(0);
m_LoadingText.SetText("#dayz_game_loading");
GetServersResultRowArray filteredResults = new GetServersResultRowArray();
if (m_DummyServers && m_DummyServers.m_Results)
{
for (int k = 0; k < m_DummyServers.m_Results.Count(); ++k)
{
GetServersResultRow row = m_DummyServers.m_Results[k];
if (PassLocalFilters(row))
{
filteredResults.Insert(row);
}
}
}
m_TotalServersCount = filteredResults.Count();
m_PagesCount = (m_TotalServersCount + SERVERS_VISIBLE_COUNT - 1) / SERVERS_VISIBLE_COUNT;
if (m_PagesCount < 1)
{
m_PagesCount = 1;
}
int safePage = GetCurrentPage();
if (safePage < 1)
{
safePage = 1;
}
if (safePage > m_PagesCount)
{
safePage = m_PagesCount;
}
SetCurrentPage(safePage);
int startIndex = (safePage - 1) * SERVERS_VISIBLE_COUNT;
int endIndex = Math.Min(startIndex + SERVERS_VISIBLE_COUNT, filteredResults.Count());
GetServersResultRowArray pageResults = new GetServersResultRowArray();
for (int i2 = startIndex; i2 < endIndex; ++i2)
{
pageResults.Insert(filteredResults[i2]);
}
LoadEntries(safePage, pageResults);
OnLoadServersAsyncFinished();
UpdatePageButtons();
}
override void OnDummyServersEnabledChanged()
{
super.OnDummyServersEnabledChanged();
SetCurrentPage(1);
m_PreviousPage = 1;
m_OnlineFavServers.Clear();
RefreshServerList(!m_DummyServersEnabled);
}
override int GetServersVisibleCount()
{
return SERVERS_VISIBLE_COUNT;
}
#endif
}