From b026309e36a2bfec75ecc893016de53472445af4 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 10 May 2024 20:32:21 +0800 Subject: [PATCH 1/3] Add setting to allow hiding all country flags There have been enough requests for this at this point to implement it. --- osu.Game/Configuration/OsuConfigManager.cs | 5 ++- .../Localisation/OnlineSettingsStrings.cs | 5 +++ .../Online/AlertsAndPrivacySettings.cs | 5 +++ osu.Game/Users/Drawables/UpdateableFlag.cs | 31 +++++++++++++++---- 4 files changed, 39 insertions(+), 7 deletions(-) diff --git a/osu.Game/Configuration/OsuConfigManager.cs b/osu.Game/Configuration/OsuConfigManager.cs index f4a4c553d8cf..affcaffe02f1 100644 --- a/osu.Game/Configuration/OsuConfigManager.cs +++ b/osu.Game/Configuration/OsuConfigManager.cs @@ -200,6 +200,8 @@ protected override void InitialiseDefaults() SetDefault(OsuSetting.EditorLimitedDistanceSnap, false); SetDefault(OsuSetting.EditorShowSpeedChanges, false); + SetDefault(OsuSetting.HideCountryFlags, false); + SetDefault(OsuSetting.MultiplayerRoomFilter, RoomPermissionsFilter.All); SetDefault(OsuSetting.LastProcessedMetadataId, -1); @@ -435,6 +437,7 @@ public enum OsuSetting TouchDisableGameplayTaps, ModSelectTextSearchStartsActive, UserOnlineStatus, - MultiplayerRoomFilter + MultiplayerRoomFilter, + HideCountryFlags, } } diff --git a/osu.Game/Localisation/OnlineSettingsStrings.cs b/osu.Game/Localisation/OnlineSettingsStrings.cs index 0660bac1725c..8e8c81cf59f0 100644 --- a/osu.Game/Localisation/OnlineSettingsStrings.cs +++ b/osu.Game/Localisation/OnlineSettingsStrings.cs @@ -79,6 +79,11 @@ public static class OnlineSettingsStrings /// public static LocalisableString DiscordPresenceOff => new TranslatableString(getKey(@"discord_presence_off"), @"Off"); + /// + /// "Hide country flags" + /// + public static LocalisableString HideCountryFlags => new TranslatableString(getKey(@"hide_country_flags"), @"Hide country flags"); + private static string getKey(string key) => $"{prefix}:{key}"; } } diff --git a/osu.Game/Overlays/Settings/Sections/Online/AlertsAndPrivacySettings.cs b/osu.Game/Overlays/Settings/Sections/Online/AlertsAndPrivacySettings.cs index e7b6aa56a8d3..7bd0829add56 100644 --- a/osu.Game/Overlays/Settings/Sections/Online/AlertsAndPrivacySettings.cs +++ b/osu.Game/Overlays/Settings/Sections/Online/AlertsAndPrivacySettings.cs @@ -28,6 +28,11 @@ private void load(OsuConfigManager config) LabelText = OnlineSettingsStrings.NotifyOnPrivateMessage, Current = config.GetBindable(OsuSetting.NotifyOnPrivateMessage) }, + new SettingsCheckbox + { + LabelText = OnlineSettingsStrings.HideCountryFlags, + Current = config.GetBindable(OsuSetting.HideCountryFlags) + }, }; } } diff --git a/osu.Game/Users/Drawables/UpdateableFlag.cs b/osu.Game/Users/Drawables/UpdateableFlag.cs index 8f8d7052e51b..136478c7bbbf 100644 --- a/osu.Game/Users/Drawables/UpdateableFlag.cs +++ b/osu.Game/Users/Drawables/UpdateableFlag.cs @@ -3,9 +3,11 @@ using System; using osu.Framework.Allocation; +using osu.Framework.Bindables; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Input.Events; +using osu.Game.Configuration; using osu.Game.Graphics.UserInterface; using osu.Game.Overlays; @@ -13,14 +15,20 @@ namespace osu.Game.Users.Drawables { public partial class UpdateableFlag : ModelBackedDrawable { + private CountryCode countryCode; + public CountryCode CountryCode { - get => Model; - set => Model = value; + get => countryCode; + set + { + countryCode = value; + updateModel(); + } } /// - /// Whether to show a place holder on unknown country. + /// Whether to show a placeholder on unknown country. /// public bool ShowPlaceholderOnUnknown = true; @@ -30,9 +38,21 @@ public CountryCode CountryCode /// public Action? Action; + private readonly Bindable hideFlags = new BindableBool(); + + [Resolved] + private RankingsOverlay? rankingsOverlay { get; set; } + public UpdateableFlag(CountryCode countryCode = CountryCode.Unknown) { CountryCode = countryCode; + hideFlags.BindValueChanged(_ => updateModel()); + } + + [BackgroundDependencyLoader] + private void load(OsuConfigManager config) + { + config.BindWith(OsuSetting.HideCountryFlags, hideFlags); } protected override Drawable? CreateDrawable(CountryCode countryCode) @@ -54,14 +74,13 @@ public UpdateableFlag(CountryCode countryCode = CountryCode.Unknown) }; } - [Resolved] - private RankingsOverlay? rankingsOverlay { get; set; } - protected override bool OnClick(ClickEvent e) { Action?.Invoke(); rankingsOverlay?.ShowCountry(CountryCode); return true; } + + private void updateModel() => Model = hideFlags.Value ? CountryCode.Unknown : countryCode; } } From e887f93eca53131304d345517b798421fe363829 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 10 May 2024 22:45:59 +0800 Subject: [PATCH 2/3] Always show placeholder on unknown / missing country --- osu.Game/Overlays/BeatmapSet/Scores/ScoreTable.cs | 1 - .../Overlays/BeatmapSet/Scores/TopScoreUserSection.cs | 1 - osu.Game/Overlays/Profile/Header/TopHeaderContainer.cs | 1 - osu.Game/Overlays/Rankings/Tables/RankingsTable.cs | 1 - osu.Game/Users/Drawables/UpdateableFlag.cs | 8 -------- 5 files changed, 12 deletions(-) diff --git a/osu.Game/Overlays/BeatmapSet/Scores/ScoreTable.cs b/osu.Game/Overlays/BeatmapSet/Scores/ScoreTable.cs index 7a817c43ebd3..a6868efb5dcd 100644 --- a/osu.Game/Overlays/BeatmapSet/Scores/ScoreTable.cs +++ b/osu.Game/Overlays/BeatmapSet/Scores/ScoreTable.cs @@ -160,7 +160,6 @@ private Drawable[] createContent(int index, ScoreInfo score) new UpdateableFlag(score.User.CountryCode) { Size = new Vector2(19, 14), - ShowPlaceholderOnUnknown = false, }, username, #pragma warning disable 618 diff --git a/osu.Game/Overlays/BeatmapSet/Scores/TopScoreUserSection.cs b/osu.Game/Overlays/BeatmapSet/Scores/TopScoreUserSection.cs index 9dc2ce204fbe..13ba9fb74b6c 100644 --- a/osu.Game/Overlays/BeatmapSet/Scores/TopScoreUserSection.cs +++ b/osu.Game/Overlays/BeatmapSet/Scores/TopScoreUserSection.cs @@ -118,7 +118,6 @@ public TopScoreUserSection() Origin = Anchor.CentreLeft, Size = new Vector2(19, 14), Margin = new MarginPadding { Top = 3 }, // makes spacing look more even - ShowPlaceholderOnUnknown = false, }, } } diff --git a/osu.Game/Overlays/Profile/Header/TopHeaderContainer.cs b/osu.Game/Overlays/Profile/Header/TopHeaderContainer.cs index c9e5068b2a76..165a576c030d 100644 --- a/osu.Game/Overlays/Profile/Header/TopHeaderContainer.cs +++ b/osu.Game/Overlays/Profile/Header/TopHeaderContainer.cs @@ -165,7 +165,6 @@ private void load(OverlayColourProvider colourProvider, OsuConfigManager configM userFlag = new UpdateableFlag { Size = new Vector2(28, 20), - ShowPlaceholderOnUnknown = false, }, userCountryContainer = new OsuHoverContainer { diff --git a/osu.Game/Overlays/Rankings/Tables/RankingsTable.cs b/osu.Game/Overlays/Rankings/Tables/RankingsTable.cs index 27d894cdc234..b9f7e443ca8e 100644 --- a/osu.Game/Overlays/Rankings/Tables/RankingsTable.cs +++ b/osu.Game/Overlays/Rankings/Tables/RankingsTable.cs @@ -99,7 +99,6 @@ protected sealed override Drawable CreateHeader(int index, TableColumn column) new UpdateableFlag(GetCountryCode(item)) { Size = new Vector2(28, 20), - ShowPlaceholderOnUnknown = false, }, CreateFlagContent(item) } diff --git a/osu.Game/Users/Drawables/UpdateableFlag.cs b/osu.Game/Users/Drawables/UpdateableFlag.cs index 136478c7bbbf..ac52599bc93b 100644 --- a/osu.Game/Users/Drawables/UpdateableFlag.cs +++ b/osu.Game/Users/Drawables/UpdateableFlag.cs @@ -27,11 +27,6 @@ public CountryCode CountryCode } } - /// - /// Whether to show a placeholder on unknown country. - /// - public bool ShowPlaceholderOnUnknown = true; - /// /// Perform an action in addition to showing the country ranking. /// This should be used to perform auxiliary tasks and not as a primary action for clicking a flag (to maintain a consistent UX). @@ -57,9 +52,6 @@ private void load(OsuConfigManager config) protected override Drawable? CreateDrawable(CountryCode countryCode) { - if (countryCode == CountryCode.Unknown && !ShowPlaceholderOnUnknown) - return null; - return new Container { RelativeSizeAxes = Axes.Both, From ea35ad46899b3a11ed026377a351f6f3d46593de Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 10 May 2024 23:26:43 +0800 Subject: [PATCH 3/3] Fix nullability inspection --- osu.Game/Users/Drawables/UpdateableFlag.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Users/Drawables/UpdateableFlag.cs b/osu.Game/Users/Drawables/UpdateableFlag.cs index ac52599bc93b..6a587212a342 100644 --- a/osu.Game/Users/Drawables/UpdateableFlag.cs +++ b/osu.Game/Users/Drawables/UpdateableFlag.cs @@ -50,7 +50,7 @@ private void load(OsuConfigManager config) config.BindWith(OsuSetting.HideCountryFlags, hideFlags); } - protected override Drawable? CreateDrawable(CountryCode countryCode) + protected override Drawable CreateDrawable(CountryCode countryCode) { return new Container {