- Use constraints for better assert messages
- Use `Editor.Undo()` rather than manual input manager synthesizing
ctrl-z (ctrl-z is not a platform agnostic binding, see macOS)
- Enforces minimum width on accuracy / max combo displays which could
previously look broken in CJK languages, thus fixing
https://github.com/ppy/osu/issues/33434. Minimum sizes were chosen to
accomodate what could be considered reasonably possible with some
leeway on top.
- Fixes hilariously broken logic that was supposed to highlight perfect
/ FC / max combo scores in green but instead did nothing due to two
disparate bugs in a single line of code.
- Extends the highlighting logic to also apply to 100% accuracy because
web does this and I think it's nice.
Closes https://github.com/ppy/osu/issues/33455.
The fundamental misunderstanding and source of confusion in
https://github.com/ppy/osu/pull/33062 is that solo wants to show
*maximum combo*, and multiplayer wants to show *current combo*, for
their own, valid reasons. Which is spelled out explicitly in this
change.
Closes https://github.com/ppy/osu/issues/33465 probably.
This reverts the replay frame de-duplication logic to what it was before
https://github.com/ppy/osu/pull/33148#discussion_r2091549388.
I don't have good reproduction steps. I tried to write a test case for
this that isn't just "press and release a key in the same frame",
thinking that maybe there was some loophole in the osu! touch input
mapper that may produce this situation artificially, but I could not in
many configurations. So I have to assume that this just *can happen*
organically.
This is terrible but I sincerely believe that anything else trying to do
this "properly" would be as terrible if not more.
- You can try to handle touch events in `MainMenu` but then you'd have
to awkwardly still manually hand them off to mouse handlers of the
logo / menu button in a weird way for them to do what they're supposed
to be doing. So any fix here would likely be smeared across `OsuLogo`
and `MainMenuButton` anyway.
- The logic in
https://github.com/ppy/osu/blob/278a372a907c22f04fe28289c305ef47d5bcef45/osu.Game/Screens/Menu/MainMenu.cs#L517-L520
fundamentally doesn't work with raw touch events because it doesn't
check for active touches (easy part) and because drawables do not
become "hovered" in the input manager from being touched (hard part)
I'm not willing to spend any more time on this.