Commit Graph

4964 Commits

Author SHA1 Message Date
Dean Herbert 2f7d38d98b Merge branch 'master' into fix-editor-blueprint-input-extension 2023-07-25 18:14:02 +09:00
Dean Herbert b58354ac64 Fix playfield getting cut off (again) at tall aspect ratios 2023-07-21 15:20:20 +09:00
Dean Herbert 4a6a5b174a Fix editor blueprints being selectable for too long when hit markers are enabled
Addresses https://github.com/ppy/osu/discussions/24163.
2023-07-19 14:59:22 +09:00
Dean Herbert dd8774a640 Vertically centre the editor osu! playfield 2023-07-14 13:21:28 +09:00
Bartłomiej Dach d5912165e9
Merge branch 'master' into results-screen-component-metrics 2023-07-13 19:53:52 +02:00
Dean Herbert 9ad63bae37 Add missing heading for statistics section in results screen 2023-07-13 18:50:52 +09:00
Dean Herbert 947b40149f Adjust metrics of `SimpleStatisticTable` 2023-07-13 18:45:32 +09:00
Dean Herbert 4f089eb5a5 Adjust metrics of `AccuracyHeatmap` 2023-07-13 18:30:57 +09:00
Dean Herbert 87570ed238 Fix incorrect slider stacking on very old beatmaps
Closes https://github.com/ppy/osu/issues/24185

The stable code has had a bug in this logic forever. So we'll need to
reimplement the bug.

Basically, sliders have to have `UpdateCalculations` run in order to
have a correct `Position2` and `EndTime`, but this wasn't being called
in the inner loop before use of `EndTime` at
1531237b63/osu!/GameplayElements/HitObjectManager.cs#L1813.

To fix this, we use `StartTime` in the inner loop to reproduce the bug.
2023-07-12 17:35:03 +09:00
Bartłomiej Dach 7be5e0e978
Implement back-and-forth conversion of `ModScoreV2` and `LegacyMods` 2023-07-09 16:15:21 +02:00
Bartłomiej Dach e9ecad9839
Add failing test cases covering NaN-timing-point sliders 2023-07-08 23:24:38 +02:00
Dean Herbert e0fc97bb93 Replace various local implementations of rewinding checks with new property 2023-07-07 15:21:24 +09:00
Dean Herbert 1629024111 `ILegacyScoreProcessor` -> `ILegacyScoreSimulator` 2023-07-04 17:32:54 +09:00
Dan Balasescu c6ad184d94 Move Ruleset method to ILegacyRuleset interface 2023-06-29 17:24:37 +09:00
Dan Balasescu 09bc8e45de Refactoring 2023-06-28 16:14:32 +09:00
Dan Balasescu 5f350aa66f Fix float division
Firstly, this is intended to be a float division.

Secondly, dividing integers by 0 results in an exception, but dividing
non-zero floats by 0 results in +/- infinity which will be clamped to
the upper range.
In particular, this occurs when the beatmap has 1 hitobject (0 drain
length).
2023-06-27 17:14:35 +09:00
Dan Balasescu a9c65d200a Initial conversion of scores 2023-06-26 22:19:01 +09:00
Dan Balasescu e1d723a2cc Merge branch 'master' into diffcalc-total-scorev1 2023-06-26 14:32:14 +09:00
Bartłomiej Dach e3a89a6273
Fix remaining obvious CI inspections 2023-06-24 16:07:01 +02:00
Dan Balasescu 5fadadc3d0 Merge branch 'master' into diffcalc-total-scorev1 2023-06-24 02:46:15 +09:00
Dean Herbert df5b389629 Manual fixes to reduce warnings to zero 2023-06-24 01:52:53 +09:00
Dan Balasescu 06565871d6 Add flag to disable computing legacy scoring values 2023-06-24 01:03:18 +09:00
Dean Herbert 0ab0c52ad5 Automated pass 2023-06-24 01:00:03 +09:00
Dan Balasescu 87447f41d0 Fix incorrect calculation of difficulty 2023-06-24 00:58:45 +09:00
Bartłomiej Dach 6d32206a08
Fix slider tails receiving wrong colours
Only visually apparent on legacy skins.
2023-06-19 17:47:01 +02:00
Dan Balasescu bfa449e47a Adjust attribute data 2023-06-19 21:38:13 +09:00
Dean Herbert 0900cebc0d Avoid doing expensive colour fetch operation every update 2023-06-19 20:12:17 +09:00
Dean Herbert aa96fefae2 Merge branch 'master' into snap-colour-mod 2023-06-19 20:01:36 +09:00
Dan Balasescu 0844a21a51 Merge branch 'master' into diffcalc-total-scorev1 2023-06-15 19:33:29 +09:00
Dan Balasescu b9f485b551 Merge classes + split out 2023-06-13 02:32:54 +09:00
Dan Balasescu 446807e7f6 Add combo score / bonus score attributes 2023-06-12 23:00:29 +09:00
Dan Balasescu 024a64e52c
Merge pull request #23866 from bdach/fix-judgement-processing-order
Fix not being able to receive full score for extremely short sliders with repeats
2023-06-12 15:04:08 +09:00
Dean Herbert bddb91dc0a Adjust adjustment to 1px based on review feedback
Also split out `Size` variable for clarity
2023-06-12 14:24:39 +09:00
Dean Herbert 03a5b701e9
Fix incorrect inline comment
Co-authored-by: Bartłomiej Dach <dach.bartlomiej@gmail.com>
2023-06-12 14:20:54 +09:00
Bartłomiej Dach 7e5533e205
Fix not being able to receive full score for extremely short sliders with repeats
Closes #23862.

