Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add setting to allow hiding all country flags #28144

Merged
merged 3 commits into from
May 13, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion osu.Game/Configuration/OsuConfigManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down Expand Up @@ -435,6 +437,7 @@ public enum OsuSetting
TouchDisableGameplayTaps,
ModSelectTextSearchStartsActive,
UserOnlineStatus,
MultiplayerRoomFilter
MultiplayerRoomFilter,
HideCountryFlags,
}
}
5 changes: 5 additions & 0 deletions osu.Game/Localisation/OnlineSettingsStrings.cs
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,11 @@ public static class OnlineSettingsStrings
/// </summary>
public static LocalisableString DiscordPresenceOff => new TranslatableString(getKey(@"discord_presence_off"), @"Off");

/// <summary>
/// "Hide country flags"
/// </summary>
public static LocalisableString HideCountryFlags => new TranslatableString(getKey(@"hide_country_flags"), @"Hide country flags");

private static string getKey(string key) => $"{prefix}:{key}";
}
}
1 change: 0 additions & 1 deletion osu.Game/Overlays/BeatmapSet/Scores/ScoreTable.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
1 change: 0 additions & 1 deletion osu.Game/Overlays/BeatmapSet/Scores/TopScoreUserSection.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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,
},
}
}
Expand Down
1 change: 0 additions & 1 deletion osu.Game/Overlays/Profile/Header/TopHeaderContainer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -165,7 +165,6 @@ private void load(OverlayColourProvider colourProvider, OsuConfigManager configM
userFlag = new UpdateableFlag
{
Size = new Vector2(28, 20),
ShowPlaceholderOnUnknown = false,
},
userCountryContainer = new OsuHoverContainer
{
Expand Down
1 change: 0 additions & 1 deletion osu.Game/Overlays/Rankings/Tables/RankingsTable.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,11 @@ private void load(OsuConfigManager config)
LabelText = OnlineSettingsStrings.NotifyOnPrivateMessage,
Current = config.GetBindable<bool>(OsuSetting.NotifyOnPrivateMessage)
},
new SettingsCheckbox
{
LabelText = OnlineSettingsStrings.HideCountryFlags,
Current = config.GetBindable<bool>(OsuSetting.HideCountryFlags)
},
};
}
}
Expand Down
37 changes: 24 additions & 13 deletions osu.Game/Users/Drawables/UpdateableFlag.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,43 +3,55 @@

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;

namespace osu.Game.Users.Drawables
{
public partial class UpdateableFlag : ModelBackedDrawable<CountryCode>
{
private CountryCode countryCode;

public CountryCode CountryCode
{
get => Model;
set => Model = value;
get => countryCode;
set
{
countryCode = value;
updateModel();
}
}

/// <summary>
/// Whether to show a place holder on unknown country.
/// </summary>
public bool ShowPlaceholderOnUnknown = true;

/// <summary>
/// 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).
/// </summary>
public Action? Action;

private readonly Bindable<bool> hideFlags = new BindableBool();

[Resolved]
private RankingsOverlay? rankingsOverlay { get; set; }

public UpdateableFlag(CountryCode countryCode = CountryCode.Unknown)
{
CountryCode = countryCode;
hideFlags.BindValueChanged(_ => updateModel());
}

protected override Drawable? CreateDrawable(CountryCode countryCode)
[BackgroundDependencyLoader]
private void load(OsuConfigManager config)
{
if (countryCode == CountryCode.Unknown && !ShowPlaceholderOnUnknown)
return null;
config.BindWith(OsuSetting.HideCountryFlags, hideFlags);
}

protected override Drawable CreateDrawable(CountryCode countryCode)
{
return new Container
{
RelativeSizeAxes = Axes.Both,
Expand All @@ -54,14 +66,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;
}
}
Loading