Remove poorly-fitted "legacy combo counter" abstraction #29838
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This is probably going to be hell to review, and I apologise for this, but I believe it is best to course correct now before this gets worse.
The long and short of it is that #26254, namely probably somewhere around 78cb6b6, regressed the "default legacy combo counter" display logic. When reviewing the code for #29811 and attempting to determine why, I found the code quality of the counters frankly shocking, with stuff like this:
osu/osu.Game/Skinning/LegacyDefaultComboCounter.cs
Lines 54 to 61 in fd887b2
osu/osu.Game/Skinning/LegacyComboCounter.cs
Lines 137 to 143 in fd887b2
This, dear reader, is a scheduled base call which mutates internal state in a manner that seems inconsistent with previous code and frankly arbitrary, which to me is NOPE NOPE NOPE territory. I want stuff like that gone from the codebase as soon as possible because it is not sane and we have lived several examples of this already.
To that end, this PR reverts
LegacyDefaultComboCounter
to what it was at e7b4a2f, fixing the issue, and moves enough of the machinery that used to live in the abstract eldritch entity intoLegacyManiaComboCounter
so that it can function standalone.Had it not been for this review thread I probably would have searched for a more moderate resolution, but this being brought up already at review time definitely has me wanting to nip this in the bud before the abstract entity grows to inscrutability.