I considered having this just be a straight guard followed by an
early-return, but if that guard ever actually gets hit, things are going
to be severely broken all over, and un-breaking them at that point will
be very annoying, so just going to cross fingers and hope this can be an
assertion forevermore instead.
This is a minimal implementation in order to keep moving forward.
For simplicity I've copied over the old implementation verbatim. Note
that this is beatmap*set* based randomisation, which means that when
panels are split up by difficulty, it is still randomising by set (with
the difficulty choice being left up to the user recommendation system).
I think this is what we want, but if it isn't, any changes can come
later.
This changes the flow of actions (yet again.. sorry) to standardise what
is shown on the beatmap options button in the footer and the context
menus.
This is something I wanted from the start – for devices where right
click is not available, it's always preferable to have a second method
of accessing actions which isn't the context menu.
Collection actions are missing for now, as they will come in a second
pass which includes tidying things up further.
Fix formatting
Duplicate menu items between implementations
Addresses https://github.com/ppy/osu/discussions/28301.
No sound effects on click because right click handling is weird. I would
have liked to call `DeselectAll` on the mod select overlay, but this
doesn't work unless it's displayed due to queued operation.
This also fixes code running in `Update` which shouldn't be, by
consuming the new `NewItemsPresented` callback.
Fields and properties are renamed to knock some sense into things (was
previously called two or three different things).