diff --git a/osu.Game/Beatmaps/BeatmapInfoExtensions.cs b/osu.Game/Beatmaps/BeatmapInfoExtensions.cs index a3bc03acc8..b00d0ba316 100644 --- a/osu.Game/Beatmaps/BeatmapInfoExtensions.cs +++ b/osu.Game/Beatmaps/BeatmapInfoExtensions.cs @@ -34,13 +34,17 @@ namespace osu.Game.Beatmaps foreach (var filter in filters) { if (filter.Matches(beatmapInfo.DifficultyName)) - return true; + continue; - if (BeatmapMetadataInfoExtensions.Match(beatmapInfo.Metadata, filters)) - return true; + if (BeatmapMetadataInfoExtensions.Match(beatmapInfo.Metadata, filter)) + continue; + + // failed to match a single filter at all - fail the whole match. + return false; } - return false; + // got through all filters without failing any - pass the whole match. + return true; } private static string getVersionString(IBeatmapInfo beatmapInfo) => string.IsNullOrEmpty(beatmapInfo.DifficultyName) ? string.Empty : $"[{beatmapInfo.DifficultyName}]"; diff --git a/osu.Game/Beatmaps/BeatmapMetadataInfoExtensions.cs b/osu.Game/Beatmaps/BeatmapMetadataInfoExtensions.cs index ee3afdaef5..198469dba6 100644 --- a/osu.Game/Beatmaps/BeatmapMetadataInfoExtensions.cs +++ b/osu.Game/Beatmaps/BeatmapMetadataInfoExtensions.cs @@ -21,18 +21,15 @@ namespace osu.Game.Beatmaps return termsList.ToArray(); } - public static bool Match(IBeatmapMetadataInfo metadataInfo, FilterCriteria.OptionalTextFilter[] filters) + public static bool Match(IBeatmapMetadataInfo metadataInfo, FilterCriteria.OptionalTextFilter filter) { - foreach (var filter in filters) - { - if (filter.Matches(metadataInfo.Author.Username)) return true; - if (filter.Matches(metadataInfo.Artist)) return true; - if (filter.Matches(metadataInfo.ArtistUnicode)) return true; - if (filter.Matches(metadataInfo.Title)) return true; - if (filter.Matches(metadataInfo.TitleUnicode)) return true; - if (filter.Matches(metadataInfo.Source)) return true; - if (filter.Matches(metadataInfo.Tags)) return true; - } + if (filter.Matches(metadataInfo.Author.Username)) return true; + if (filter.Matches(metadataInfo.Artist)) return true; + if (filter.Matches(metadataInfo.ArtistUnicode)) return true; + if (filter.Matches(metadataInfo.Title)) return true; + if (filter.Matches(metadataInfo.TitleUnicode)) return true; + if (filter.Matches(metadataInfo.Source)) return true; + if (filter.Matches(metadataInfo.Tags)) return true; return false; }