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