diff --git a/osu.Game/Rulesets/Edit/Checks/CheckAudioInVideo.cs b/osu.Game/Rulesets/Edit/Checks/CheckAudioInVideo.cs index 6fb2406038..81f61d1bf6 100644 --- a/osu.Game/Rulesets/Edit/Checks/CheckAudioInVideo.cs +++ b/osu.Game/Rulesets/Edit/Checks/CheckAudioInVideo.cs @@ -14,9 +14,9 @@ using File = TagLib.File; namespace osu.Game.Rulesets.Edit.Checks { - public class CheckAudioInVideo : IGeneralCheck + public class CheckAudioInVideo : ICheck { - public CheckMetadata Metadata => new CheckMetadata(CheckCategory.Audio, "Audio track in video files"); + public CheckMetadata Metadata => new CheckMetadata(CheckCategory.Audio, "Audio track in video files", CheckScope.Beatmapset); public IEnumerable PossibleTemplates => new IssueTemplate[] { diff --git a/osu.Game/Rulesets/Edit/Checks/CheckAudioQuality.cs b/osu.Game/Rulesets/Edit/Checks/CheckAudioQuality.cs index 3ddaf19419..c46fb5a56a 100644 --- a/osu.Game/Rulesets/Edit/Checks/CheckAudioQuality.cs +++ b/osu.Game/Rulesets/Edit/Checks/CheckAudioQuality.cs @@ -7,7 +7,7 @@ using osu.Game.Rulesets.Edit.Checks.Components; namespace osu.Game.Rulesets.Edit.Checks { - public class CheckAudioQuality : IGeneralCheck + public class CheckAudioQuality : ICheck { // This is a requirement as stated in the Ranking Criteria. // See https://osu.ppy.sh/wiki/en/Ranking_criteria#audio @@ -18,7 +18,7 @@ namespace osu.Game.Rulesets.Edit.Checks // There not existing a version with a bitrate of 128 kbps or higher is extremely rare. private const int min_bitrate = 128; - public CheckMetadata Metadata { get; } = new CheckMetadata(CheckCategory.Audio, "Too high or low audio bitrate"); + public CheckMetadata Metadata { get; } = new CheckMetadata(CheckCategory.Audio, "Too high or low audio bitrate", CheckScope.Beatmapset); public IEnumerable PossibleTemplates => new IssueTemplate[] { diff --git a/osu.Game/Rulesets/Edit/Checks/CheckBackgroundQuality.cs b/osu.Game/Rulesets/Edit/Checks/CheckBackgroundQuality.cs index 23a96347fa..c843fc3248 100644 --- a/osu.Game/Rulesets/Edit/Checks/CheckBackgroundQuality.cs +++ b/osu.Game/Rulesets/Edit/Checks/CheckBackgroundQuality.cs @@ -8,7 +8,7 @@ using osu.Game.Rulesets.Edit.Checks.Components; namespace osu.Game.Rulesets.Edit.Checks { - public class CheckBackgroundQuality : IGeneralCheck + public class CheckBackgroundQuality : ICheck { // These are the requirements as stated in the Ranking Criteria. // See https://osu.ppy.sh/wiki/en/Ranking_Criteria#rules.5 @@ -22,7 +22,7 @@ namespace osu.Game.Rulesets.Edit.Checks private const int low_width = 960; private const int low_height = 540; - public CheckMetadata Metadata { get; } = new CheckMetadata(CheckCategory.Resources, "Too high or low background resolution"); + public CheckMetadata Metadata { get; } = new CheckMetadata(CheckCategory.Resources, "Too high or low background resolution", CheckScope.Beatmapset); public IEnumerable PossibleTemplates => new IssueTemplate[] { diff --git a/osu.Game/Rulesets/Edit/Checks/CheckDelayedHitsounds.cs b/osu.Game/Rulesets/Edit/Checks/CheckDelayedHitsounds.cs index e863dfedf9..f50549bda0 100644 --- a/osu.Game/Rulesets/Edit/Checks/CheckDelayedHitsounds.cs +++ b/osu.Game/Rulesets/Edit/Checks/CheckDelayedHitsounds.cs @@ -11,7 +11,7 @@ using osu.Game.Rulesets.Edit.Checks.Components; namespace osu.Game.Rulesets.Edit.Checks { - public class CheckDelayedHitsounds : IGeneralCheck + public class CheckDelayedHitsounds : ICheck { /// /// Threshold at which point the sample is considered silent. @@ -22,7 +22,7 @@ namespace osu.Game.Rulesets.Edit.Checks private const int delay_threshold = 5; private const int delay_threshold_negligible = 1; - public CheckMetadata Metadata => new CheckMetadata(CheckCategory.Audio, "Delayed hit sounds."); + public CheckMetadata Metadata => new CheckMetadata(CheckCategory.Audio, "Delayed hit sounds.", CheckScope.Beatmapset); public IEnumerable PossibleTemplates => new IssueTemplate[] { diff --git a/osu.Game/Rulesets/Edit/Checks/CheckFilePresence.cs b/osu.Game/Rulesets/Edit/Checks/CheckFilePresence.cs index 5730b639b1..a14b877586 100644 --- a/osu.Game/Rulesets/Edit/Checks/CheckFilePresence.cs +++ b/osu.Game/Rulesets/Edit/Checks/CheckFilePresence.cs @@ -7,13 +7,13 @@ using osu.Game.Rulesets.Edit.Checks.Components; namespace osu.Game.Rulesets.Edit.Checks { - public abstract class CheckFilePresence : IGeneralCheck + public abstract class CheckFilePresence : ICheck { protected abstract CheckCategory Category { get; } protected abstract string TypeOfFile { get; } protected abstract string? GetFilename(IBeatmap beatmap); - public CheckMetadata Metadata => new CheckMetadata(Category, $"Missing {TypeOfFile}"); + public CheckMetadata Metadata => new CheckMetadata(Category, $"Missing {TypeOfFile}", CheckScope.Beatmapset); public IEnumerable PossibleTemplates => new IssueTemplate[] { diff --git a/osu.Game/Rulesets/Edit/Checks/CheckHitsoundsFormat.cs b/osu.Game/Rulesets/Edit/Checks/CheckHitsoundsFormat.cs index dd88a72ea4..c1a4e0b1b1 100644 --- a/osu.Game/Rulesets/Edit/Checks/CheckHitsoundsFormat.cs +++ b/osu.Game/Rulesets/Edit/Checks/CheckHitsoundsFormat.cs @@ -11,9 +11,9 @@ using osu.Game.Rulesets.Edit.Checks.Components; namespace osu.Game.Rulesets.Edit.Checks { - public class CheckHitsoundsFormat : IGeneralCheck + public class CheckHitsoundsFormat : ICheck { - public CheckMetadata Metadata => new CheckMetadata(CheckCategory.Audio, "Checks for hitsound formats."); + public CheckMetadata Metadata => new CheckMetadata(CheckCategory.Audio, "Checks for hitsound formats.", CheckScope.Beatmapset); public IEnumerable PossibleTemplates => new IssueTemplate[] { diff --git a/osu.Game/Rulesets/Edit/Checks/CheckInconsistentMetadata.cs b/osu.Game/Rulesets/Edit/Checks/CheckInconsistentMetadata.cs index 2a60706a17..fcfb6a54c2 100644 --- a/osu.Game/Rulesets/Edit/Checks/CheckInconsistentMetadata.cs +++ b/osu.Game/Rulesets/Edit/Checks/CheckInconsistentMetadata.cs @@ -9,9 +9,9 @@ using osu.Game.Rulesets.Edit.Checks.Components; namespace osu.Game.Rulesets.Edit.Checks { - public class CheckInconsistentMetadata : IGeneralCheck + public class CheckInconsistentMetadata : ICheck { - public CheckMetadata Metadata => new CheckMetadata(CheckCategory.Metadata, "Inconsistent metadata"); + public CheckMetadata Metadata => new CheckMetadata(CheckCategory.Metadata, "Inconsistent metadata", CheckScope.Beatmapset); public IEnumerable PossibleTemplates => new IssueTemplate[] { diff --git a/osu.Game/Rulesets/Edit/Checks/CheckSongFormat.cs b/osu.Game/Rulesets/Edit/Checks/CheckSongFormat.cs index e4a3397e91..5f36c2920e 100644 --- a/osu.Game/Rulesets/Edit/Checks/CheckSongFormat.cs +++ b/osu.Game/Rulesets/Edit/Checks/CheckSongFormat.cs @@ -9,9 +9,9 @@ using osu.Game.Rulesets.Edit.Checks.Components; namespace osu.Game.Rulesets.Edit.Checks { - public class CheckSongFormat : IGeneralCheck + public class CheckSongFormat : ICheck { - public CheckMetadata Metadata => new CheckMetadata(CheckCategory.Audio, "Checks for song formats."); + public CheckMetadata Metadata => new CheckMetadata(CheckCategory.Audio, "Checks for song formats.", CheckScope.Beatmapset); public IEnumerable PossibleTemplates => new IssueTemplate[] { diff --git a/osu.Game/Rulesets/Edit/Checks/CheckTitleMarkers.cs b/osu.Game/Rulesets/Edit/Checks/CheckTitleMarkers.cs index 1c29e73b26..77e1f23445 100644 --- a/osu.Game/Rulesets/Edit/Checks/CheckTitleMarkers.cs +++ b/osu.Game/Rulesets/Edit/Checks/CheckTitleMarkers.cs @@ -8,9 +8,9 @@ using osu.Game.Rulesets.Edit.Checks.Components; namespace osu.Game.Rulesets.Edit.Checks { - public class CheckTitleMarkers : IGeneralCheck + public class CheckTitleMarkers : ICheck { - public CheckMetadata Metadata => new CheckMetadata(CheckCategory.Metadata, "Checks for incorrect formats of (TV Size) / (Game Ver.) / (Short Ver.) / (Cut Ver.) / (Sped Up Ver.) / etc in title."); + public CheckMetadata Metadata => new CheckMetadata(CheckCategory.Metadata, "Checks for incorrect formats of (TV Size) / (Game Ver.) / (Short Ver.) / (Cut Ver.) / (Sped Up Ver.) / etc in title.", CheckScope.Beatmapset); public IEnumerable PossibleTemplates => new IssueTemplate[] { diff --git a/osu.Game/Rulesets/Edit/Checks/CheckTooShortAudioFiles.cs b/osu.Game/Rulesets/Edit/Checks/CheckTooShortAudioFiles.cs index 640377bcc8..ff3bed956c 100644 --- a/osu.Game/Rulesets/Edit/Checks/CheckTooShortAudioFiles.cs +++ b/osu.Game/Rulesets/Edit/Checks/CheckTooShortAudioFiles.cs @@ -10,11 +10,11 @@ using osu.Game.Rulesets.Edit.Checks.Components; namespace osu.Game.Rulesets.Edit.Checks { - public class CheckTooShortAudioFiles : IGeneralCheck + public class CheckTooShortAudioFiles : ICheck { private const int ms_threshold = 25; - public CheckMetadata Metadata => new CheckMetadata(CheckCategory.Audio, "Too short audio files"); + public CheckMetadata Metadata => new CheckMetadata(CheckCategory.Audio, "Too short audio files", CheckScope.Beatmapset); public IEnumerable PossibleTemplates => new IssueTemplate[] { diff --git a/osu.Game/Rulesets/Edit/Checks/CheckVideoResolution.cs b/osu.Game/Rulesets/Edit/Checks/CheckVideoResolution.cs index 6c9c44781b..f9b56059bc 100644 --- a/osu.Game/Rulesets/Edit/Checks/CheckVideoResolution.cs +++ b/osu.Game/Rulesets/Edit/Checks/CheckVideoResolution.cs @@ -14,13 +14,13 @@ using File = TagLib.File; namespace osu.Game.Rulesets.Edit.Checks { - public class CheckVideoResolution : IGeneralCheck + public class CheckVideoResolution : ICheck { private const int max_video_width = 1280; private const int max_video_height = 720; - public CheckMetadata Metadata => new CheckMetadata(CheckCategory.Resources, "Too high video resolution."); + public CheckMetadata Metadata => new CheckMetadata(CheckCategory.Resources, "Too high video resolution.", CheckScope.Beatmapset); public IEnumerable PossibleTemplates => new IssueTemplate[] { diff --git a/osu.Game/Rulesets/Edit/Checks/CheckZeroByteFiles.cs b/osu.Game/Rulesets/Edit/Checks/CheckZeroByteFiles.cs index 6853706878..85522157a5 100644 --- a/osu.Game/Rulesets/Edit/Checks/CheckZeroByteFiles.cs +++ b/osu.Game/Rulesets/Edit/Checks/CheckZeroByteFiles.cs @@ -8,9 +8,9 @@ using osu.Game.Rulesets.Edit.Checks.Components; namespace osu.Game.Rulesets.Edit.Checks { - public class CheckZeroByteFiles : IGeneralCheck + public class CheckZeroByteFiles : ICheck { - public CheckMetadata Metadata => new CheckMetadata(CheckCategory.Files, "Zero-byte files"); + public CheckMetadata Metadata => new CheckMetadata(CheckCategory.Files, "Zero-byte files", CheckScope.Beatmapset); public IEnumerable PossibleTemplates => new IssueTemplate[] { diff --git a/osu.Game/Rulesets/Edit/Checks/Components/CheckMetadata.cs b/osu.Game/Rulesets/Edit/Checks/Components/CheckMetadata.cs index cebb2f5455..cbc07f1fa3 100644 --- a/osu.Game/Rulesets/Edit/Checks/Components/CheckMetadata.cs +++ b/osu.Game/Rulesets/Edit/Checks/Components/CheckMetadata.cs @@ -15,10 +15,16 @@ namespace osu.Game.Rulesets.Edit.Checks.Components /// public readonly string Description; - public CheckMetadata(CheckCategory category, string description) + /// + /// Specifies whether this check is difficulty-specific or applies to the entire beatmapset. Set to by default. + /// + public readonly CheckScope Scope; + + public CheckMetadata(CheckCategory category, string description, CheckScope scope = CheckScope.Difficulty) { Category = category; Description = description; + Scope = scope; } } } diff --git a/osu.Game/Rulesets/Edit/Checks/Components/VerifyChecksScope.cs b/osu.Game/Rulesets/Edit/Checks/Components/CheckScope.cs similarity index 95% rename from osu.Game/Rulesets/Edit/Checks/Components/VerifyChecksScope.cs rename to osu.Game/Rulesets/Edit/Checks/Components/CheckScope.cs index 6542ffff37..8ae23befeb 100644 --- a/osu.Game/Rulesets/Edit/Checks/Components/VerifyChecksScope.cs +++ b/osu.Game/Rulesets/Edit/Checks/Components/CheckScope.cs @@ -6,7 +6,7 @@ using osu.Game.Localisation; namespace osu.Game.Rulesets.Edit.Checks.Components { - public enum VerifyChecksScope + public enum CheckScope { /// /// Run checks that apply to the current difficulty. diff --git a/osu.Game/Rulesets/Edit/Checks/Components/IGeneralCheck.cs b/osu.Game/Rulesets/Edit/Checks/Components/IGeneralCheck.cs deleted file mode 100644 index 47c9ce77e8..0000000000 --- a/osu.Game/Rulesets/Edit/Checks/Components/IGeneralCheck.cs +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. -// See the LICENCE file in the repository root for full licence text. - -namespace osu.Game.Rulesets.Edit.Checks.Components -{ - /// - /// A general check that can be run on a beatmap to verify or find issues that apply across the beatmapset itself. - /// - public interface IGeneralCheck : ICheck - { - } -} diff --git a/osu.Game/Screens/Edit/Verify/IssueList.cs b/osu.Game/Screens/Edit/Verify/IssueList.cs index 20c3426880..21a3ee39de 100644 --- a/osu.Game/Screens/Edit/Verify/IssueList.cs +++ b/osu.Game/Screens/Edit/Verify/IssueList.cs @@ -106,11 +106,11 @@ namespace osu.Game.Screens.Edit.Verify switch (verify.VerifyChecksScope.Value) { - case VerifyChecksScope.Beatmapset: + case CheckScope.Beatmapset: issues = filterByScope(generalVerifier.Run(context), true); break; - case VerifyChecksScope.Difficulty: + case CheckScope.Difficulty: var generalIssues = filterByScope(generalVerifier.Run(context), false); var rulesetIssues = rulesetVerifier?.Run(context) ?? Enumerable.Empty(); issues = generalIssues.Concat(rulesetIssues); @@ -139,7 +139,7 @@ namespace osu.Game.Screens.Edit.Verify private IEnumerable filterByScope(IEnumerable issues, bool generalOnly) { return issues.Where(issue => - generalOnly ? issue.Check is IGeneralCheck : issue.Check is not IGeneralCheck); + generalOnly ? issue.Check.Metadata.Scope == CheckScope.Beatmapset : issue.Check.Metadata.Scope == CheckScope.Difficulty); } } } diff --git a/osu.Game/Screens/Edit/Verify/ScopeSection.cs b/osu.Game/Screens/Edit/Verify/ScopeSection.cs index a1969169e0..51807d5a8f 100644 --- a/osu.Game/Screens/Edit/Verify/ScopeSection.cs +++ b/osu.Game/Screens/Edit/Verify/ScopeSection.cs @@ -15,7 +15,7 @@ namespace osu.Game.Screens.Edit.Verify [BackgroundDependencyLoader] private void load(VerifyScreen verify) { - Flow.Add(new SettingsEnumDropdown + Flow.Add(new SettingsEnumDropdown { Anchor = Anchor.CentreLeft, Origin = Anchor.CentreLeft, diff --git a/osu.Game/Screens/Edit/Verify/VerifyScreen.cs b/osu.Game/Screens/Edit/Verify/VerifyScreen.cs index a365f18068..208b33770f 100644 --- a/osu.Game/Screens/Edit/Verify/VerifyScreen.cs +++ b/osu.Game/Screens/Edit/Verify/VerifyScreen.cs @@ -19,7 +19,7 @@ namespace osu.Game.Screens.Edit.Verify public readonly Bindable InterpretedDifficulty = new Bindable(); - public readonly Bindable VerifyChecksScope = new Bindable(); + public readonly Bindable VerifyChecksScope = new Bindable(); public readonly BindableList HiddenIssueTypes = new BindableList { IssueType.Negligible };