1
0
mirror of https://github.com/ppy/osu.git synced 2024-09-22 02:07:34 +08:00
Commit Graph

1256 Commits

Author SHA1 Message Date
Dan Balasescu
12210017e4
Use the cursor position to test nested object validity 2023-12-15 17:05:14 +09:00
Dan Balasescu
6bd190c55d
Refactor all slider input into SliderInputManager 2023-12-15 16:13:32 +09:00
Dan Balasescu
599fdb0128
Add lenience for late-hit of slider heads 2023-12-15 14:14:58 +09:00
Dan Balasescu
3f67538d61
Allow slider to be tracked before its start time 2023-12-13 16:59:41 +09:00
Dean Herbert
039f8e6242
Add note about shared code 2023-11-24 10:25:23 +09:00
Dan Balasescu
7998204cfe
Fix combo/combo colouring issues around spinners 2023-11-23 13:54:05 +09:00
Dan Balasescu
a8cf105beb
Merge pull request #25342 from peppy/slider-combo-matching-2
Fix osu! (slider) combo not matching expectations when classic mod is disabled
2023-11-10 15:07:05 +09:00
Dan Balasescu
44c0442f4f
Adjust comment on Slider's judgement 2023-11-10 14:00:34 +09:00
Dean Herbert
edef31f426
Correctly propagate classic behaviour flag to tail 2023-11-09 22:03:22 +09:00
Bartłomiej Dach
5180fa669b
Merge pull request #25343 from peppy/spinner-max-sample
Continue to play spinner bonus sounds when MAX display occurs
2023-11-09 13:34:29 +01:00
Dean Herbert
92e4a8666d
Add spinnerbonus-max support and fallback to spinnerbonus 2023-11-06 18:43:47 +09:00
Dean Herbert
b219a371a9
Move sample playback logic local to avoid edge case with no bonus ticks
Can't see a better way of doing this.
2023-11-06 18:29:51 +09:00
Bartłomiej Dach
d3c5988bf1
Merge branch 'master' into slider-combo-matching-2 2023-11-03 09:11:39 +01:00
Bartłomiej Dach
a0757ce13f
Update xmldoc to match flipped flag semantics 2023-11-02 18:58:14 +01:00
Bartłomiej Dach
86ede717cb
Clean up comment 2023-11-02 18:52:47 +01:00
Dean Herbert
ac6fb386d1
Remove nested ternary 2023-11-02 23:42:52 +09:00
Dean Herbert
f0f595ca40
Continue to play spinner bonus sounds when MAX display occurs 2023-11-02 19:52:49 +09:00
Dean Herbert
818432fab4
Fix non-classic osu! combo not matching expectations 2023-11-02 19:27:55 +09:00
Dean Herbert
bf9f20705f
Simplify classic behaviour flag to only need to be specified on the slider itself 2023-11-02 18:31:29 +09:00
Dean Herbert
a7705284e7
Add better commenting around DrawableSliderHead logic 2023-11-02 18:31:28 +09:00
Dean Herbert
9af2a5930c
Remove redundant passing of Scale to nested objects 2023-11-02 17:52:10 +09:00
Dean Herbert
9c1f4b552e
Rename and invert flags for slider classic behaviours 2023-11-02 17:43:21 +09:00
Bartłomiej Dach
ad82ada030
Trim redundant comments 2023-11-02 08:18:37 +01:00
Dean Herbert
c2de03aa44
Fix all spinner ticks being alive and causing performance degradation
Regressed in https://github.com/ppy/osu/pull/25216.

