Add "explicit maps" search filter control

This commit is contained in:
Salman Ahmed 2021-01-12 11:09:55 +03:00
parent dd809df076
commit 249be461d5
4 changed files with 26 additions and 3 deletions

View File

@ -30,6 +30,8 @@ namespace osu.Game.Online.API.Requests
public SearchPlayed Played { get; } public SearchPlayed Played { get; }
public SearchExplicit Explicit { get; }
[CanBeNull] [CanBeNull]
public IReadOnlyCollection<ScoreRank> Ranks { get; } public IReadOnlyCollection<ScoreRank> Ranks { get; }
@ -50,7 +52,8 @@ namespace osu.Game.Online.API.Requests
SearchLanguage language = SearchLanguage.Any, SearchLanguage language = SearchLanguage.Any,
IReadOnlyCollection<SearchExtra> extra = null, IReadOnlyCollection<SearchExtra> extra = null,
IReadOnlyCollection<ScoreRank> ranks = null, IReadOnlyCollection<ScoreRank> ranks = null,
SearchPlayed played = SearchPlayed.Any) SearchPlayed played = SearchPlayed.Any,
SearchExplicit explicitMaps = SearchExplicit.Hide)
{ {
this.query = string.IsNullOrEmpty(query) ? string.Empty : System.Uri.EscapeDataString(query); this.query = string.IsNullOrEmpty(query) ? string.Empty : System.Uri.EscapeDataString(query);
this.ruleset = ruleset; this.ruleset = ruleset;
@ -64,6 +67,7 @@ namespace osu.Game.Online.API.Requests
Extra = extra; Extra = extra;
Ranks = ranks; Ranks = ranks;
Played = played; Played = played;
Explicit = explicitMaps;
} }
protected override WebRequest CreateWebRequest() protected override WebRequest CreateWebRequest()
@ -93,6 +97,8 @@ namespace osu.Game.Online.API.Requests
if (Played != SearchPlayed.Any) if (Played != SearchPlayed.Any)
req.AddParameter("played", Played.ToString().ToLowerInvariant()); req.AddParameter("played", Played.ToString().ToLowerInvariant());
req.AddParameter("nsfw", Explicit == SearchExplicit.Show ? "true" : "false");
req.AddCursor(cursor); req.AddCursor(cursor);
return req; return req;

View File

@ -141,6 +141,7 @@ namespace osu.Game.Overlays.BeatmapListing
searchControl.Extra.CollectionChanged += (_, __) => queueUpdateSearch(); searchControl.Extra.CollectionChanged += (_, __) => queueUpdateSearch();
searchControl.Ranks.CollectionChanged += (_, __) => queueUpdateSearch(); searchControl.Ranks.CollectionChanged += (_, __) => queueUpdateSearch();
searchControl.Played.BindValueChanged(_ => queueUpdateSearch()); searchControl.Played.BindValueChanged(_ => queueUpdateSearch());
searchControl.Explicit.BindValueChanged(_ => queueUpdateSearch());
sortCriteria.BindValueChanged(_ => queueUpdateSearch()); sortCriteria.BindValueChanged(_ => queueUpdateSearch());
sortDirection.BindValueChanged(_ => queueUpdateSearch()); sortDirection.BindValueChanged(_ => queueUpdateSearch());
@ -193,7 +194,8 @@ namespace osu.Game.Overlays.BeatmapListing
searchControl.Language.Value, searchControl.Language.Value,
searchControl.Extra, searchControl.Extra,
searchControl.Ranks, searchControl.Ranks,
searchControl.Played.Value); searchControl.Played.Value,
searchControl.Explicit.Value);
getSetsRequest.Success += response => getSetsRequest.Success += response =>
{ {

View File

@ -42,6 +42,8 @@ namespace osu.Game.Overlays.BeatmapListing
public Bindable<SearchPlayed> Played => playedFilter.Current; public Bindable<SearchPlayed> Played => playedFilter.Current;
public Bindable<SearchExplicit> Explicit => explicitFilter.Current;
public BeatmapSetInfo BeatmapSet public BeatmapSetInfo BeatmapSet
{ {
set set
@ -65,6 +67,7 @@ namespace osu.Game.Overlays.BeatmapListing
private readonly BeatmapSearchMultipleSelectionFilterRow<SearchExtra> extraFilter; private readonly BeatmapSearchMultipleSelectionFilterRow<SearchExtra> extraFilter;
private readonly BeatmapSearchScoreFilterRow ranksFilter; private readonly BeatmapSearchScoreFilterRow ranksFilter;
private readonly BeatmapSearchFilterRow<SearchPlayed> playedFilter; private readonly BeatmapSearchFilterRow<SearchPlayed> playedFilter;
private readonly BeatmapSearchFilterRow<SearchExplicit> explicitFilter;
private readonly Box background; private readonly Box background;
private readonly UpdateableBeatmapSetCover beatmapCover; private readonly UpdateableBeatmapSetCover beatmapCover;
@ -125,7 +128,8 @@ namespace osu.Game.Overlays.BeatmapListing
languageFilter = new BeatmapSearchFilterRow<SearchLanguage>(@"Language"), languageFilter = new BeatmapSearchFilterRow<SearchLanguage>(@"Language"),
extraFilter = new BeatmapSearchMultipleSelectionFilterRow<SearchExtra>(@"Extra"), extraFilter = new BeatmapSearchMultipleSelectionFilterRow<SearchExtra>(@"Extra"),
ranksFilter = new BeatmapSearchScoreFilterRow(), ranksFilter = new BeatmapSearchScoreFilterRow(),
playedFilter = new BeatmapSearchFilterRow<SearchPlayed>(@"Played") playedFilter = new BeatmapSearchFilterRow<SearchPlayed>(@"Played"),
explicitFilter = new BeatmapSearchFilterRow<SearchExplicit>(@"Explicit Maps"),
} }
} }
} }

View File

@ -0,0 +1,11 @@
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
// See the LICENCE file in the repository root for full licence text.
namespace osu.Game.Overlays.BeatmapListing
{
public enum SearchExplicit
{
Hide,
Show
}
}