diff --git a/osu.Game/Overlays/BeatmapListing/BeatmapListingFilterControl.cs b/osu.Game/Overlays/BeatmapListing/BeatmapListingFilterControl.cs
index f49d913bb2..b6a0846407 100644
--- a/osu.Game/Overlays/BeatmapListing/BeatmapListingFilterControl.cs
+++ b/osu.Game/Overlays/BeatmapListing/BeatmapListingFilterControl.cs
@@ -25,8 +25,9 @@ namespace osu.Game.Overlays.BeatmapListing
public class BeatmapListingFilterControl : CompositeDrawable
{
///
- /// Fired when a search finishes. Contains only new items in the case of pagination.
- /// Fired with BeatmapListingSearchControl when non-supporter user used supporter-only filters.
+ /// Fired when a search finishes.
+ /// SearchFinished.Type = ResultsReturned when results returned. Contains only new items in the case of pagination.
+ /// SearchFinished.Type = SupporterOnlyFilter when a non-supporter user applied supporter-only filters.
///
public Action SearchFinished;
@@ -216,7 +217,7 @@ private void performRequest()
getSetsRequest = null;
// check if an non-supporter user used supporter-only filters
- if (!api.LocalUser.Value.IsSupporter && (searchControl.Ranks.Any() || searchControl.Played.Value != SearchPlayed.Any))
+ if (!api.LocalUser.Value.IsSupporter)
{
List filters = new List();
@@ -226,12 +227,14 @@ private void performRequest()
if (searchControl.Ranks.Any())
filters.Add(BeatmapsStrings.ListingSearchFiltersRank);
- SearchFinished?.Invoke(SearchResult.SupporterOnlyFilter(filters));
- }
- else
- {
- SearchFinished?.Invoke(SearchResult.ResultsReturned(sets));
+ if (filters.Any())
+ {
+ SearchFinished?.Invoke(SearchResult.SupporterOnlyFilter(filters));
+ return;
+ }
}
+
+ SearchFinished?.Invoke(SearchResult.ResultsReturned(sets));
};
api.Queue(getSetsRequest);
@@ -259,10 +262,14 @@ protected override void Dispose(bool isDisposing)
public enum SearchResultType
{
+ // returned with Results
ResultsReturned,
+ // non-supporter user applied supporter-only filters
SupporterOnlyFilter
}
+ // Results only valid when Type == ResultsReturned
+ // Filters only valid when Type == SupporterOnlyFilter
public struct SearchResult
{
public SearchResultType Type { get; private set; }
diff --git a/osu.Game/Overlays/BeatmapListingOverlay.cs b/osu.Game/Overlays/BeatmapListingOverlay.cs
index 63800e6585..c2ba3d5bc0 100644
--- a/osu.Game/Overlays/BeatmapListingOverlay.cs
+++ b/osu.Game/Overlays/BeatmapListingOverlay.cs
@@ -256,7 +256,7 @@ private void load(TextureStore textures)
// using string literals as there's no proper processing for LocalizeStrings yet
public class SupporterRequiredDrawable : CompositeDrawable
{
- private OsuSpriteText filtersText;
+ private LinkFlowContainer supporterRequiredText;
public SupporterRequiredDrawable()
{
@@ -275,7 +275,7 @@ private void load(TextureStore textures)
RelativeSizeAxes = Axes.Y,
AutoSizeAxes = Axes.X,
Direction = FillDirection.Horizontal,
- Children = new[]
+ Children = new Drawable[]
{
new Sprite
{
@@ -285,39 +285,31 @@ private void load(TextureStore textures)
FillMode = FillMode.Fit,
Texture = textures.Get(@"Online/supporter-required"),
},
- createSupporterText(),
+ supporterRequiredText = new LinkFlowContainer
+ {
+ Anchor = Anchor.Centre,
+ Origin = Anchor.Centre,
+ AutoSizeAxes = Axes.Both,
+ Margin = new MarginPadding { Bottom = 10 },
+ },
}
});
}
public void UpdateText(List filters)
{
- // use string literals for now
- filtersText.Text = BeatmapsStrings.ListingSearchSupporterFilterQuoteDefault(string.Join(" and ", filters), "").ToString();
- }
+ supporterRequiredText.Clear();
- private Drawable createSupporterText()
- {
- LinkFlowContainer supporterRequiredText = new LinkFlowContainer
- {
- Anchor = Anchor.Centre,
- Origin = Anchor.Centre,
- AutoSizeAxes = Axes.Both,
- Margin = new MarginPadding { Bottom = 10 },
- };
-
- filtersText = (OsuSpriteText)supporterRequiredText.AddText(
- "_",
+ supporterRequiredText.AddText(
+ BeatmapsStrings.ListingSearchSupporterFilterQuoteDefault(string.Join(" and ", filters), "").ToString(),
t =>
{
t.Font = OsuFont.GetFont(size: 16);
t.Colour = Colour4.White;
}
- ).First();
+ );
supporterRequiredText.AddLink(BeatmapsStrings.ListingSearchSupporterFilterQuoteLinkText.ToString(), @"/store/products/supporter-tag");
-
- return supporterRequiredText;
}
}