Implement category dropdown for multiplayer

This commit is contained in:
smoogipoo
2020-07-10 17:26:42 +09:00
parent ed926de77f
commit 926279e39b
6 changed files with 63 additions and 44 deletions

View File

@ -12,11 +12,11 @@ using osuTK.Graphics;
namespace osu.Game.Screens.Multi.Lounge.Components
{
public class FilterControl : SearchableListFilterControl<PrimaryFilter, SecondaryFilter>
public class FilterControl : SearchableListFilterControl<RoomStatusFilter, RoomCategoryFilter>
{
protected override Color4 BackgroundColour => Color4.Black.Opacity(0.5f);
protected override PrimaryFilter DefaultTab => PrimaryFilter.Open;
protected override SecondaryFilter DefaultCategory => SecondaryFilter.Public;
protected override RoomStatusFilter DefaultTab => RoomStatusFilter.Open;
protected override RoomCategoryFilter DefaultCategory => RoomCategoryFilter.Normal;
protected override float ContentHorizontalPadding => base.ContentHorizontalPadding + OsuScreen.HORIZONTAL_OVERFLOW_PADDING;
@ -43,6 +43,7 @@ namespace osu.Game.Screens.Multi.Lounge.Components
ruleset.BindValueChanged(_ => updateFilter());
Search.Current.BindValueChanged(_ => scheduleUpdateFilter());
Dropdown.Current.BindValueChanged(_ => updateFilter());
Tabs.Current.BindValueChanged(_ => updateFilter(), true);
}
@ -61,14 +62,14 @@ namespace osu.Game.Screens.Multi.Lounge.Components
filter.Value = new FilterCriteria
{
SearchString = Search.Current.Value ?? string.Empty,
PrimaryFilter = Tabs.Current.Value,
SecondaryFilter = DisplayStyleControl.Dropdown.Current.Value,
StatusFilter = Tabs.Current.Value,
RoomCategoryFilter = Dropdown.Current.Value,
Ruleset = ruleset.Value
};
}
}
public enum PrimaryFilter
public enum RoomStatusFilter
{
Open,
@ -78,9 +79,9 @@ namespace osu.Game.Screens.Multi.Lounge.Components
Owned,
}
public enum SecondaryFilter
public enum RoomCategoryFilter
{
Public,
//Private,
Normal,
Spotlight
}
}

View File

@ -8,8 +8,8 @@ namespace osu.Game.Screens.Multi.Lounge.Components
public class FilterCriteria
{
public string SearchString;
public PrimaryFilter PrimaryFilter;
public SecondaryFilter SecondaryFilter;
public RoomStatusFilter StatusFilter;
public RoomCategoryFilter RoomCategoryFilter;
public RulesetInfo Ruleset;
}
}

View File

@ -77,14 +77,6 @@ namespace osu.Game.Screens.Multi.Lounge.Components
if (!string.IsNullOrEmpty(criteria.SearchString))
matchingFilter &= r.FilterTerms.Any(term => term.IndexOf(criteria.SearchString, StringComparison.InvariantCultureIgnoreCase) >= 0);
switch (criteria.SecondaryFilter)
{
default:
case SecondaryFilter.Public:
matchingFilter &= r.Room.Availability.Value == RoomAvailability.Public;
break;
}
r.MatchingFilter = matchingFilter;
}
});