serverbrowserfavoritestabpc.c 3.1 KB

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