DayZ 1.30
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#ifdef DIAG_DEVELOPER
124 override void RefreshServerList(bool forcePageChange = false)
125#else
126 override void RefreshServerList()
127#endif
128 {
129 super.RefreshServerList();
130
131 #ifdef DIAG_DEVELOPER
132 if (m_IsFavoriteChanged || forcePageChange)
133 #else
135 #endif
136 {
138 m_IsFavoriteChanged = false;
139 }
140 }
141
142 void SetFavoriteChanged(bool state)
143 {
144 m_IsFavoriteChanged = state;
145 }
146
147 override bool PassFilter(GetServersResultRow result)
148 {
149 if (m_TabType == TabType.FAVORITE)
150 {
151 if (!m_Menu.IsFavorited(result.GetIpPort()))
152 {
153 return false;
154 }
155 }
156
157 return super.PassFilter(result);
158 }
159
160 override void PressThumbRight()
161 {
162 switch (m_SelectedPanel)
163 {
164 // filters are disabled for console FAVORITES tab, so do nothing
165 case SelectedPanel.FILTERS:
166 {
167 break;
168 }
169 default:
170 {
171 super.PressThumbRight();
172 break;
173 }
174 }
175 }
176
177 override void PressX()
178 {
179 if ( (g_Game.GetTime() - m_TimeLastServerRefresh) > 1000 )
180 {
182 super.PressX();
183 }
184 }
185
186 override void SetFocusFilters()
187 {
188 super.SetFocusFilters();
189
190 UpdatePageButtons();
191 }
192}
array< ref GetServersResultRow > GetServersResultRowArray
Определения BiosLobbyService.c:332
DayZGame g_Game
Определения DayZGame.c:4074
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:437
int GetCurrentPage()
Определения ServerBrowserTab.c:420
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:415
Widget m_Root
Определения SizeToChild.c:91
string GetIpPort()
Определения BiosLobbyService.c:222
int m_SteamQueryPort
Определения BiosLobbyService.c:218
string m_Name
Определения BiosLobbyService.c:174
string m_Id
Определения BiosLobbyService.c:172
bool m_Favorite
Определения BiosLobbyService.c:220
int m_HostPort
Определения BiosLobbyService.c:177
string m_HostIp
Определения BiosLobbyService.c:176
GetServersResultRow the output structure of the GetServers operation that represents one game server.
Определения BiosLobbyService.c:171
Определения 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.
class array< Class T > TStringArray
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