DayZ 1.29
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 int totalVisibleEntries = 0;
33 foreach(string serverID, ServerBrowserEntry entry: m_EntryWidgets)
34 {
35 if (entry.GetRoot().IsVisible())
36 totalVisibleEntries++;
37 }
38
39 if (GetTabType() == TabType.FAVORITE && totalVisibleEntries == 0)
40 GetGame().GetCallQueue(CALL_CATEGORY_GUI).Call(m_Menu.SwitchToOfficalTab);
41 }
42
43 protected override void LoadEntries(int cur_page_index , GetServersResultRowArray page_entries)
44 {
45 if (cur_page_index == 1)
46 {
47 m_OnlineFavServers.Clear();
48 }
49
50 super.LoadEntries(cur_page_index, page_entries);
51 }
52
53 protected override void LoadExtraEntries(int index)
54 {
55 if ( !m_Menu || m_Menu.GetServersLoadingTab() != m_TabType )
56 {
57 return;
58 }
59
60 // m_PagesCount for FAVORITES tab is determined by total number of favorited servers
61 TStringArray favIds = m_Menu.GetFavoritedServerIds();
62 m_PagesCount = Math.Ceil((float)favIds.Count() / SERVER_BROWSER_PAGE_SIZE);
63
64 // offlineFavIds will always have same order, even across pages,
65 // to ensure we display only fav servers that HAVEN'T been displayed yet
66 TStringArray offlineFavIds = new TStringArray();
67 offlineFavIds.Reserve(favIds.Count() - m_OnlineFavServers.Count());
68 foreach (string ipPort : favIds)
69 {
70 if (m_OnlineFavServers.Find(ipPort) == -1)
71 {
72 offlineFavIds.Insert(ipPort);
73 }
74 }
75
76 // appending offline servers to server list
77 int totalServersAlreadyShown = (GetCurrentPage() - 1) * SERVER_BROWSER_PAGE_SIZE + index;
78 int startingIndex = totalServersAlreadyShown - m_OnlineFavServers.Count();
79 for (int i = startingIndex; i < offlineFavIds.Count(); ++i)
80 {
81 string favServerId = offlineFavIds[i];
82
83 // only append server if there is a free entry left on the page
84 if (index >= SERVER_BROWSER_PAGE_SIZE)
85 {
86 break;
87 }
88
89 if (m_OnlineFavServers.Find(favServerId) > -1)
90 {
91 continue;
92 }
93
94 array<string> parts = new array<string>;
95 favServerId.Split(":", parts);
96
97 // ensure server id has correct format
98 if (parts.Count() != 2)
99 {
100 continue;
101 }
102
103 GetServersResultRow offlineRow = new GetServersResultRow();
104 offlineRow.m_Name = favServerId;
105 offlineRow.m_Id = favServerId;
106 offlineRow.m_HostIp = parts[0];
107 offlineRow.m_HostPort = parts[1].ToInt();
108 offlineRow.m_SteamQueryPort = offlineRow.m_HostPort;
109 offlineRow.m_Favorite = true;
110
111 ServerBrowserEntry entry = GetServerEntryByIndex( index );
112 entry.SetIsOnline(false);
113 entry.FillInfo(offlineRow);
114 entry.UpdateEntry();
115
116 m_EntryWidgets.Insert(favServerId, entry);
117 m_EntriesSorted[m_SortType].Insert(offlineRow);
118
119 index++;
120 }
121 }
122
123 override void RefreshList()
124 {
125 super.RefreshList();
126#ifdef PLATFORM_WINDOWS
127 m_CurrentFilterInput.SetFavorited( true );
128#endif
131 }
132
133 override void RefreshServerList()
134 {
135 super.RefreshServerList();
136
138 {
140 m_IsFavoriteChanged = false;
141 }
142 }
143
144 void SetFavoriteChanged(bool state)
145 {
146 m_IsFavoriteChanged = state;
147 }
148
149 override bool PassFilter(GetServersResultRow result)
150 {
151 if (m_TabType == TabType.FAVORITE)
152 {
153 if (!m_Menu.IsFavorited(result.GetIpPort()))
154 {
155 return false;
156 }
157 }
158
159 return super.PassFilter(result);
160 }
161
162 override void PressThumbRight()
163 {
164 switch (m_SelectedPanel)
165 {
166 // filters are disabled for console FAVORITES tab, so do nothing
167 case SelectedPanel.FILTERS:
168 {
169 break;
170 }
171 default:
172 {
173 super.PressThumbRight();
174 break;
175 }
176 }
177 }
178
179 override void PressX()
180 {
181 if ( (g_Game.GetTime() - m_TimeLastServerRefresh) > 1000 )
182 {
184 super.PressX();
185 }
186 }
187
188 override void SetFocusFilters()
189 {
190 super.SetFocusFilters();
191
192 UpdatePageButtons();
193 }
194}
array< ref GetServersResultRow > GetServersResultRowArray
Определения BiosLobbyService.c:331
DayZGame g_Game
Определения DayZGame.c:3942
const int SERVER_BROWSER_PAGE_SIZE
Определения ServerBrowserMenuNew.c:6
ref map< ESortType, ref array< ref GetServersResultRow > > m_EntriesSorted
Определения ServerBrowserTab.c:75
TabType GetTabType()
Определения ServerBrowserTab.c:630
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:443
int GetCurrentPage()
Определения ServerBrowserTab.c:426
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:421
Widget m_Root
Определения SizeToChild.c:91
string GetIpPort()
Определения BiosLobbyService.c:221
int m_SteamQueryPort
Определения BiosLobbyService.c:217
string m_Name
Определения BiosLobbyService.c:173
string m_Id
Определения BiosLobbyService.c:171
bool m_Favorite
Определения BiosLobbyService.c:219
int m_HostPort
Определения BiosLobbyService.c:176
string m_HostIp
Определения BiosLobbyService.c:175
GetServersResultRow the output structure of the GetServers operation that represents one game server.
Определения BiosLobbyService.c:170
Определения 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.
DayZGame GetGame()
Определения gameplay.c:636
array< string > TStringArray
Определения EnScript.c:712
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
const int CALL_CATEGORY_GUI
Определения 3_Game/DayZ/tools/tools.c:9