DayZ 1.29
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено

◆ LoadExtraEntries()

override void ServerBrowserTabConsolePages::LoadExtraEntries ( int index)
inlineprotected

См. определение в файле ServerBrowserFavoritesTabConsolePages.c строка 53

54 {
55 if ( !m_Menu || m_Menu.GetServersLoadingTab() != m_TabType )
56 {
57 return;
58 }
59
60 // m_PagesCount for FAVORITES tab is determined by total number of favorited servers
61 TStringArray favIds = m_Menu.GetFavoritedServerIds();
62 m_PagesCount = Math.Ceil((float)favIds.Count() / SERVER_BROWSER_PAGE_SIZE);
63
64 // offlineFavIds will always have same order, even across pages,
65 // to ensure we display only fav servers that HAVEN'T been displayed yet
66 TStringArray offlineFavIds = new TStringArray();
67 offlineFavIds.Reserve(favIds.Count() - m_OnlineFavServers.Count());
68 foreach (string ipPort : favIds)
69 {
70 if (m_OnlineFavServers.Find(ipPort) == -1)
71 {
72 offlineFavIds.Insert(ipPort);
73 }
74 }
75
76 // appending offline servers to server list
77 int totalServersAlreadyShown = (GetCurrentPage() - 1) * SERVER_BROWSER_PAGE_SIZE + index;
78 int startingIndex = totalServersAlreadyShown - m_OnlineFavServers.Count();
79 for (int i = startingIndex; i < offlineFavIds.Count(); ++i)
80 {
81 string favServerId = offlineFavIds[i];
82
83 // only append server if there is a free entry left on the page
84 if (index >= SERVER_BROWSER_PAGE_SIZE)
85 {
86 break;
87 }
88
89 if (m_OnlineFavServers.Find(favServerId) > -1)
90 {
91 continue;
92 }
93
94 array<string> parts = new array<string>;
95 favServerId.Split(":", parts);
96
97 // ensure server id has correct format
98 if (parts.Count() != 2)
99 {
100 continue;
101 }
102
103 GetServersResultRow offlineRow = new GetServersResultRow();
104 offlineRow.m_Name = favServerId;
105 offlineRow.m_Id = favServerId;
106 offlineRow.m_HostIp = parts[0];
107 offlineRow.m_HostPort = parts[1].ToInt();
108 offlineRow.m_SteamQueryPort = offlineRow.m_HostPort;
109 offlineRow.m_Favorite = true;
110
111 ServerBrowserEntry entry = GetServerEntryByIndex( index );
112 entry.SetIsOnline(false);
113 entry.FillInfo(offlineRow);
114 entry.UpdateEntry();
115
116 m_EntryWidgets.Insert(favServerId, entry);
117 m_EntriesSorted[m_SortType].Insert(offlineRow);
118
119 index++;
120 }
121 }
const int SERVER_BROWSER_PAGE_SIZE
Определения ServerBrowserMenuNew.c:6
ref map< ESortType, ref array< ref GetServersResultRow > > m_EntriesSorted
Определения ServerBrowserTab.c:75
TabType m_TabType
Определения ServerBrowserTab.c:40
ref map< string, ref ServerBrowserEntry > m_EntryWidgets
Определения ServerBrowserTab.c:32
ServerBrowserMenuNew m_Menu
Определения ServerBrowserTab.c:37
ESortType m_SortType
Определения ServerBrowserTab.c:41
int GetCurrentPage()
Определения ServerBrowserTab.c:426
ref set< string > m_OnlineFavServers
Определения ServerBrowserTab.c:77
int m_SteamQueryPort
Определения BiosLobbyService.c:217
string m_Name
Определения BiosLobbyService.c:173
string m_Id
Определения BiosLobbyService.c:171
bool m_Favorite
Определения BiosLobbyService.c:219
int m_HostPort
Определения BiosLobbyService.c:176
string m_HostIp
Определения BiosLobbyService.c:175
array< string > TStringArray
Определения EnScript.c:712
void Split(string sample, out array< string > output)
Splits string into array of strings separated by 'sample'.
Определения EnString.c:396

Перекрестные ссылки Math::Ceil(), GetCurrentPage(), m_EntriesSorted, m_EntryWidgets, GetServersResultRow::m_Favorite, GetServersResultRow::m_HostIp, GetServersResultRow::m_HostPort, GetServersResultRow::m_Id, m_Menu, GetServersResultRow::m_Name, m_OnlineFavServers, m_SortType, GetServersResultRow::m_SteamQueryPort, m_TabType, SERVER_BROWSER_PAGE_SIZE и string::Split().

Используется в ServerBrowserTab::LoadEntries().