Score V2 is a scoring algorithm, which aside from the raw numerical
values of each judgement, incorporates a combo component, wherein each
judgement's "combo score" is derived from both the raw numerical value
of the object and the current combo after the given judgement. In
particular, this means that Score V2 is sensitive to the _order_ of
judging objects, as if two objects with the same start time are judged
using different ordering, they can end up having a different "combo
score".

The issue that this change is fixing is an instance of one such
reordering. Upon inspection, it turned out that the simulated autoplay
run, which is used to determine max possible score so that it can be
standardised to 1 million again, was processing a slider repeat before a
slider tail circle, while actual gameplay was processing the same slider
repeat _after_ the slider tail circle.

The cause of that behaviour is unfortunately due to `LegacyLastTick`.
The sliders which cause the issue are extremely short. Stable had a
behaviour, in which to provide leniency, slider tails were artificially
offset back by 36ms. However, if the slider is not long enough to make
this possible, the last tick is placed in the middle of the slider. If
that slider also happens to have exactly 1 repeat, then this means that
the last tick and the repeat have the same time instant.

Because of the time equality, what begins to matter now is the _order_
of processing the elements of the drawable slider in the hierarchy. For
the purposes of legacy skins, tail circles were moved below ticks in
fce3eacd7d - but in this particular case,
it means that the order of processing the slider elements is now
inadvertently inverted, causing the entire debacle.

While the fact that scoring depends on order of processing of visuals is
suboptimal, there isn't a great way to address this without significant
restructuring. Due to the structure of processing judgements currently
in place, in which each judgement is processed independently from others
by its corresponding drawable hit object, this is probably the best that
can be done for the time being at least.
2023-06-10 12:14:08 +02:00
Dan Balasescu 4b8c4bd503 Fix black jaggies around argon hitcircles 2023-06-10 01:54:13 +09:00
Dean Herbert 95ad18ed2e Reduce the radius of note-to-note snapping in osu! editor
Stable uses `0.15f`, but for whatever reason that feels too large still.

I've ballparked this.

Addresses https://github.com/ppy/osu/discussions/23806.
2023-06-08 17:44:33 +09:00
John Biddle d07437f810 Added recommendations from bdach:
Fixed null checking in ApplyToDrawableHitObject
Renamed mod to "Synesthesia"
Moved to the "Fun" mod category
2023-06-08 00:52:28 -07:00
Dan Balasescu d10c63ed2d Fix difficulty calculation when mods are involved 2023-06-08 16:29:34 +09:00
Salman Ahmed 62cb6a98ca Remove redundant nullable suppression directives 2023-06-07 08:20:41 +03:00
Dean Herbert 247fa088db Add `IHasNoTimedInputs` interface to scope change further 2023-06-06 22:22:42 +09:00
Dan Balasescu 77c745cc94 "TotalScoreV1" -> "LegacyTotalScore" 2023-06-06 17:25:28 +09:00
Bartłomiej Dach 331e90f720
Merge branch 'master' into tidy-results-grid-usage 2023-06-03 19:45:23 +02:00
Dean Herbert a5fd833214 Fix "bubbles" mod not adding pool to hierarchy (and constructing too early) 2023-06-02 23:01:03 +09:00
Dan Balasescu e402c6d2b4 Write max combo attribute from base class 2023-06-02 21:53:25 +09:00
Dan Balasescu 02111e3854 Implement ScoreV1 calculation for OsuRuleset 2023-06-02 17:36:45 +09:00
Dean Herbert 985604fab5 Return `StatisticItem`s rather than `StatisticRow`s from ruleset
There were no usages of more than one column being provided per row, so
it seemed like unnecessarily complexity. I'm currently trying to reduce
complexity so we can improve the layout of the results screen, which
currently has up to three levels of nested `GridContainer`s.

Of note, I can't add backwards compatibility because the method
signature has not changed in `Ruleset` (only the return type). If we do
want to keep compatibility with other rulesets, we could designate a new
name for the updated method.
2023-06-01 14:35:15 +09:00
Dean Herbert e830b96e61 Add back required override to make `AccuracyHeatmap` work 2023-06-01 13:26:47 +09:00
Bartłomiej Dach aaf50c47a7
Merge pull request #23696 from peppy/fix-autopilot-ripples
Fix cursor ripples appearing in a weird place when "autopilot" mod is enabled
2023-05-30 23:29:30 +02:00
John ed850196d9 Reverted to applying the color change in OnUpdate, removed EnableComboColour flag from DrawableHitObject.cs 2023-05-30 01:43:08 -07:00