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

◆ LoadExtraEntries()

override void ServerBrowserTabConsolePages::LoadExtraEntries ( int index)
inlineprotected

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

44 {
45 if ( !m_Menu || m_Menu.GetServersLoadingTab() != m_TabType )
46 {
47 return;
48 }
49
50 // m_PagesCount for FAVORITES tab is determined by total number of favorited servers
51 TStringArray favIds = m_Menu.GetFavoritedServerIds();
52 m_PagesCount = Math.Ceil((float)favIds.Count() / SERVER_BROWSER_PAGE_SIZE);
53
54 // offlineFavIds will always have same order, even across pages,
55 // to ensure we display only fav servers that HAVEN'T been displayed yet
56 TStringArray offlineFavIds = new TStringArray();
57 offlineFavIds.Reserve(favIds.Count() - m_OnlineFavServers.Count());
58 foreach (string ipPort : favIds)
59 {
60 if (m_OnlineFavServers.Find(ipPort) == -1)
61 {
62 offlineFavIds.Insert(ipPort);
63 }
64 }
65
66 // appending offline servers to server list
67 int totalServersAlreadyShown = (GetCurrentPage() - 1) * SERVER_BROWSER_PAGE_SIZE + index;
68 int startingIndex = totalServersAlreadyShown - m_OnlineFavServers.Count();
69 for (int i = startingIndex; i < offlineFavIds.Count(); ++i)
70 {
71 string favServerId = offlineFavIds[i];
72
73 // only append server if there is a free entry left on the page
74 if (index >= SERVER_BROWSER_PAGE_SIZE)
75 {
76 break;
77 }
78
79 if (m_OnlineFavServers.Find(favServerId) > -1)
80 {
81 continue;
82 }
83
84 array<string> parts = new array<string>;
85 favServerId.Split(":", parts);
86
87 // ensure server id has correct format
88 if (parts.Count() != 2)
89 {
90 continue;
91 }
92
93 GetServersResultRow offlineRow = new GetServersResultRow();
94 offlineRow.m_Name = favServerId;
95 offlineRow.m_Id = favServerId;
96 offlineRow.m_HostIp = parts[0];
97 offlineRow.m_HostPort = parts[1].ToInt();
98 offlineRow.m_SteamQueryPort = offlineRow.m_HostPort;
99 offlineRow.m_Favorite = true;
100
101 ServerBrowserEntry entry = GetServerEntryByIndex( index );
102 entry.SetIsOnline(false);
103 entry.FillInfo(offlineRow);
104 entry.UpdateEntry();
105
106 m_EntryWidgets.Insert(favServerId, entry);
107 m_EntriesSorted[m_SortType].Insert(offlineRow);
108
109 index++;
110 }
111 }
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:416
ref set< string > m_OnlineFavServers
Определения ServerBrowserTab.c:77
int m_SteamQueryPort
Определения BiosLobbyService.c:191
string m_Name
Определения BiosLobbyService.c:147
string m_Id
Определения BiosLobbyService.c:145
bool m_Favorite
Определения BiosLobbyService.c:193
int m_HostPort
Определения BiosLobbyService.c:150
string m_HostIp
Определения BiosLobbyService.c:149
array< string > TStringArray
Определения EnScript.c:685
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().