Make ModIcon skinnable#37552
Conversation
|
One point of concern is that anyone using legacy skins will be limited to the legacy mod icons with missing information, with no ability to toggle to the newer design even if they want to. I can see some users preferring the new ones. |
|
I can add a toggle to the |
|
I've added a toggle to the 2026-04-28.17-04-13.mp4 |
| [SettingSource(typeof(SkinnableModDisplayStrings), nameof(SkinnableModDisplayStrings.UseSkinIcons), nameof(SkinnableModDisplayStrings.UseSkinIconsDescription))] | ||
| public Bindable<bool> UseSkinIcons { get; } = new Bindable<bool>(true); | ||
|
|
||
| [SettingSource(typeof(SkinnableModDisplayStrings), nameof(SkinnableModDisplayStrings.ShowExtendedInformation), nameof(SkinnableModDisplayStrings.ShowExtendedInformationDescription))] | ||
| public Bindable<bool> ShowExtendedInformation { get; } = new Bindable<bool>(true); | ||
| public Bindable<bool> ShowExtendedInformation { get; } = new Bindable<bool>(false); |
There was a problem hiding this comment.
i believe default settings should not have changed
| [SettingSource(typeof(SkinnableModDisplayStrings), nameof(SkinnableModDisplayStrings.UseSkinIcons), nameof(SkinnableModDisplayStrings.UseSkinIconsDescription))] | |
| public Bindable<bool> UseSkinIcons { get; } = new Bindable<bool>(true); | |
| [SettingSource(typeof(SkinnableModDisplayStrings), nameof(SkinnableModDisplayStrings.ShowExtendedInformation), nameof(SkinnableModDisplayStrings.ShowExtendedInformationDescription))] | |
| public Bindable<bool> ShowExtendedInformation { get; } = new Bindable<bool>(true); | |
| public Bindable<bool> ShowExtendedInformation { get; } = new Bindable<bool>(false); | |
| [SettingSource(typeof(SkinnableModDisplayStrings), nameof(SkinnableModDisplayStrings.UseSkinIcons), nameof(SkinnableModDisplayStrings.UseSkinIconsDescription))] | |
| public Bindable<bool> UseSkinIcons { get; } = new Bindable<bool>(); | |
| [SettingSource(typeof(SkinnableModDisplayStrings), nameof(SkinnableModDisplayStrings.ShowExtendedInformation), nameof(SkinnableModDisplayStrings.ShowExtendedInformationDescription))] | |
| public Bindable<bool> ShowExtendedInformation { get; } = new Bindable<bool>(true); |
There was a problem hiding this comment.
why?
because i don't think icons from skin should be by default prioritized over the default icons from lazer
it will look silly when the default behavior is mixing skin's icons and lazer's icons
| }; | ||
|
|
||
| protected ModDisplay CreateModsContainer() => new ModDisplay | ||
| protected ModDisplay CreateModsContainer() => new ModDisplay(useSkinIcons: true) |
There was a problem hiding this comment.
also not sure about this...
maybe it's worth to do this and add a separate ModDisplay to default legacy skin's layout?
| protected ModDisplay CreateModsContainer() => new ModDisplay(useSkinIcons: true) | |
| protected ModDisplay CreateModsContainer() => new ModDisplay |
One point of concern is that anyone using legacy skins will be limited to the legacy mod icons with missing information, with no ability to toggle to the newer design even if they want to.
it should also simplify the solution to the problem pointed out by peppy, since the user will not even need to add a new mod display element to his skin, but will only need to toggle one switch in the skin editor
There was a problem hiding this comment.
intentional, should be solved by replacing hardcoded ModDisplay with a SkinnableModDisplay in HUD, see
osu/osu.Game/Screens/Play/HUDOverlay.cs
Lines 148 to 151 in 3b84429
There was a problem hiding this comment.
intentional, should be solved by replacing hardcoded
ModDisplaywith aSkinnableModDisplayin HUD, seeosu/osu.Game/Screens/Play/HUDOverlay.cs
Lines 148 to 151 in 3b84429
i already saw that, i just don't think the current approach is a good one cuz users will be forced to use icons from skin without ability to change it or avoid duplicated ModDisplay

users will be forced to use icons from skin without ability to change it
i think the only method now would be to make a new switch for this in settings, but then the logic will become more confusing
This makes
ModIconsupport skin-based icons.I've decided to enable it very conservatively for now, so currently only HUD
ModDisplayandSkinnableModDisplayhave skin-based icons enabled and everywhere else has them disabled. This can be changed pretty much at any point later for any mod icon if considered appropriate. Enabling it for every mod icon while replicates stable's behavior, looks quite silly on most screens.Extended information is hidden for skin-based mod icons because extension background doesn't work with pretty much anything except the original icons. I've kept the cog though because I think its both important to always have an indicator for nonstandard settings, and it looks decent enough.
If this is considered for merging I'll also make an osu-resources PR with all the old default skins mod icons
Tests:



HUD:
SkinnableModDisplay: