Resolves one part of
https://github.com/ppy/osu/discussions/32568#discussioncomment-12612928
A few caveats:
- Layout is slightly different than web intentionally. Web does things
that I think will be difficult to reproduce or just plain look bad in
client, such as:
- On web, the metadata info box has 200px min height and 300px max
height. I just hardcoded 300 units.
- On web, user tags and mapper tags are individually scrollable, and
the amount of space taken up by each is calculated in a way that
is - as far as I can tell - indeterminate, and probably influenced
by some flexbox magic. I just made the entire thing scrollable
instead.
- Because song select shares controls with the beatmap set overlay, now
song select says "Mapper Tags" in the header instead of just "Tags"
too. I think this is fine, because people asked for user tags to be
shown in song select too.
- Search query syntax lifted from
https://github.com/ppy/osu-web/pull/12047.
- Using hardcoded English strings for now, will update to the
translations after the next osu-resources localisations update.
This is in response to
https://osu.ppy.sh/community/forums/topics/2058708?n=5, wherein the user
is having a problem with joining multiplayer, but I have basically no
diagnosing capabilities, because the logs are all
2025-03-26 18:57:57 [error]: Failed to join multiplayer room:
2025-03-26 18:58:40 [error]: Failed to join multiplayer room:
2025-03-26 18:58:41 [error]: Failed to join multiplayer room:
2025-03-26 18:58:41 [error]: Failed to join multiplayer room:
which appears to originate from
https://github.com/ppy/osu/blob/c82eaafe98d96b9f49a4a7f168ef5c484e67d76f/osu.Game/Screens/OnlinePlay/Multiplayer/MultiplayerLoungeSubScreen.cs#L91
Now, as far as I can tell, there are two possibilities here:
1. The exception's `Message` is null or empty. That's not exactly great
or typical, but sure, this could possibly happen - in which case the
error logging is silently eating whatever little relevant detail
there is left to use.
2. The exception is *actually* `null` itself, and we're in the X Files.
This PR is intending to defend against (1).
In examining the logging further, I also spotted the following issues:
- In the single path that specifies a custom failure handler (which is
`DrawableLoungeRoom` which handles joining a passworded room), the
custom failure handler being present means that the error would be
presented to the user, but it would not be logged. At all.
- In playlists, if the exception for whatever reason had an empty
message, an empty notification would get posted. And in general to me
it feels a bit dodgy to be directly presenting exception notifications
to users without any preamble, hence the added "Failed to open
playlist" prefix.
Addresses
https://github.com/ppy/osu/discussions/32568#discussioncomment-12610577.
No changes in criteria (yet?), just allowing locally imported plays to
count the same way as full beatmap completion does.
The test scene is a bit rough / semi-manual but dealing with score
imports is a bit of a pain in general. The way to semi-manually test
with the test scene is to import a subset of scores, then recreate the
statistics panel, and observe behaviour. I'm not sure it's worth it to
be putting subscriptions in there, so the full recreation of the panel
is necessary.
Removes storage of `selectedBeatmap` that was referenced through
multiple class-level methods.
To expound a bit, this structure felt better (or otherwise passing
`APIBeatmap` through methods) alongside removal of the `#nullable
disable`, otherwise each method would check `selectedBeatmap != null`.