DayZ 1.27
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено
ServerBrowserFavoritesTabConsolePages.c
См. документацию.
1class ServerBrowserFavoritesTabConsolePages extends ServerBrowserTabConsolePages
2{
3 protected bool m_IsFavoriteChanged;
4
5 protected override void Construct(Widget parent, ServerBrowserMenuNew menu, TabType type)
6 {
7 super.Construct(parent, menu, type);
8
9 // disabling filter section
10 m_ResetFilters.Show(false);
11 m_Root.FindAnyWidget("filters_content").Show(false);
12 m_Root.FindAnyWidget("show_details_button").Show(false);
13 m_Root.FindAnyWidget("spacer").Show(false);
14 m_Root.FindAnyWidget("spacer1").Show(false);
15 m_Root.FindAnyWidget("spacer5").Show(false);
16 m_Root.FindAnyWidget("server_list_root_nav_wrapper").Show(false);
17 m_RefreshList.Show(m_MouseKeyboardControlled);
18
19 SwitchToDetails(false);
20
21 m_Menu.ShowYButton(false);
22 }
23
25 {
26 // m_TotalLoadedServers for FAVORITES tab is determined by total number of favorited servers
27 TStringArray favIds = m_Menu.GetFavoritedServerIds();
28 m_TotalLoadedServers = favIds.Count();
29 super.OnLoadServersAsyncFinished();
30 SetFocusServers();
31 }
32
33 protected override void LoadEntries(int cur_page_index , GetServersResultRowArray page_entries)
34 {
35 if (cur_page_index == 1)
36 {
37 m_OnlineFavServers.Clear();
38 }
39
40 super.LoadEntries(cur_page_index, page_entries);
41 }
42
43 protected override void LoadExtraEntries(int index)
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
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 }
112
113 override void RefreshList()
114 {
115 super.RefreshList();
116#ifdef PLATFORM_WINDOWS
117 m_CurrentFilterInput.SetFavorited( true );
118#endif
121 }
122
123 override void RefreshServerList()
124 {
125 super.RefreshServerList();
126
128 {
130 m_IsFavoriteChanged = false;
131 }
132 }
133
134 void SetFavoriteChanged(bool state)
135 {
136 m_IsFavoriteChanged = state;
137 }
138
139 override bool PassFilter(GetServersResultRow result)
140 {
141 if (m_TabType == TabType.FAVORITE)
142 {
143 if (!m_Menu.IsFavorited(result.GetIpPort()))
144 {
145 return false;
146 }
147 }
148
149 return super.PassFilter(result);
150 }
151
152 override void PressThumbRight()
153 {
154 switch (m_SelectedPanel)
155 {
156 // filters are disabled for console FAVORITES tab, so do nothing
157 case SelectedPanel.FILTERS:
158 {
159 break;
160 }
161 default:
162 {
163 super.PressThumbRight();
164 break;
165 }
166 }
167 }
168
169 override void PressX()
170 {
171 if ( (GetGame().GetTime() - m_TimeLastServerRefresh) > 1000 )
172 {
174 super.PressX();
175 }
176 }
177
178 override void SetFocusFilters()
179 {
180 super.SetFocusFilters();
181
182 UpdatePageButtons();
183 }
184}
array< ref GetServersResultRow > GetServersResultRowArray
Определения BiosLobbyService.c:305
float GetTime()
Определения NotificationSystem.c:35
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 GetServersInput m_CurrentFilterInput
Определения ServerBrowserTab.c:57
ref map< string, ref ServerBrowserEntry > m_EntryWidgets
Определения ServerBrowserTab.c:32
void SwitchToDetails(bool focus=true)
TabType
Определения ServerBrowserTab.c:2
int m_TotalLoadedServers
Определения ServerBrowserTab.c:49
ServerBrowserMenuNew m_Menu
Определения ServerBrowserTab.c:37
SelectedPanel m_SelectedPanel
Определения ServerBrowserTab.c:44
ESortType m_SortType
Определения ServerBrowserTab.c:41
void AddFavoritesToFilter(GetServersInput input)
Определения ServerBrowserTab.c:433
int GetCurrentPage()
Определения ServerBrowserTab.c:416
Widget m_ResetFilters
Определения ServerBrowserTab.c:61
Widget m_RefreshList
Определения ServerBrowserTab.c:60
ref set< string > m_OnlineFavServers
Определения ServerBrowserTab.c:77
void SetCurrentPage(int page_num)
Определения ServerBrowserTab.c:411
Widget m_Root
Определения SizeToChild.c:91
string GetIpPort()
Определения BiosLobbyService.c:195
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
GetServersResultRow the output structure of the GetServers operation that represents one game server.
Определения BiosLobbyService.c:144
Определения EnMath.c:7
static void LoadServers(notnull GetServersInput inputValues)
Определения OnlineServices.c:96
Определения OnlineServices.c:2
override void Construct(Widget parent, ServerBrowserMenuNew menu, TabType type)
override bool PassFilter(GetServersResultRow result)
override void LoadExtraEntries(int index)
override void LoadEntries(int cur_page_index, GetServersResultRowArray page_entries)
Определения EnWidgets.c:190
Result for an object found in CGame.IsBoxCollidingGeometryProxy.
proto native CGame GetGame()
array< string > TStringArray
Определения EnScript.c:685
static proto float Ceil(float f)
Returns ceil of value.
void Split(string sample, out array< string > output)
Splits string into array of strings separated by 'sample'.
Определения EnString.c:396