- 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.
Up until now, the `UserActivity` class hierarchy contained things like
beatmap info, room info, full replay info, etc. While this was
convenient, it is soon going to be less so, as the data is sent over the
wire to the spectator server so that the user's activity can be
broadcast to other clients.
To counteract this without creating a second separate and slimmed-down
class hierarchy, slim down the `UserActivity` structure to contain the
bare minimum amounts of data such that the structures aren't overly
large and complex to serialise, but also contain enough data that they
can be used by receiving clients directly without having to do beatmap
or score lookups.
- make `UserActivity.InGame` and derive that to `InSoloGame` and `InMultiplayerGame`
- rename `SoloGame` to `InSoloGame`
- rename `MultiplayerGame` to `InMultiplayerGame`