123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- class ServerBrowserFavoritesTabPc extends ServerBrowserTabPc
- {
- // value = ip, name, connection port, query port
- private ref array<ref CachedServerInfo> m_CachedFavoriteServerInfo;
-
- protected override void Construct(Widget parent, ServerBrowserMenuNew menu, TabType type)
- {
- m_CachedFavoriteServerInfo = new array<ref CachedServerInfo>();
-
- super.Construct(parent, menu, type);
- }
- protected override void LoadExtraEntries(int index)
- {
- array<ref Param2<string, CachedServerInfo>> relevantCachedInfo = new array<ref Param2<string, CachedServerInfo>>();
- foreach (CachedServerInfo cachedInfo : m_CachedFavoriteServerInfo)
- {
- string serverId = GetConnEndPoint(cachedInfo);
-
- // ensure the cached server is still favorited
- if (!m_Menu.IsFavorited(GetQueryEndPoint(cachedInfo)))
- {
- continue;
- }
-
- if (m_OnlineFavServers.Find(serverId) > -1)
- {
- continue;
- }
-
- relevantCachedInfo.Insert(new Param2<string, CachedServerInfo>(serverId, cachedInfo));
- }
-
- // adding FAVORITED, OFFLINE servers to favorites tab
- int totalServersAlreadyShown = m_PageIndex * SERVERS_VISIBLE_COUNT + index;
- int startingIndex = totalServersAlreadyShown - m_TotalLoadedServers;
- m_TotalLoadedServers += relevantCachedInfo.Count();
- for (int i = startingIndex; i < relevantCachedInfo.Count(); ++i)
- {
- if (index >= SERVERS_VISIBLE_COUNT)
- {
- break;
- }
-
- Param2<string, CachedServerInfo> relevantEntry = relevantCachedInfo[i];
-
- cachedInfo = relevantEntry.param2;
- string ip = cachedInfo.param1;
- string cachedName = cachedInfo.param2;
- int connPort = cachedInfo.param3;
- int queryPort = cachedInfo.param4;
- // do NOT insert offlineRow into m_EntriesSorted[m_SortType]!!
- // we assume that rows already in m_EntriesSorted[m_SortType] are ONLINE,
- // if we add offline info to m_EntriesSorted[m_SortType] then we cannot differentiate
- // between online and offline servers
- GetServersResultRow offlineRow = new GetServersResultRow();
- offlineRow.m_Id = relevantEntry.param1;
- offlineRow.m_Name = cachedName;
- offlineRow.m_HostIp = ip;
- offlineRow.m_SteamQueryPort = queryPort;
- offlineRow.m_HostPort = connPort;
- offlineRow.m_Favorite = true;
- offlineRow.m_IsSelected = (offlineRow.m_Id == m_CurrentSelectedServer);
-
- ServerBrowserEntry entry = GetServerEntryByIndex(index, offlineRow.m_Id);
- entry.Show(true);
- entry.SetIsOnline(false);
- entry.FillInfo(offlineRow);
- entry.UpdateEntry();
-
- index++;
- }
- }
-
- override void RefreshList()
- {
- OnlineServices.GetCachedFavServerInfo(m_CachedFavoriteServerInfo);
-
- m_OnlineFavServers.Clear();
- super.RefreshList();
-
- m_CurrentFilterInput.SetFavorited( true );
- AddFavoritesToFilter(m_CurrentFilterInput);
- OnlineServices.LoadServers(m_CurrentFilterInput);
- }
- private string GetConnEndPoint(CachedServerInfo cachedInfo)
- {
- string ip = cachedInfo.param1;
- int connPort = cachedInfo.param3;
- return ip + ":" + connPort;
- }
-
- private string GetQueryEndPoint(CachedServerInfo cachedInfo)
- {
- string ip = cachedInfo.param1;
- int queryPort = cachedInfo.param4;
- return ip + ":" + queryPort;
- }
- }
|