Bartłomiej Dach
efe6bb25b1
Refactor result application around again to remove requirement for fields
...
Co-authored-by: Dean Herbert <pe@ppy.sh>
2024-02-05 13:21:01 +01:00
Chandler Stowell
93bd3ce5ae
update DrawableHitCircle.ApplyResult
to pass this
to its callback
2024-01-25 11:25:41 -05:00
Chandler Stowell
d2775680e6
use stack to pass action state when applying hit results
...
this removes closure allocations
2024-01-24 13:13:45 -05:00
Salman Ahmed
57b2d018a9
Fix slider sometimes not updating relative anchor position
2024-01-22 02:07:32 +03:00
OliBomby
96ffe8e737
change wording
2024-01-15 12:51:08 +01:00
OliBomby
86382f4408
Clarify comment
2024-01-15 12:49:40 +01:00
OliBomby
fca9b1f536
Fix so it reacts to PathVersion with Scheduler
2024-01-13 12:50:39 +01:00
Dean Herbert
5970a68e2d
Use invalidation based logic for child anchor position updpates in DrawableSlider
2024-01-09 14:17:33 +09:00
Dean Herbert
962c8ba4ac
Reset child anchor position cache on hitobject position change
2024-01-07 20:55:28 +09:00
Dean Herbert
5cc4a586ac
Avoid iteration over NestedHitObjects
in silder's Update
unless necessary
2024-01-07 14:31:22 +09:00
Dean Herbert
35eff639cb
Remove unnecessary second iteration over NestedHitObjects
2024-01-07 14:31:22 +09:00
rushiiMachine
cf39bb7a18
Fix spinner max bonus not respecting ISamplePlaybackDisabler
...
The spinner max bonus was loaded through SkinnableSound instead of PausableSkinnableSound, leading to it not respecting the case where sample playback is globally disabled through ISamplePlaybackDisabler, and can be easily heard in situations like during the catchup period after seeking using the ArgonSongProgressBar with song volume at 0
2023-12-27 12:55:49 -08:00
Bartłomiej Dach
7e557152fb
Fix relax mod not considering full follow area radius when automatically holding sliders
...
Closes https://github.com/ppy/osu/issues/25947 .
Regressed in https://github.com/ppy/osu/pull/25776 with the changes to
`DrawableSliderBall`.
I would have liked to include tests, but relax mod is a bit untestable,
because it disengages completely in the presence of a replay:
7e09164d70/osu.Game.Rulesets.Osu/Mods/OsuModRelax.cs (L49-L58)
Additionally, `RulesetInputManager` disengages completely from parent
inputs when there is a replay active:
7e09164d70/osu.Game/Rulesets/UI/RulesetInputManager.cs (L116)
which means there is really no easy way to control positional input
while still having relax logic work. So I'm hoping the fix could be
considered obvious enough to not require test coverage.
2023-12-22 12:50:42 +01:00
Dan Balasescu
6b4b2a57fc
Expose only as one method
2023-12-21 14:58:23 +09:00
Dan Balasescu
4e3b994142
Relocate HitResult numeric score to ScoreProcessor
2023-12-21 14:52:31 +09:00
Dean Herbert
9b383e3276
Add support for showing tick misses
2023-12-20 20:23:19 +09:00
Dan Balasescu
fe5e071e70
Fix sliding sample playing before Slider's start time
2023-12-19 17:01:52 +09:00
Dan Balasescu
2b33aec124
Require slider head to be judged before ticks
2023-12-17 21:26:48 +09:00
Dan Balasescu
fddfa33e49
Fix 1-frame issues due to referencing external value
2023-12-17 20:19:25 +09:00
Dan Balasescu
9b02bd712b
Only track if in slider ball after any ticks missed
2023-12-17 20:12:02 +09:00
Dan Balasescu
fbe48d7be8
Fix tail being missed too early
2023-12-17 20:11:15 +09:00
Dan Balasescu
f77884b62f
Only hit passed-through ticks if none were missed
2023-12-17 19:57:48 +09:00
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
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
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
a7705284e7
Add better commenting around DrawableSliderHead
logic
2023-11-02 18:31:28 +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
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