123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460 |
- class ServerBrowserTabConsole extends ServerBrowserTab
- {
- private bool m_IsFilterChanged;
- private bool m_IsFilterFocused;
- private bool m_IsDetailsFocused;
-
- private Widget m_WidgetNavFilters;
- private Widget m_WidgetNavServers;
-
- protected override void Construct( Widget parent, ServerBrowserMenuNew menu, TabType type )
- {
- m_Root = GetGame().GetWorkspace().CreateWidgets( "gui/layouts/new_ui/server_browser/xbox/server_browser_tab.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_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_ApplyFilter = m_Root.FindAnyWidget( "apply_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_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" );
-
- ShowHideConsoleWidgets();
-
- m_Filters = new ServerBrowserFilterContainer(m_Root.FindAnyWidget("filters_content"), this);
-
- SetSort(ESortType.HOST, ESortOrder.ASCENDING);
-
- m_Details = new ServerBrowserDetailsContainer(m_Root.FindAnyWidget("details_content"), this);
-
- m_Root.SetHandler(this);
-
- SetFocusServers();
- }
-
- void ShowHideConsoleWidgets()
- {
- #ifdef PLATFORM_PS4
- bool is_xbox = false;
- #else
- bool is_xbox = true;
- #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 );
- }
-
- override void OnLoadServersAsyncConsole( GetServersResult result_list, EBiosError error, string response )
- {
- //Print("m_NumServers: "+ result_list.m_NumServers +" m_Pages: "+ result_list.m_Pages + " m_Page: "+ result_list.m_Page);
- //string smg = "m_NumServers: "+ result_list.m_NumServers +" m_Pages: "+ result_list.m_Pages + " m_Page: "+ result_list.m_Page +" response: "+ response +" error: "+ error;
- //m_LoadingText.SetText( smg );
-
- if ( error != EBiosError.OK || !result_list )
- {
- m_LoadingText.SetText( string.Format("Error: %1", ErrorModuleHandler.GetClientMessage(ErrorCategory.BIOSError, error)) );
- return;
- }
-
- if ( result_list.m_Page == 1 )
- {
- m_TotalPages = result_list.m_Pages;
- m_TotalServers = result_list.m_NumServers;
-
- if ( m_Menu.GetServersLoadingTab() != m_TabType || !result_list || ( !result_list.m_Results || result_list.m_Results.Count() == 0 ) )
- {
- m_Menu.SetServersLoadingTab( TabType.NONE );
- m_LoadingText.SetText("#server_browser_tab_unable_to_get_server #server_browser_tab_no_servers_with_filter");
- return;
- }
- }
-
- m_LastLoadedPage = result_list.m_Page;
-
- if ( m_TotalPages > 0 )
- {
- LoadEntries( result_list.m_Page, result_list.m_Results );
- }
-
- if ( m_TotalPages > m_LastLoadedPage )
- {
- GetNextPage();
- return;
- }
-
- if ( result_list.m_Page == result_list.m_Pages )
- {
- OnLoadServersAsyncFinished();
- }
- }
-
- 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;
- }
-
- void LoadEntries( int cur_page_index , GetServersResultRowArray page )
- {
- if ( !m_Menu || m_Menu.GetServersLoadingTab() != m_TabType )
- {
- return;
- }
-
- int index = cur_page_index * SERVER_BROWSER_PAGE_SIZE;
- GetServersResultRowArray page_entries = page;
- if ( page_entries )
- {
- foreach ( GetServersResultRow result : page_entries )
- {
- m_TotalLoadedServers++;
-
- if ( PassFilter( result ) )
- {
- ServerBrowserEntry entry = new ServerBrowserEntry( m_ServerList, index, this );
- string ipPort = result.GetIpPort();
- entry.FillInfo( result );
- entry.SetFavorite( m_Menu.IsFavorited(ipPort));
- entry.UpdateEntry();
-
- m_EntryWidgets.Insert(ipPort, entry);
- index++;
- m_EntriesSorted[m_SortType].Insert( result );
-
- if ( m_EntryWidgets.Count() > 0 )
- {
- SetFocusServers();
- }
- }
-
- if ( !m_Menu || m_Menu.GetServersLoadingTab() != m_TabType )
- return;
- }
-
- m_ServerList.Update();
- }
- /*
- if ( cur_page_index == 1 && m_EntryWidgets.Count() > 0 )
- {
- SetFocusServers();
- }
- else
- {
- m_LoadingText.SetText( "#server_browser_unable_with_filter" );
- SetFocusFilters();
- }
- */
-
- if ( m_EntriesSorted[m_SortType].Count() > 0 )
- {
- /*
-
- */
- }
- else
- {
- //m_LoadingText.SetText( "#server_browser_unable_with_filter" );
-
- }
-
- if ( !m_Menu )
- return;
-
- if ( m_LastLoadedPage == m_TotalPages )
- {
- //m_LoadingText.SetText( "#server_browser_tab_loaded" + " " + m_EntryWidgets.Count() + "/" + m_EntryWidgets.Count() + " " + "#server_browser_servers_desc" );
- m_Menu.SetServersLoadingTab( TabType.NONE );
- }
- }
-
- override void OnFilterFocus( Widget w )
- {
- super.OnFilterFocus( w );
-
- //ColorHighlight( w );
- }
-
- override void OnFilterChanged()
- {
- m_IsFilterChanged = true;
- }
-
- override void RefreshList()
- {
- for ( int i = 0; i < m_EntriesSorted.Count(); i++ )
- {
- m_EntriesSorted.GetElement(i).Clear();
- }
-
- m_Filters.SaveFilters();
-
- super.RefreshList();
-
- m_ServerListScroller.VScrollToPos01( 0 );
-
- m_LoadingText.SetText( "#dayz_game_loading" );
-
- //SetFocusFilters();
- //UpdateStatusBar();
- }
-
- override void ResetFilters()
- {
- super.ResetFilters();
-
- m_IsFilterChanged = false;
- }
-
- override void ApplyFilters()
- {
- m_IsFilterChanged = false;
- m_CurrentFilterInput = m_Filters.GetFilterOptionsConsoles();
- RefreshList();
- }
-
- override void OnFilterFocusLost( Widget w )
- {
- super.OnFilterFocusLost( w );
- }
-
- override void PressA()
- {
-
- }
-
- override void PressX()
- {
- RefreshList();
- }
-
- override void PressY()
- {
- /*
- if( m_Menu.GetServersLoadingTab() != TabType.NONE )
- {
- return;
- }
- */
- 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 PressSholderLeft()
- {
- OnPressShoulder();
- }
-
- override void PressSholderRight()
- {
- OnPressShoulder();
- }
-
- override void OnPressShoulder()
- {
- switch (m_SelectedPanel)
- {
- case SelectedPanel.FILTERS:
- case SelectedPanel.DETAILS:
- {
- SetFocusServers();
- break;
- }
- case SelectedPanel.BROWSER:
- {
- SwitchToFilters();
- break;
- }
- }
- }
-
- void SetFocusFilters()
- {
- SetEnableFilters(true);
- SetEnableServers(false);
-
- // if loaded servers is 0, then hide Top navigation menu <Left / Right>
- m_WidgetNavFilters.Show((m_EntryWidgets.Count() > 0));
- m_WidgetNavServers.Show(false);
-
- m_Filters.Focus();
- m_IsFilterFocused = true;
- }
-
- void SetFocusDetails()
- {
- SetEnableFilters(false);
- SetEnableServers(false);
-
- m_Details.Focus();
- m_IsDetailsFocused = true;
- m_IsFilterFocused = false;
- }
-
- override void Focus()
- {
- if ( m_EntryWidgets.Contains( m_CurrentSelectedServer ) )
- {
- m_EntryWidgets.Get(m_CurrentSelectedServer).Focus();
- ScrollToEntry(m_EntryWidgets.Get(m_CurrentSelectedServer));
- }
- SetFocusServers();
- }
-
- void SetFocusServers()
- {
- SetEnableServers(true);
- SetEnableFilters(false);
-
- m_WidgetNavFilters.Show(false);
- m_WidgetNavServers.Show(true);
-
- array<ref GetServersResultRow> entries = m_EntriesSorted[m_SortType];
- if (entries.Count() > 0)
- {
- m_EntryWidgets.Get(entries.Get(0).GetIpPort()).Focus();
- m_IsFilterFocused = false;
- }
- /*else
- {
- SetFocusFilters();
- }*/
- }
-
- void SetEnableFilters(bool enable)
- {
- Widget w_filters = m_Root.FindAnyWidget("filters_content");
- Widget w_content = m_Root.FindAnyWidget("server_list_scroller");
- w_filters.Enable( enable );
- w_content.Enable( !enable );
- }
-
- void SetEnableServers(bool enable)
- {
- Widget w_filters = m_Root.FindAnyWidget("filters_content");
- Widget w_content = m_Root.FindAnyWidget("server_list_scroller");
- w_filters.Enable( !enable );
- w_content.Enable( enable );
- }
-
- //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 ) );
- }
-
- 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 );
- }
- }
- }
|