1class ServerBrowserFilterContainer
extends ScriptedWidgetEventHandler
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;
32 GetGame().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"};
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);
118 void OnMapFilterChanged()
126 if (m_Tab.GetTabType() ==
TabType.LAN || m_Tab.GetTabType() ==
TabType.FAVORITE)
129 GetGame().GetProfileString(
"SB_Filter_" + m_Tab.GetTabType(), data);
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;
207 GetGame().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)
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())
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());
555 input.m_Platform = 2;
558 input.m_Platform = 3;
563 string name_text = m_SearchByName.GetText();
566 input.SetNameFilter(name_text);
570 if (m_RegionFilter.IsSet())
572 input.SetRegionIdFilter(m_RegionFilter.GetValue());
575 if (m_FullServerFilter.IsSet())
577 input.SetFullServer(m_FullServerFilter.IsEnabled());
578 if (m_FullServerFilter.IsEnabled())
580 input.SetFreeSlotsMax(1);
584 input.SetFreeSlotsMin(1);
588 if (m_ThirdPersonFilter.IsSet())
593 input.SetModeIdFilter(!m_ThirdPersonFilter.IsEnabled());
596 if (m_PasswordFilter.IsSet())
598 input.SetIsPasswordProtectedFilter(m_PasswordFilter.IsEnabled());
601 if (m_WhitelistFilter.IsSet())
603 input.SetWhitelistEnabled(m_WhitelistFilter.IsEnabled());
606 if (m_KeyboardFilter.IsSet())
608 input.SetMouseAndKeyboardEnabled(m_KeyboardFilter.IsEnabled());
611 if (m_MapFilter.IsSet())
614 if (internalMapName !=
"")
615 input.SetMapNameToRun(internalMapName);
618 if (m_PreviouslyPlayedFilter.IsSet())
620 input.SetPreviouslyPlayed(m_PreviouslyPlayedFilter.IsEnabled());
override bool OnMouseEnter(Widget w, int x, int y)
override bool OnMouseLeave(Widget w, Widget enterW, int x, int y)
static ref map< string, string > INTERNAL_MAP_NAMES
static ServerBrowserHelperFunctions GetInstance()
static string GetInternalMapName(string mapName)
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)
Result for an object found in CGame.IsBoxCollidingGeometryProxy.
proto native CGame GetGame()
array< string > TStringArray
override bool OnChange(Widget w, int x, int y, bool finished)
override bool OnFocus(Widget w, int x, int y)