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.
This is in response to feedback in
https://osu.ppy.sh/community/forums/topics/2056547?n=1.
Upon examining the button further, there was indeed some rather weird...
almost hysteresis in how the button behaved with respect to the area on
the screen that activated it. Because of the following scourge of a
method that continues to haunt us to this day:
https://github.com/ppy/osu/blob/31487545d0d17c4337d4b4cc5d4afb3ba1dae838/osu.Game/Graphics/Containers/OsuClickableContainer.cs#L24-L25
the button would effectively only be activated by 80% of its drawable
area when it was not hovered, because of the scale applied to the
`content` container which `Container.Content` redirected to.
This is resolved here by various rearrangements of paddings and sizes
such that the clickable area of any of the buttons of the card is always
the full top or bottom half of the button area.
Also included are some cosmetic touch-ups which happened to be
convenient like folding the loading spinner into the base
`BeatmapCardIconButton`, adding loading support for the favourite
button, using BDL more, and resolving some "virtual member call in
constructor" inspections.
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`.
- Changed copy of the multiplayer spectator activity to be
ruleset-agnostic, thus I guess closing
https://github.com/ppy/osu/issues/32307 maybe? There is still the
ruleset icon in discord RPC but that one is taken from the game-global
ruleset so it's a bit more involved to fix.
- Added new activities for daily challenge screens, therefore partially
addressing https://github.com/ppy/osu/discussions/29200. I didn't add
skin editor because (a) it's not easy to make work because skin editor
isn't a screen and (b) I'm not sure we want that to begin with? Kind
of a weird one.
I've tested backwards compatibility; old server will raise exceptions
that then will be logged as unobserved by the clients when receiving the
new statuses, and an old client, when given one of the new statuses by a
new server, seems to completely ignore it. Seems pretty acceptable to
me.