From 51c4e073d1c1f380ef9909d9d5520344b6d5b50d Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 20 Mar 2025 16:38:37 +0900 Subject: [PATCH 1/3] Disallow tagging beatmaps when playing as convert --- osu.Game/Screens/Ranking/Statistics/StatisticsPanel.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/osu.Game/Screens/Ranking/Statistics/StatisticsPanel.cs b/osu.Game/Screens/Ranking/Statistics/StatisticsPanel.cs index 758eabcf2e..9a46f8091a 100644 --- a/osu.Game/Screens/Ranking/Statistics/StatisticsPanel.cs +++ b/osu.Game/Screens/Ranking/Statistics/StatisticsPanel.cs @@ -238,6 +238,8 @@ namespace osu.Game.Screens.Ranking.Statistics if ( // We may want to iterate on this condition AchievedScore.Rank >= ScoreRank.C + // Tags are only relevant to the original ruleset of the map, so disallow tagging when playing as a convert. + && AchievedScore.Ruleset.OnlineID == AchievedScore.BeatmapInfo!.Ruleset.OnlineID ) { yield return new StatisticItem("Tag the beatmap!", () => new UserTagControl(newScore.BeatmapInfo) From 36ba9dbc8cde5d37e4c74afa32340da0034657a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Dach?= Date: Thu, 20 Mar 2025 10:32:40 +0100 Subject: [PATCH 2/3] Add visual test coverage for no convert conditional --- .../Ranking/TestSceneStatisticsPanel.cs | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/osu.Game.Tests/Visual/Ranking/TestSceneStatisticsPanel.cs b/osu.Game.Tests/Visual/Ranking/TestSceneStatisticsPanel.cs index df65023303..f82b32167c 100644 --- a/osu.Game.Tests/Visual/Ranking/TestSceneStatisticsPanel.cs +++ b/osu.Game.Tests/Visual/Ranking/TestSceneStatisticsPanel.cs @@ -24,6 +24,7 @@ using osu.Game.Online.API.Requests; using osu.Game.Online.API.Requests.Responses; using osu.Game.Rulesets; using osu.Game.Rulesets.Difficulty; +using osu.Game.Rulesets.Mania; using osu.Game.Rulesets.Mods; using osu.Game.Rulesets.Objects; using osu.Game.Scoring; @@ -243,6 +244,28 @@ namespace osu.Game.Tests.Visual.Ranking }); } + [Test] + public void TestTaggingConvert() + { + var score = TestResources.CreateTestScoreInfo(); + score.Ruleset = new ManiaRuleset().RulesetInfo; + + AddStep("load panel", () => + { + Child = new PopoverContainer + { + RelativeSizeAxes = Axes.Both, + Child = new StatisticsPanel + { + RelativeSizeAxes = Axes.Both, + State = { Value = Visibility.Visible }, + Score = { Value = score }, + AchievedScore = score, + } + }; + }); + } + private void loadPanel(ScoreInfo score) => AddStep("load panel", () => { Child = new StatisticsPanel From a4e2b87bdd74b14217161d64b16f6aacd9ff2cc1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Dach?= Date: Thu, 20 Mar 2025 10:42:18 +0100 Subject: [PATCH 3/3] Use better copy when preventing beatmap tagging after they've been played converted --- .../Ranking/Statistics/StatisticsPanel.cs | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/osu.Game/Screens/Ranking/Statistics/StatisticsPanel.cs b/osu.Game/Screens/Ranking/Statistics/StatisticsPanel.cs index 9a46f8091a..9ead9ce91c 100644 --- a/osu.Game/Screens/Ranking/Statistics/StatisticsPanel.cs +++ b/osu.Game/Screens/Ranking/Statistics/StatisticsPanel.cs @@ -235,12 +235,16 @@ namespace osu.Game.Screens.Ranking.Statistics && newScore.BeatmapInfo!.OnlineID > 0 && api.IsLoggedIn) { - if ( - // We may want to iterate on this condition - AchievedScore.Rank >= ScoreRank.C - // Tags are only relevant to the original ruleset of the map, so disallow tagging when playing as a convert. - && AchievedScore.Ruleset.OnlineID == AchievedScore.BeatmapInfo!.Ruleset.OnlineID - ) + string? preventTaggingReason = null; + + // We may want to iterate on the following conditions further in the future + + if (AchievedScore.Ruleset.OnlineID != AchievedScore.BeatmapInfo!.Ruleset.OnlineID) + preventTaggingReason = "Play the beatmap in its original ruleset to contribute to beatmap tags!"; + else if (AchievedScore.Rank < ScoreRank.C) + preventTaggingReason = "Set a better score to contribute to beatmap tags!"; + + if (preventTaggingReason == null) { yield return new StatisticItem("Tag the beatmap!", () => new UserTagControl(newScore.BeatmapInfo) { @@ -256,7 +260,7 @@ namespace osu.Game.Screens.Ranking.Statistics RelativeSizeAxes = Axes.X, AutoSizeAxes = Axes.Y, TextAnchor = Anchor.Centre, - Text = "Set a better score to contribute to beatmap tags!", + Text = preventTaggingReason, }); } }