The new logic will ensure at least one tick is ready for judgement.
There shouldn't be a case where more than one is needed in a single
frame.
2023-11-01 18:28:07 +09:00
Dean Herbert
a91b704d21
Fix some new nullable inspections 2023-10-30 15:10:10 +09:00
Dan Balasescu
9a0882af69
Merge pull request #25218 from peppy/better-slider-judgement-handling
Fix out-of-order judgements when missing a slider head
2023-10-27 15:50:13 +09:00
Dean Herbert
2f95e7a284
Add note about implementation being shared 2023-10-25 15:44:51 +09:00
Dean Herbert
6eafb66fdf
Fix DrawableSliderTail potentially forcing miss on head too early 2023-10-25 15:44:42 +09:00
Dean Herbert
74f794a549
Fix repeat circles on sliders not correctly getting dimmed 2023-10-25 14:01:55 +09:00
Dean Herbert
34505b3933
Merge pull request #25185 from bdach/minimum-sample-volume 2023-10-24 22:04:43 +09:00
Dean Herbert
bf313cc732
Merge pull request #25216 from bdach/spinner-tick-lifetime
Fix spinner ticks not playing samples correctly sometimes
2023-10-24 19:12:49 +09:00
Dean Herbert
5503407907
Force miss head when a tick or repeat is successfully judged 2023-10-24 19:10:57 +09:00
Dean Herbert
5eefc5323d
Standardise DrawableSliderRepeat / DrawableSliderTick judgement implementations 2023-10-24 19:10:57 +09:00
Dean Herbert
176cb0dd28
Remove unused variable 2023-10-24 19:10:57 +09:00
Dean Herbert
93147a5998
Change slider tail tick to only hold back judgement on ticks/repeats 2023-10-24 19:10:57 +09:00
Dean Herbert
68397f0e81
Remove unused using 2023-10-24 18:01:24 +09:00
Bartłomiej Dach
a0c8158033
Remove unnecessary LifetimeEnd specification 2023-10-24 10:42:03 +02:00
Bartłomiej Dach
0e5a521695
Merge pull request #25157 from peppy/spinner-anti-cheese-final
Fix spinner cheese by accounting for spin directionality
2023-10-24 08:13:32 +02:00
Bartłomiej Dach
cfd8d05fde
Fix spinner ticks not playing samples correctly sometimes
Noticed this during work on https://github.com/ppy/osu/pull/25185.

In some circumstances, it seemed that spinner bonus ticks (and mostly
them specifically) would not always play with the correct volume.
Hours of debugging later pointed at a trace at
`DrawableAudioWrapper.refreshLayoutFromParent()` not firing sometimes.

Initially I thought it to be some sort of framework bug, but after
preparing a diff and running final checks, I noticed that sometimes
the sample was being played *by a `PoolableSkinnableSample` that wasn't
loaded*. And determining why *that* is the case turned out with this
diff.

As it happens, spinner ticks get assigned a start time proportionally,
i.e. the 1st of 10 ticks is placed at 10% of the duration, the 2nd
at 20%, and so on. The start time generally shouldn't matter,
because the spinner is manually judging the ticks. *However*, the ticks
*still* receive a lifetime start / end in the same way normal objects
do, which means that in some cases they can *not be alive* when they're
hit, which means that the `DrawableAudioWrapper` flow *hasn't had
a chance to run*, and rightly so.

To fix, ensure that all spinner ticks are alive throughout the entirety
of the spinner's duration.
2023-10-23 21:29:55 +02:00
Dean Herbert
4e057b446a
Rename accumulated rotation variable 2023-10-23 16:46:15 +09:00
Dean Herbert
d0599496bd
Merge pull request #25177 from peppy/spinner-max-display 2023-10-21 11:10:09 +09:00
Bartłomiej Dach
b321d556b6
Enforce minimum gameplay sample volume of 5% 2023-10-20 15:50:13 +02:00
Dean Herbert
3fb74cb5f9
Move helper method to LegacyRulesetExtensions and stop applying rounding allowance to catch
As discussed, it isn't used in stable like this. Was a mistake.
2023-10-20 18:57:14 +09:00
Dean Herbert
2ba6286470
Merge branch 'master' into fix-circle-radius 2023-10-20 18:53:36 +09:00
Dean Herbert
686c45e21b
Merge branch 'master' into legacy-tick-test-coverage 2023-10-20 16:41:32 +09:00
Dean Herbert
3986cec949
Cap bonus score more correctly 2023-10-20 16:10:54 +09:00
Dean Herbert
f16400929d
Update bindable flow to expose every spin, even after max bonus is reached 2023-10-20 15:38:04 +09:00
Dean Herbert
3a5490892c
Centralise and repair circle size calculations game-wide 2023-10-18 19:50:42 +09:00
Dean Herbert
6ae82c5e73
Fix circle scale not matching stable due to missing multiplier
This multiplier has to exist.

I'm not guaranteeing that the rest is correct here. Should we be doing
proper cross-testing on this? Maybe, but it's going to be hard to get
right. We could likely check as far as "game pixels", but there's still
a chance that the osu-framework could be doing something weird in the
rest of the hierarchy where playfield scale is involved.

Closes https://github.com/ppy/osu/issues/25162. Tested to fix the linked
replay.
2023-10-18 18:35:14 +09:00
Dean Herbert
54da6f1048
Merge pull request #25160 from bdach/repeat-arrow-hidden-fade
Adjust slider repeat transforms to closer match stable
2023-10-18 18:03:48 +09:00