1
0
mirror of https://github.com/ppy/osu.git synced 2025-01-12 19:03:08 +08:00

Link beatmap set genre and language to listing filters

This commit is contained in:
Joseph Madamba 2022-12-18 22:52:21 -08:00
parent ca8d2bec9d
commit 01f09529a8
5 changed files with 43 additions and 0 deletions

View File

@ -341,6 +341,8 @@ namespace osu.Game.Online.Chat
OpenWiki,
Custom,
OpenChangelog,
FilterBeatmapSetGenre,
FilterBeatmapSetLanguage,
}
public class Link : IComparable<Link>

View File

@ -356,6 +356,14 @@ namespace osu.Game
SearchBeatmapSet(argString);
break;
case LinkAction.FilterBeatmapSetGenre:
FilterBeatmapSetGenre(argString);
break;
case LinkAction.FilterBeatmapSetLanguage:
FilterBeatmapSetLanguage(argString);
break;
case LinkAction.OpenEditorTimestamp:
case LinkAction.JoinMultiplayerMatch:
case LinkAction.Spectate:
@ -460,6 +468,10 @@ namespace osu.Game
/// <param name="query">The query to search for.</param>
public void SearchBeatmapSet(string query) => waitForReady(() => beatmapListing, _ => beatmapListing.ShowWithSearch(query));
public void FilterBeatmapSetGenre(string genre) => waitForReady(() => beatmapListing, _ => beatmapListing.ShowWithGenreFilter(genre));
public void FilterBeatmapSetLanguage(string language) => waitForReady(() => beatmapListing, _ => beatmapListing.ShowWithLanguageFilter(language));
/// <summary>
/// Show a wiki's page as an overlay
/// </summary>

View File

@ -6,6 +6,7 @@
using System;
using System.Collections.Generic;
using System.Linq;
using Humanizer;
using osu.Framework.Allocation;
using osu.Framework.Bindables;
using osu.Framework.Extensions.Color4Extensions;
@ -145,6 +146,12 @@ namespace osu.Game.Overlays.BeatmapListing
public void Search(string query)
=> Schedule(() => searchControl.Query.Value = query);
public void FilterGenre(string genre)
=> Schedule(() => searchControl.Genre.Value = genre.DehumanizeTo<SearchGenre>());
public void FilterLanguage(string language)
=> Schedule(() => searchControl.Language.Value = language.DehumanizeTo<SearchLanguage>());
protected override void LoadComplete()
{
base.LoadComplete();

View File

@ -110,6 +110,18 @@ namespace osu.Game.Overlays
ScrollFlow.ScrollToStart();
}
public void ShowWithGenreFilter(string genre)
{
ShowWithSearch(string.Empty);
filterControl.FilterGenre(genre);
}
public void ShowWithLanguageFilter(string language)
{
ShowWithSearch(string.Empty);
filterControl.FilterLanguage(language);
}
protected override BeatmapListingHeader CreateHeader() => new BeatmapListingHeader();
protected override Color4 BackgroundColour => ColourProvider.Background6;

View File

@ -4,6 +4,7 @@
#nullable disable
using System;
using Humanizer;
using osu.Framework.Extensions;
using osu.Framework.Extensions.Color4Extensions;
using osu.Framework.Graphics;
@ -12,6 +13,7 @@ using osu.Game.Graphics;
using osu.Game.Graphics.Containers;
using osu.Game.Graphics.Sprites;
using osu.Game.Online.Chat;
using osu.Game.Overlays.BeatmapListing;
using osuTK;
using osuTK.Graphics;
@ -116,6 +118,14 @@ namespace osu.Game.Overlays.BeatmapSet
break;
case MetadataType.Genre:
loaded.AddLink(text.DehumanizeTo<SearchGenre>().GetLocalisableDescription(), LinkAction.FilterBeatmapSetGenre, text);
break;
case MetadataType.Language:
loaded.AddLink(text.DehumanizeTo<SearchLanguage>().GetLocalisableDescription(), LinkAction.FilterBeatmapSetLanguage, text);
break;
default:
loaded.AddText(text);
break;