As `APIUser` implements `IEquatable`, attempting to replace an `APIUser`
with another `APIUser` with the same online ID has no effect on the user
profile overlay. This is a significant hurdle in implementing support
for viewing the profile for different rulesets, as in that case the
profile is basically reloaded for the same user, but slightly different
data.
To facilitate this, wrap `APIUser` in a new `UserProfile` class. This
will mean that the equality rules can be changed locally to the user
profile overlay without impacting other components that depend on the
`APIUser` equality rules. The ruleset that the user profile is being
displayed with will eventually be added to `UserProfile`, too.
- Use slightly different hue of green to distinguish from difficulty
control points. The colour is still not ideal, but picking
a distinctive enough hue is pretty hard.
- Place the preview time part at the bottom rather at the top.
Not sure why it was at the top; not only could it overlap with the
control points, but it also looked quite badly misaligned there
when bookmarks were displayed at the bottom.
Feels like it's easier to understand this way. The difference of the
maximum scoring values for the entire beatmap and the max values for the
part of the beatmap that has already been played represents the act of
filling the rest of the unjudged objects with maximum results.
Closes#21920.
Weirdly enough this was semeingly fixed once before in ancient times in
3891f467a3, but then unfixed again in
566e09083f. The second change is no longer
needed since the toolbar became opaque in #9447.