This bypasses the immediate first issue of not being able to display
multiple instances of a beatmap on the carousel because of model
equality being baked into the structure. It inevitably poses a bunch of
*other* problems, but it's a start.
The `BeatmapDifficultyCache` handles mod changes, so handling locally is
unnecessary. By handling locally, it creates a visual issue when
adjusting mods often. Test using Ctrl +/- at song select and observing
that without this change, the star rating will flicker back to the
default due to the local re-fetch.
Was going to try and fix the stuttering/glitching when changing mods /
adjusting star rating but it's for another day.
This has no functional change, just code quality.
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
This was already being done on the old carousel (see `ApplyState`
methods) but wasn't correctly on new carousel.
Importantly, `FreeAfterUse` alone is not enough due to transitions. We
want to immediately stop calculation as soon as a panel is marked
non-visible.
There's no bindable flow for this so it's performed in `Update`. I don't
see this as an issue.
This aims to bring some conformity to naming to make it easier to
understand component structure for new components.
Renames are pulled out of the song select v2 changes and are more
relevant there due to many new classes being added.
- `V2` suffix is dropped, with v2 components being moved to a relevant V2 namespace.
- Related classes have a prefix of the area they are used.
- Experimenting with using partial/nested classes in the song select v2 implementation.
Not committing to this yet but want to see how it plays out.
- Moved base carousel components to a generic namespace to avoid confusion with actual beatmap carousel implementation.