Should be self-explanatory (feedback loop between `reloadMetadata()`
changing text box current, and text box current changing calling
`applyMetadata()`).
I was testing with mp3s ripped via Apple Music and for whatever reason
the artist was in `JoinedPerformers` rather than `JoinedAlbumArtist`.
I'm not about to go down and do research on id3 so I'm just going to try
this and see if anyone complains.
We have other safeties which mean that this is not an issue during
gameplay, but in the new `TestSceneHUDOverlayRulesetLayouts` it became
apparent that allowing this to fallback (via `null` return) could lead
to weirdness.
For easier understanding, substitute "non-user-playable" with
"autoplay".
The reason that I'm bothering to do this is that if you put autoplay on
and turn on the "Selected Mods" filter, the request will actually go
through and hit web, and web will obviously return no scores. On song
select that's *maybe* fine, even though probably unintended still, but
now with the leaderboard state being global this also means gameplay
gets impacted. Which also means that if you Ctrl-Enter to start a map in
autoplay you're not going to get any gameplay leaderboard scores at all.
Intends to close https://github.com/ppy/osu/issues/32859.
The difference between this and https://github.com/ppy/osu/pull/32942 is
that this PR takes the approach of completely moving the score sorting
behaviour to `IGameplayLeaderboardProvider` implementations.
This is going to be helpful for further work - to be precise, I am
looking to add a leaderboard position indicator in the bottom right of
multiplayer player to match stable, and having the position in the
provider will make the implementation of that *much* easier.
This PR converts the leaderboard into a full-fledged skinnable component
that can be manipulated by users at will.
Notably, this finally allows https://github.com/ppy/osu/issues/20422 to
be fixed - although it's a very mixed bag, for several reasons:
- Because of taiko players' refusal to see reason^W^W^W^Winsistence on
keeping stable behaviours related to aspect ratio treatment, I have to
assume the worst case scenario, which means than on typical
resolutions like 16:9 (or even worse, 4:3), the leaderboard will
likely not occupy as much vertical space as it probably could.
- Additionally, there's the problem of where to put the spectator list.
I settled on putting it to the right of the leaderboard, but that's
kind of janky, because the leaderboard sometimes collapses and
sometimes fully hides, leading to a very awkward space left behind. If
we had the capability to anchor elements to other elements, maybe this
could be resolved, but for now, I'm not sure what to do. I think if
some users are bothered by it they can move it where they want it. Or
delete it.
As time goes on, default skin layouts are getting more and more
complicated because of per-ruleset overrides. This was already sort of
apparent in https://github.com/ppy/osu/pull/31527, and I'm about to make
it worse, so before I do, this is a test scene that is supposed to make
it easier to check all possible combinations at a glance.