1class ServerBrowserFilterContainer
extends ScriptedWidgetEventHandler
3 ref map<string, string> m_Options =
new map<string, string>;
5 protected EditBoxWidget m_SearchByName;
6 protected EditBoxWidget m_SearchByIP;
9 ref OptionSelectorMultistate m_CharacterAliveFilter;
10 ref OptionSelectorMultistate m_SortingFilter;
11 ref OptionSelectorMultistate m_RegionFilter;
12 ref OptionSelectorMultistate m_PingFilter;
13 ref OptionSelectorMultistate m_MapFilter;
14 ref OptionSelector m_DLCFilter;
15 ref OptionSelector m_FavoritedFilter;
16 ref OptionSelector m_FriendsPlayingFilter;
17 ref OptionSelector m_BattleyeFilter;
18 ref OptionSelector m_PasswordFilter;
19 ref OptionSelector m_WhitelistFilter;
20 ref OptionSelector m_KeyboardFilter;
21 ref OptionSelector m_PreviouslyPlayedFilter;
22 ref OptionSelector m_VersionMatchFilter;
23 ref OptionSelector m_FullServerFilter;
24 ref OptionSelector m_ThirdPersonFilter;
25 ref OptionSelector m_PublicFilter;
26 ref OptionSelector m_AcceleratedTimeFilter;
32 g_Game.GetPlayerName(player_name);
35 array<string> character_name_options ={
"#server_browser_disabled", player_name};
36 array<string> region_options = {
"#server_browser_all",
"#server_browser_americas",
"#server_browser_europe",
"#server_browser_asia"};
37 array<string> sort_options = {
"#server_browser_column_host A-Z",
"#server_browser_column_host Z-A",
"#players_title >",
"#players_title <"};
38 array<string> ping_options = {
"#server_browser_disabled",
"<30",
"<50",
"<100",
"<200",
"<300",
"<500"};
39 array<string> two_options = {
"#server_browser_disabled",
"#server_browser_show"};
40 array<string> map_options = LoadMapFilterOptions();
42 m_SearchByName = EditBoxWidget.Cast(root.FindAnyWidget(
"search_name_setting_option"));
43 m_RefreshList = ButtonWidget.Cast(root.GetParent().FindAnyWidget(
"refresh_list_button"));
45 m_RegionFilter =
new OptionSelectorMultistate(root.FindAnyWidget(
"region_setting_option"), 0,
this,
false, region_options);
46 m_PingFilter =
new OptionSelectorMultistate(root.FindAnyWidget(
"ping_setting_option"), 0,
this,
false, ping_options);
47 #ifdef PLATFORM_CONSOLE
48 m_FavoritedFilter =
new OptionSelectorMultistate(root.FindAnyWidget(
"favorites_setting_option"), 0,
this,
false, two_options);
50 m_FavoritedFilter =
new OptionSelector(root.FindAnyWidget(
"favorites_setting_option"), 0,
this,
false);
53 m_MapFilter =
new OptionSelectorMultistate(root.FindAnyWidget(
"map_setting_option"), 0,
this,
false, map_options);
55 m_FriendsPlayingFilter =
new OptionSelector(root.FindAnyWidget(
"friends_setting_option"), 0,
this,
false);
56 m_PreviouslyPlayedFilter =
new OptionSelector(root.FindAnyWidget(
"prev_played_setting_option"), 0,
this,
false);
57 m_FullServerFilter =
new OptionSelector(root.FindAnyWidget(
"full_server_setting_option"), 0,
this,
false);
58 m_ThirdPersonFilter =
new OptionSelector(root.FindAnyWidget(
"tps_setting_option"), 0,
this,
false);
59 m_PasswordFilter =
new OptionSelector(root.FindAnyWidget(
"password_setting_option"), 0,
this,
false);
60 m_WhitelistFilter =
new OptionSelector(root.FindAnyWidget(
"whitelist_setting_option"), 0,
this,
false);
65 m_MapFilter.m_OptionChanged.Insert(OnMapFilterChanged);
73 #ifdef PLATFORM_CONSOLE
74 m_SortingFilter =
new OptionSelectorMultistate(root.FindAnyWidget(
"sort_setting_option"), 0,
this,
false, sort_options);
75 m_KeyboardFilter =
new OptionSelector(root.FindAnyWidget(
"keyboard_setting_option"), 0,
this,
false);
77 m_SortingFilter.m_OptionChanged.Insert(OnSortChanged);
81 m_PingFilter.Disable();
82 m_FriendsPlayingFilter.Disable();
85 #ifdef PLATFORM_WINDOWS
86 #ifndef PLATFORM_CONSOLE
87 m_SearchByIP = EditBoxWidget.Cast(root.FindAnyWidget(
"search_ip_setting_option"));
89 m_SearchByName.SetHandler(
this);
90 m_SearchByIP.SetHandler(
this);
92 m_CharacterAliveFilter =
new OptionSelectorMultistate(root.FindAnyWidget(
"restrict_char_setting_option"), 0,
this,
false, character_name_options);
93 m_VersionMatchFilter =
new OptionSelector(root.FindAnyWidget(
"ver_match_setting_option"), 0,
this,
false);
102 protected array<string> LoadMapFilterOptions()
104 array<string> mapOptions = {
"#server_browser_disabled"};
105 for (
int i = ServerBrowserHelperFunctions.GetInstance().INTERNAL_MAP_NAMES.Count() - 1; i >= 0; i--)
107 mapOptions.Insert(ServerBrowserHelperFunctions.GetInstance().INTERNAL_MAP_NAMES.GetElement(i));
118 void OnMapFilterChanged()
126 if (m_Tab.GetTabType() ==
TabType.LAN || m_Tab.GetTabType() ==
TabType.FAVORITE)
129 g_Game.GetProfileString(
"SB_Filter_" + m_Tab.GetTabType(), data);
136 if (!JsonFileLoader<ref map<string, string>>.LoadData(data, m_Options, errorMessage))
140 if (m_Options && m_Options.Count() >= 6)
142 m_SearchByName.SetText(m_Options.Get(
"m_SearchByName"));
143 m_RegionFilter.SetStringOption(m_Options.Get(
"m_RegionFilter"),
false);
144 m_PingFilter.SetStringOption(m_Options.Get(
"m_PingFilter"),
false);
145 m_FriendsPlayingFilter.SetStringOption(m_Options.Get(
"m_FriendsPlayingFilter"),
false);
146 m_PreviouslyPlayedFilter.SetStringOption(m_Options.Get(
"m_PreviouslyPlayedFilter"),
false);
147 m_FullServerFilter.SetStringOption(m_Options.Get(
"m_FullServerFilter"),
false);
148 m_ThirdPersonFilter.SetStringOption(m_Options.Get(
"m_ThirdPersonFilter"),
false);
149 m_PasswordFilter.SetStringOption(m_Options.Get(
"m_PasswordFilter"),
false);
150 m_WhitelistFilter.SetStringOption(m_Options.Get(
"m_WhitelistFilter"),
false);
151 m_MapFilter.SetStringOption(m_Options.Get(
"m_MapFilter"),
false);
153 #ifdef PLATFORM_CONSOLE
154 m_SortingFilter.SetStringOption(m_Options.Get(
"m_SortingFilter"),
false);
155 m_KeyboardFilter.SetStringOption(m_Options.Get(
"m_KeyboardFilter"),
false);
157 m_FavoritedFilter.SetStringOption(m_Options.Get(
"m_FavoritedFilter"),
false);
160 if (m_Options.Count() >= 12)
162 #ifdef PLATFORM_WINDOWS
163 #ifndef PLATFORM_CONSOLE
164 m_SearchByIP.SetText(m_Options.Get(
"m_SearchByIP"));
165 m_CharacterAliveFilter.SetStringOption(m_Options.Get(
"m_CharacterAliveFilter"),
false);
166 m_VersionMatchFilter.SetStringOption(m_Options.Get(
"m_VersionMatchFilter"),
false);
177 m_Options.Insert(
"m_SearchByName", m_SearchByName.GetText());
178 m_Options.Insert(
"m_RegionFilter", m_RegionFilter.GetStringValue());
179 m_Options.Insert(
"m_PingFilter", m_PingFilter.GetStringValue());
180 m_Options.Insert(
"m_FriendsPlayingFilter", m_FriendsPlayingFilter.GetStringValue());
181 m_Options.Insert(
"m_PreviouslyPlayedFilter", m_PreviouslyPlayedFilter.GetStringValue());
182 m_Options.Insert(
"m_FullServerFilter", m_FullServerFilter.GetStringValue());
183 m_Options.Insert(
"m_ThirdPersonFilter", m_ThirdPersonFilter.GetStringValue());
184 m_Options.Insert(
"m_PasswordFilter", m_PasswordFilter.GetStringValue());
185 m_Options.Insert(
"m_WhitelistFilter", m_WhitelistFilter.GetStringValue());
186 m_Options.Insert(
"m_MapFilter", m_MapFilter.GetStringValue());
188 #ifdef PLATFORM_CONSOLE
189 m_Options.Insert(
"m_SortingFilter", m_SortingFilter.GetStringValue());
190 m_Options.Insert(
"m_KeyboardFilter", m_KeyboardFilter.GetStringValue());
192 m_Options.Insert(
"m_FavoritedFilter", m_FavoritedFilter.GetStringValue());
195 #ifdef PLATFORM_WINDOWS
196 #ifndef PLATFORM_CONSOLE
197 m_Options.Insert(
"m_SearchByIP", m_SearchByIP.GetText());
198 m_Options.Insert(
"m_CharacterAliveFilter", m_CharacterAliveFilter.GetStringValue());
199 m_Options.Insert(
"m_VersionMatchFilter", m_VersionMatchFilter.GetStringValue());
203 string data, errorMessage;
204 if (!JsonFileLoader<ref map<string, string>>.MakeData(m_Options, data, errorMessage))
207 g_Game.SetProfileString(
"SB_Filter_" + m_Tab.GetTabType(), data);
212 m_SearchByName.SetText(
"");
213 m_RegionFilter.Reset();
214 m_PingFilter.Reset();
215 m_FavoritedFilter.Reset();
216 m_FriendsPlayingFilter.Reset();
217 m_PreviouslyPlayedFilter.Reset();
218 m_FullServerFilter.Reset();
219 m_ThirdPersonFilter.Reset();
220 m_PasswordFilter.Reset();
221 m_WhitelistFilter.Reset();
224 #ifdef PLATFORM_CONSOLE
225 m_SortingFilter.Reset();
226 m_KeyboardFilter.Reset();
229 #ifdef PLATFORM_WINDOWS
230 #ifndef PLATFORM_CONSOLE
231 m_SearchByIP.SetText(
"");
232 m_CharacterAliveFilter.Reset();
233 m_VersionMatchFilter.Reset();
241 return (m_Options[
"m_PingFilter"] != m_PingFilter.GetOptions()[0]);
246 return (m_Options[
"m_FavoritedFilter"] != m_FavoritedFilter.GetOptions()[0]);
249 bool PreviouslyIsSet()
251 return (m_Options[
"m_PreviouslyPlayedFilter"] != m_PreviouslyPlayedFilter.GetOptions()[0]);
255 bool ProcessIntoIPAddress(out
string potential_ip)
257 bool was_text_changed =
false;
258 int length = potential_ip.Length();
261 for (
int i = length - 1 ; i >= 0; --i)
263 string character = potential_ip.Get(i);
265 if (character.ToInt() == 0 && character !=
"0" && character !=
"." && character !=
":")
267 potential_ip = potential_ip.SubstringInverted(potential_ip, i, i + 1);
268 was_text_changed =
true;
272 bool text_was_shortened = LimitTextBoxCharacterCount(potential_ip, 21);
274 return (was_text_changed || text_was_shortened);
278 bool LimitTextBoxCharacterCount(out
string text,
int max_length)
280 int length = text.Length();
281 bool was_text_changed =
false;
283 if (length > max_length)
285 text = text.Substring(0, max_length);
286 was_text_changed =
true;
289 return was_text_changed;
293 string GenerateValidIP(
string potential_ip)
295 string correct_ip_format;
298 potential_ip.Split(
":", array_ip_and_port);
303 if(array_ip_and_port.Count() > 0)
305 ip_entries = array_ip_and_port.Get(0);
307 ip_entries.Split(
".", array_ip);
310 int ip_entries_count = array_ip.Count();
312 if (ip_entries_count <= 3 || ip_entries_count > 4)
315 for (
int i = 0; i < 4; i++)
317 int ip_entry = array_ip.Get(i).ToInt();
320 if (ip_entry > 255 || ip_entry < 0)
323 ip_string = ip_string + ip_entry.ToString();
325 if (i < ip_entries_count - 1)
326 ip_string = ip_string +
".";
330 correct_ip_format = ip_string;
335 correct_ip_format = ip_entries;
338 if (correct_ip_format ==
"")
343 if(array_ip_and_port.Count() > 1)
345 port = array_ip_and_port.Get(1).ToInt();
347 if (port > 65535 | port < 0)
352 correct_ip_format = correct_ip_format +
":" + port.ToString();
358 correct_ip_format = correct_ip_format +
":" + port.ToString();
361 return correct_ip_format;
365 bool GenerateValidFilter(out
string potential_filter)
367 return LimitTextBoxCharacterCount(potential_filter, 16);
370 void OnSortChanged(
int value)
399 #ifdef PLATFORM_CONSOLE
400 switch (m_Tab.GetTabType())
410 SetFocus(m_SearchByName);
415 #ifdef PLATFORM_WINDOWS
416 SetFocus(m_SearchByName);
420 override bool OnChange(Widget w,
int x,
int y,
bool finished)
424 if(w == m_SearchByName)
426 string input_name = m_SearchByName.GetText();
428 if (GenerateValidFilter(input_name))
429 m_SearchByName.SetText(input_name);
432 SetFocus(m_SearchByName);
436 else if(w == m_SearchByIP)
438 string input_ip = m_SearchByIP.GetText();
440 if (ProcessIntoIPAddress(input_ip))
441 m_SearchByIP.SetText(input_ip);
444 SetFocus(m_SearchByIP);
452 override bool OnFocus(Widget w,
int x,
int y)
469 GetServersInput GetFilterOptionsPC()
471 GetServersInput input =
new GetServersInput();
474 input.m_Platform = 1;
478 string name_text = m_SearchByName.GetText();
481 input.SetNameFilter(name_text);
485 if (m_FullServerFilter.IsSet())
487 input.SetFullServer(m_FullServerFilter.IsEnabled());
490 if (m_ThirdPersonFilter.IsSet())
492 input.SetThirdPerson(m_ThirdPersonFilter.IsEnabled());
495 if (m_PasswordFilter.IsSet())
497 input.SetPassworded(m_PasswordFilter.IsEnabled());
500 if (m_WhitelistFilter.IsSet())
502 input.SetWhitelistEnabled(m_WhitelistFilter.IsEnabled());
505 if (m_MapFilter.IsSet())
507 string internalMapName = ServerBrowserHelperFunctions.GetInternalMapName(m_MapFilter.GetStringValue());
508 if (internalMapName !=
"")
509 input.SetMapNameToRun(internalMapName);
512 #ifndef PLATFORM_CONSOLE
515 string ip_text = m_SearchByIP.GetText();
518 input.SetHostIp(ip_text);
522 if (m_PingFilter.IsSet())
524 string str_ping = m_PingFilter.GetStringValue();
525 int ping = str_ping.Substring(1, str_ping.Length() - 1).ToInt();
526 input.SetPingFilter(ping);
529 if (m_FriendsPlayingFilter.IsSet())
531 input.SetFriendsPlaying(m_FriendsPlayingFilter.IsEnabled());
534 if (m_PreviouslyPlayedFilter.IsSet())
536 input.SetPreviouslyPlayed(m_PreviouslyPlayedFilter.IsEnabled());
539 if (m_VersionMatchFilter.IsSet())
541 input.SetProperVersionMatch(m_VersionMatchFilter.IsEnabled());
548 GetServersInput GetFilterOptionsConsoles()
550 GetServersInput input =
new GetServersInput();
554 #ifdef PLATFORM_MSSTORE
555 input.m_Platform = 2;
558 input.m_Platform = 2;
561 input.m_Platform = 3;
566 string name_text = m_SearchByName.GetText();
569 input.SetNameFilter(name_text);
573 if (m_RegionFilter.IsSet())
575 input.SetRegionIdFilter(m_RegionFilter.GetValue());
578 if (m_FullServerFilter.IsSet())
580 input.SetFullServer(m_FullServerFilter.IsEnabled());
581 if (m_FullServerFilter.IsEnabled())
583 input.SetFreeSlotsMax(1);
587 input.SetFreeSlotsMin(1);
591 if (m_ThirdPersonFilter.IsSet())
596 input.SetModeIdFilter(!m_ThirdPersonFilter.IsEnabled());
599 if (m_PasswordFilter.IsSet())
601 input.SetIsPasswordProtectedFilter(m_PasswordFilter.IsEnabled());
604 if (m_WhitelistFilter.IsSet())
606 input.SetWhitelistEnabled(m_WhitelistFilter.IsEnabled());
609 if (m_KeyboardFilter.IsSet())
611 input.SetMouseAndKeyboardEnabled(m_KeyboardFilter.IsEnabled());
614 if (m_MapFilter.IsSet())
616 string internalMapName = ServerBrowserHelperFunctions.GetInternalMapName(m_MapFilter.GetStringValue());
617 if (internalMapName !=
"")
618 input.SetMapNameToRun(internalMapName);
621 if (m_PreviouslyPlayedFilter.IsSet())
623 input.SetPreviouslyPlayed(m_PreviouslyPlayedFilter.IsEnabled());
override void OnFilterFocus(Widget w)
override bool OnMouseLeave(Widget w, Widget enterW, int x, int y)
override void SetSort(ESortType type, ESortOrder order)
override void OnFilterChanged()
override bool OnMouseEnter(Widget w, int x, int y)
array< string > TStringArray
override bool OnChange(Widget w, int x, int y, bool finished)
void ServerBrowserTab(Widget parent, ServerBrowserMenuNew menu, TabType type)
override bool OnFocus(Widget w, int x, int y)
override bool OnMouseEnter(Widget w, int x, int y)
override bool OnMouseLeave(Widget w, Widget enterW, int x, int y)