Dayz Explorer 1.28.160049
Loading...
Searching...
No Matches
serverbrowserfavoritestabpc.c
Go to the documentation of this file.
1class ServerBrowserFavoritesTabPc extends ServerBrowserTabPc
2{
3 // value = ip, name, connection port, query port
4 private ref array<ref CachedServerInfo> m_CachedFavoriteServerInfo;
5
6 protected override void Construct(Widget parent, ServerBrowserMenuNew menu, TabType type)
7 {
8 m_CachedFavoriteServerInfo = new array<ref CachedServerInfo>();
9
10 super.Construct(parent, menu, type);
11 }
12
13 protected override void LoadExtraEntries(int index)
14 {
16 foreach (CachedServerInfo cachedInfo : m_CachedFavoriteServerInfo)
17 {
18 string serverId = GetConnEndPoint(cachedInfo);
19
20 // ensure the cached server is still favorited
21 if (!m_Menu.IsFavorited(GetQueryEndPoint(cachedInfo)))
22 {
23 continue;
24 }
25
26 if (m_OnlineFavServers.Find(serverId) > -1)
27 {
28 continue;
29 }
30
31 relevantCachedInfo.Insert(new Param2<string, CachedServerInfo>(serverId, cachedInfo));
32 }
33
34 // adding FAVORITED, OFFLINE servers to favorites tab
35 int totalServersAlreadyShown = m_PageIndex * SERVERS_VISIBLE_COUNT + index;
36 int startingIndex = totalServersAlreadyShown - m_TotalLoadedServers;
37 m_TotalLoadedServers += relevantCachedInfo.Count();
38 for (int i = startingIndex; i < relevantCachedInfo.Count(); ++i)
39 {
40 if (index >= SERVERS_VISIBLE_COUNT)
41 {
42 break;
43 }
44
45 Param2<string, CachedServerInfo> relevantEntry = relevantCachedInfo[i];
46
47 cachedInfo = relevantEntry.param2;
48 string ip = cachedInfo.param1;
49 string cachedName = cachedInfo.param2;
50 int connPort = cachedInfo.param3;
51 int queryPort = cachedInfo.param4;
52
53 // do NOT insert offlineRow into m_EntriesSorted[m_SortType]!!
54 // we assume that rows already in m_EntriesSorted[m_SortType] are ONLINE,
55 // if we add offline info to m_EntriesSorted[m_SortType] then we cannot differentiate
56 // between online and offline servers
58 offlineRow.m_Id = relevantEntry.param1;
59 offlineRow.m_Name = cachedName;
60 offlineRow.m_HostIp = ip;
61 offlineRow.m_SteamQueryPort = queryPort;
62 offlineRow.m_HostPort = connPort;
63 offlineRow.m_Favorite = true;
64 offlineRow.m_IsSelected = (offlineRow.m_Id == m_CurrentSelectedServer);
65
66 ServerBrowserEntry entry = GetServerEntryByIndex(index, offlineRow.m_Id);
67 entry.Show(true);
68 entry.SetIsOnline(false);
69 entry.FillInfo(offlineRow);
70 entry.UpdateEntry();
71
72 index++;
73 }
74 }
75
76 override void RefreshList()
77 {
78 OnlineServices.GetCachedFavServerInfo(m_CachedFavoriteServerInfo);
79
80 m_OnlineFavServers.Clear();
81 super.RefreshList();
82
83 m_CurrentFilterInput.SetFavorited( true );
86 }
87
88 private string GetConnEndPoint(CachedServerInfo cachedInfo)
89 {
90 string ip = cachedInfo.param1;
91 int connPort = cachedInfo.param3;
92 return ip + ":" + connPort;
93 }
94
95 private string GetQueryEndPoint(CachedServerInfo cachedInfo)
96 {
97 string ip = cachedInfo.param1;
98 int queryPort = cachedInfo.param4;
99 return ip + ":" + queryPort;
100 }
101}
int m_PageIndex
Param4< string, string, int, int > CachedServerInfo
GetServersResultRow the output structure of the GetServers operation that represents one game server.
static void LoadServers(notnull GetServersInput inputValues)
static void GetCachedFavServerInfo(array< ref CachedServerInfo > favServersInfoCache)
override void LoadExtraEntries(int index)
override void Construct(Widget parent, ServerBrowserMenuNew menu, TabType type)
Result for an object found in CGame.IsBoxCollidingGeometryProxy.
ref GetServersInput m_CurrentFilterInput
TabType
int m_TotalLoadedServers
string m_CurrentSelectedServer
ServerBrowserMenuNew m_Menu
void AddFavoritesToFilter(GetServersInput input)
ref set< string > m_OnlineFavServers