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
Dean Herbert
92524d4299
Remove incorrect plural from variable
2023-10-18 17:44:01 +09:00
Dan Balasescu
939b55020c
Merge branch 'master' into legacy-tick-test-coverage
2023-10-18 15:21:31 +09:00
Bartłomiej Dach
f3cda58474
Fix legacy slider repeats becoming much too large on hit
...
They had scale transforms applied to them in two places: the actual
legacy pieces themselves (esp. `LegacyHitCirclePiece`), and on the
`DrawableSliderRepeat` level.
This change moves all of the scale transforms to the skinnable pieces.
Argon and triangles have received a copy of the previous logic each,
so behaviour on those skins should not change.
2023-10-17 14:47:44 +02:00
Bartłomiej Dach
30e5f47007
Instantly fade out slider repeats when hidden is active
2023-10-17 14:15:21 +02:00
Dean Herbert
4f0d55e1a9
Clean up code and add xmldoc and inline doc
2023-10-17 20:24:23 +09:00
Dean Herbert
af7180a5b5
Add SpinnerSpinHistory
and tests
2023-10-17 20:10:22 +09:00
Dean Herbert
5341a335a6
Bypass Parent
nullability checks for now
2023-10-17 17:48:45 +09:00
Dean Herbert
0bb95cfa88
Fix incorrect initial rotation transfer value
...
Should have been removed as part of https://github.com/ppy/osu/pull/24360 .
2023-10-16 19:34:55 +09:00
Dean Herbert
10bab61441
Tidy up lastAngle
usage and add assertion of maximum delta
2023-10-16 19:34:22 +09:00
Dean Herbert
159b24acf7
Rename RateAdjustedRotation
to TotalRotation
2023-10-16 18:25:03 +09:00
Dan Balasescu
84be714d6b
Fix large instantaneous delta on first frame
...
Happens when the first update frame comes in before any mouse input.
2023-10-16 18:17:11 +09:00
Bartłomiej Dach
8a4c2624bd
Merge branch 'master' into fix-hr-cs-mania-adjustment
2023-10-13 16:08:54 +02:00
Dean Herbert
0b64852181
Limit sliderscorepoint
to hitcicle dimensions
...
You'd never use anything above this unless crazy.
2023-10-13 15:43:20 +09:00
Dean Herbert
17df2fdf01
Restrict followpoint
size
...
See https://github.com/ppy/osu/issues/24940#issuecomment-1760980461 .
2023-10-13 15:42:49 +09:00
Dean Herbert
a3b21281e6
Add reordering support to match existing diffcalc 100%
2023-10-13 14:25:38 +09:00
Dean Herbert
3849b11644
Fix "Hard Rock" mod affecting CS/AR in osu!mania
...
Closes https://github.com/ppy/osu/issues/25090 .
Not sure if there are other exceptions we should account for here.
2023-10-12 19:48:47 +09:00
Dean Herbert
5ffc25c8e8
Fix potential failure when slider has no ticks
2023-10-12 03:19:43 +09:00
Dean Herbert
63843c79c3
Amend diffcalc to use something closer to the original calculation for now
2023-10-11 21:12:04 +09:00
Dean Herbert
0ca05d986d
Merge pull request #25067 from bdach/approach-circle-cutoff
...
Adjust approach circle maximum size limits for backwards compatibility
2023-10-10 17:05:16 +09:00
Bartłomiej Dach
71c4b138fb
Merge branch 'master' into fix-legacy-score-multipliers-2
2023-10-09 10:53:14 +02:00
Dean Herbert
ad6f04cfb0
Hotfix approach circle cutoff
2023-10-09 10:16:57 +02:00
Bartłomiej Dach
96bb8ed150
Apply feedback regarding maximum osu! element sizings
...
- `default-N` number sprites maximum size increased by 1.25x to a total
of 320x320 to counteract the 0.8x factor applied onto them when
displayed on a hitcircle.
- `sliderb` and parts' maximum size increased to 384x384, to match
`sliderfollowcircle`, as the two are apparently sometimes used
interchangeably by skinners to achieve different visual effects.
2023-10-05 22:33:49 +02:00
Bartłomiej Dach
0ae4a0f11f
Adjust gameplay element maximum size limits for backwards compatibility
...
The new limits were chosen by sampling across over 4000 skins. The
methodology for doing so is described in the following gist:
https://gist.github.com/bdach/6228ba41d128b23d1f89142f404108a3
2023-10-05 20:37:10 +02:00
Dean Herbert
658b6a166f
Fix regression in Tracking
state handling
...
It turns out multiple components depend on `Tracking` eventually
becoming `false` at the end of a slider. With my previous changes, this
was no longer the case (as could be seen by the legacy cursor particles
test failure, and heard by slider slide taking too long to stop).
2023-10-04 16:11:40 +09:00
Dean Herbert
d14d885d19
Add test coverage of very fast slider
2023-10-04 14:58:05 +09:00
Dan Balasescu
48209872bf
Fix spinner requirements being susceptible to FP precision
2023-10-04 13:53:33 +09:00
Dean Herbert
9361b1879c
Add note about early return in DrawableSliderBall.Update
2023-10-04 13:45:26 +09:00
Dean Herbert
8d91991214
Fix difficulty calculation not correct handling slider leniency anymore
2023-10-04 13:45:26 +09:00
Dan Balasescu
854b797ab5
Merge branch 'master' into legacy-tick-not-so-legacy-after-all
2023-10-04 10:52:13 +09:00
Dan Balasescu
a120ea8464
Merge branch 'master' into fix-legacy-score-multipliers-2
2023-10-04 01:19:33 +09:00
Dean Herbert
69ae370e82
Merge branch 'master' into legacy-tick-test-coverage
2023-10-03 19:37:32 +09:00
Dean Herbert
c4992d3479
Fix one case of difficulty calculation no longer accounting for leniency
2023-10-03 19:37:13 +09:00
Dean Herbert
70ec4b060a
Rename weird diffcalc parameter name
2023-10-03 19:20:39 +09:00
Dean Herbert
9e1fec0213
Fix potential out-of-order tail and ticks
2023-10-03 18:52:20 +09:00
Dean Herbert
9a3c21c320
Change comparison of timeOffset
to greater-than (in line with others)
...
Co-authored-by: Bartłomiej Dach <dach.bartlomiej@gmail.com>
2023-10-03 18:12:55 +09:00
Dean Herbert
0086759395
Fix slider tracking state being set to false
after slider end
2023-10-03 18:12:55 +09:00
Dean Herbert
16fcc4eaaa
Fix incorrect anchor/origin causing rotation to look wrong on legacy skin arrows
2023-10-03 12:32:52 +09:00
Dean Herbert
3aa51301e8
Add null checks in disposal flow
2023-10-02 22:28:33 +09:00
Dean Herbert
94e49a34fd
Adjust legacy reverse arrow implementation to match stable more closely
2023-10-02 22:26:57 +09:00
Dean Herbert
f0070eecf1
Add rotation support for very old skins
2023-10-02 20:09:39 +09:00
Dean Herbert
1bee7bf353
Add note about rotation
2023-10-02 19:22:24 +09:00
Dean Herbert
e4ac8362ec
Update other implementations to use non-beat-sync logic
2023-10-02 19:20:11 +09:00
Dean Herbert
8010410487
Stop beat syncing (and close match stable's implementation of arrow animation)
2023-10-02 19:17:35 +09:00
Dean Herbert
ad4e988520
Adjust reverse arrows to bounce more
2023-10-02 18:43:50 +09:00
Dean Herbert
455fc228ad
Add edge piece to argon reverse arrow
2023-10-02 18:43:50 +09:00
Dean Herbert
7dd9951c44
Split out reverse arrow implementations to allow better animation
2023-10-02 18:43:50 +09:00
Dan Balasescu
da2a4681d9
Add method to retrieve legacy score multiplier
2023-10-02 16:52:01 +09:00
Dean Herbert
07207ffc32
Fix hitsounds playing too early on fast sliders
2023-10-02 14:09:52 +09:00
Dean Herbert
94f4268ae5
Fix object dim being applied to approach circles
...
Fixes half of https://github.com/ppy/osu/issues/24956 .
The other half is high effort. The number portion is nested deeply and
with reason - depending on skin setting it changes the visual order.
I'm not sure how to fix that one, but I also think it's weird behaviour
and if people don't complain, it's probably fine to just dim the number
for consistency.
That said, the approach circle is an important one to ensure it matches
1:1, so I've fixed that here.
2023-09-29 18:23:23 +09:00
Dean Herbert
dd6d09189e
Remove usage of LastTick
in osu! ruleset
2023-09-29 16:58:17 +09:00
Dean Herbert
e3695d2be0
Adjust slider judgement logic to allow tracking anywhere after last tick
2023-09-29 16:08:52 +09:00
Dean Herbert
d7119674e8
Update comments to better explain what LastTick
is doing
2023-09-29 14:40:44 +09:00
Dean Herbert
81485c548c
Move LegacyLastTickOffset
specification to generation code and stop passing everywhere
2023-09-29 14:32:29 +09:00
Dean Herbert
c0234ff254
Reduce approach circle's final opacity to match stable
...
Closes #24941 .
2023-09-29 12:44:28 +09:00
Dean Herbert
0a208a5a47
Merge pull request #24932 from smoogipoo/spinner-od-based-max-rpm
...
Cap maximum spinner RPM based on OD
2023-09-27 15:56:27 +09:00
Dean Herbert
9d8c3f0f5c
Merge pull request #24779 from smoogipoo/split-legacy-scoring-attribs
...
Split legacy scoring attribs into its own table
2023-09-26 22:35:38 +09:00
Dan Balasescu
05c9f0f9cc
Fix bonus requirement not considering number of normal ticks
2023-09-26 18:11:27 +09:00
Dan Balasescu
859155dda1
Cap maximum spinner RPM based on OD
2023-09-26 17:20:20 +09:00
Dean Herbert
990c54519b
Merge branch 'master' into limit-gameplay-sprite-dimensions
2023-09-26 16:40:32 +09:00
Dean Herbert
0dcf7a2fa9
Merge branch 'master' into split-legacy-scoring-attribs
2023-09-26 15:52:27 +09:00
Salman Ahmed
734ee0e68b
Simplify code
2023-09-24 02:22:50 +03:00
Fabian van Oeffelt
7c40072c47
Get first Spinner,Slider or HitCircle instead of only HitCircle
...
Fixes bug
2023-09-23 13:18:49 +02:00
Bartłomiej Dach
69ed99dfd5
Merge branch 'master' into mania-edit-disable-sv
2023-09-21 09:13:27 +02:00
Bartłomiej Dach
28da5baea4
Merge branch 'master' into fix-slider-length
2023-09-20 11:10:01 +02:00
Dean Herbert
41a8239e49
Remvoe null default for mods which can't be null
2023-09-20 15:27:50 +09:00
Dean Herbert
8e16b1d507
Simplify some maximum size specs
2023-09-20 12:48:15 +09:00
Bartłomiej Dach
92cafe23fe
Merge pull request #24810 from peppy/remove-slider-head-movement-allowance
...
Remove slider head circle movement (and remove setting from "classic" mod)
2023-09-19 12:25:33 +02:00
Dean Herbert
0360646e9b
Avoid fast fade out if slider head was not hit
2023-09-19 14:38:53 +09:00
Salman Ahmed
922f6f36f2
Add size limitation for hit object numbers
2023-09-19 04:38:10 +03:00
Salman Ahmed
ab5226832a
Add size limitation for slider reverse arrow piece
2023-09-19 04:38:10 +03:00
Salman Ahmed
b823507b2a
Add size limitation for approach circles
2023-09-19 04:38:10 +03:00
Salman Ahmed
f963a921db
Add size limitation for slider follow circle
2023-09-19 04:18:12 +03:00
Salman Ahmed
fc1a39ede3
Add size limitations for slider balls
2023-09-19 04:18:12 +03:00
Salman Ahmed
291a91be66
Change extension from retrieval to post-processing instead
2023-09-19 03:40:30 +03:00
Salman Ahmed
57dc76b345
Revert "Update GetTexture
signature rather than creating new overload"
...
This reverts commit 96f12cfbaa
.
2023-09-19 03:21:19 +03:00
Magnus-Cosmos
bd7dab1d86
Add test for slider path edge case
2023-09-18 12:02:20 -04:00
Bartłomiej Dach
5c6cd879dd
Adjust slider calculations to new method API
...
Code originally read
Velocity = scoringDistance / beatLength
= BASE_SCORING_DISTANCE * SliderMultiplier * GetPrecisionAdjustedSliderVelocityMultiplier() / beatLength
Given (mathematically, floats are not generally as forgiving):
GetPrecisionAdjustedBeatLength() = beatLength / GetPrecisionAdjustedSliderVelocityMultiplier()
it follows that (inverting both sides):
1 / GetPrecisionAdjustedBeatLength() = GetPrecisionAdjustedSliderVelocityMultiplier() / beatLength
and therefore
Velocity = BASE_SCORING_DISTANCE * SliderMultiplier * GetPrecisionAdjustedSliderVelocityMultiplier() / beatLength
= BASE_SCORING_DISTANCE * SliderMultiplier / GetPrecisionAdjustedBeatLength()
and to recover `scoringDistance`
scoringDistance = Velocity * beatLength
2023-09-15 12:30:25 +02:00
Bartłomiej Dach
4275af1343
Merge branch 'master' into fix-slider-tick-misssing
2023-09-15 12:09:54 +02:00
Bartłomiej Dach
86c46a5b3f
Manually reorder objects in expected mapping
...
The test added in 64baa4d01a
was
previously failing despite applying a fix. This was caused by the fact
that in stable, the last `sliderScoreTimingPoint` (i.e. the
`LegacyLastTick` is pulled back by 36ms, but the list of all of them
is not re-sorted afterwards, causing objects to be exported in
non-chronological order to the resultant conversion mapping.
lazer correctly sorts the objects, causing a false positive.
2023-09-15 12:07:59 +02:00
Dan Balasescu
2abef4ade5
Expand comment to justify maximising bonus score
...
Co-authored-by: Bartłomiej Dach <dach.bartlomiej@gmail.com>
2023-09-15 18:35:17 +09:00
Bartłomiej Dach
a6fab28461
Merge branch 'master' into no-legacy-difficulty-control-point
2023-09-15 11:14:28 +02:00
Dan Balasescu
ed295effc5
Maximise bonus score
2023-09-15 15:51:05 +09:00
Dean Herbert
cf9ca60b09
Change slider body to not animate snaking until head circle is (successfully) hit
2023-09-14 17:49:41 +09:00
Dean Herbert
e3e7a81ad9
Remove slider head circle movement (and remove setting from "classic" mod)
2023-09-14 17:49:41 +09:00
Dan Balasescu
753c1c877c
Revert masking SSBO changes
2023-09-13 23:10:13 +09:00
Dean Herbert
e810abf1e6
Rename variable
2023-09-12 20:51:22 +09:00
Dean Herbert
39d69903ab
Merge branch 'master' into stable-spinner-ticks-2
2023-09-12 20:41:43 +09:00
Dean Herbert
7db4b3e83c
Merge pull request #24661 from frenzibyte/stable-spinner-ticks-1
...
Update osu! spinner ticks calculation method to better match with osu!(stable)
2023-09-12 20:41:28 +09:00
Dan Balasescu
86330a7cc4
Adjust comment
2023-09-11 18:01:53 +09:00
Dan Balasescu
628517569b
Fix another difficulty-specific value
2023-09-08 21:08:09 +09:00
Bartłomiej Dach
e9b08219e9
Block input to objects lying under already-hit slider heads before slider is fully judged when classic note lock is active
2023-09-08 13:42:18 +02:00
Bartłomiej Dach
168a828f23
Revert "Block input to objects lying under already-hit hitcircles when classic note lock is active"
...
This reverts commit 03c61a573e
.
The goal here was to handle an edge case discovered during work on note
lock, wherein it was determined that on stable hit circles would block
input from reaching objects underneath them. However, the change
mentioned above did that _too_ hard and caused overlaps to also be
blocked even long past a hit circle has been faded out.
Revert the change pending further (and more careful) investigation.
2023-09-08 10:11:21 +02:00
Dan Balasescu
2334be1987
Split legacy scoring attributes into a separate object
2023-09-07 21:10:38 +09:00
Dean Herbert
22ee64cfda
Fix sliders not always being the correct length
...
This is another similar case where stable floating point precision comes
into play due to use of `hitObjectManager.Beatmap.BpmMultiplierAt` (see
1531237b63/osu
!/GameplayElements/HitObjects/Osu/SliderOsu.cs#L680)
Closes #24708 .
2023-09-07 18:20:08 +09:00
Dean Herbert
64baa4d01a
Add test coverage of failing slider tick generation edge case
2023-09-07 18:20:08 +09:00
Dean Herbert
dcbdc114ce
Remove precision limitations of SliderVelocity
2023-09-07 17:41:58 +09:00
Bartłomiej Dach
323a4f4522
Only show preempt time when limits are extended
2023-09-07 08:30:02 +02:00
Bartłomiej Dach
bd633889e7
Remove local preempt time calculation
...
And just use a hitcircle, and read the actual value. Comes with 100%
less chance of forgetting to update either place in the future.
2023-09-07 08:23:50 +02:00
Bartłomiej Dach
9c6f77b26e
Fix too many things being exposed
2023-09-07 08:11:04 +02:00
Dean Herbert
e05d7d5f8d
Inline local control
2023-09-07 14:22:06 +09:00
isakvik
2ab11ab568
adds new diffsetting control that shows millisecond values for approach rate override
2023-09-07 01:41:22 +02:00
isakvik
3db0d0d341
extendable minimum AR value for osu!std diff adjust mod, set to -10
2023-09-06 23:26:34 +02:00
Dean Herbert
1a37543d28
Rename SliderVelocity
to SliderVelocityMultiplier
to distinguish from Velocity
2023-09-06 19:01:08 +09:00
Dean Herbert
d06490220d
Add better xmldoc for Slider.Velocity
2023-09-06 18:58:58 +09:00
Salman Ahmed
912c8b0901
currentSpins
-> completedFullSpins
2023-09-06 00:10:41 +03:00
Bartłomiej Dach
03c61a573e
Block input to objects lying under already-hit hitcircles when classic note lock is active
2023-09-05 22:50:27 +02:00
Dean Herbert
96f12cfbaa
Update GetTexture
signature rather than creating new overload
2023-09-05 18:01:19 +09:00
Dean Herbert
0da37e4e99
Merge pull request #24701 from frenzibyte/remove-flashlight-slider-dim-transform
...
Apply flashlight slider dim immediately to match osu!(stable)
2023-09-04 16:35:30 +09:00
Salman Ahmed
351081eb27
Add limit to osu! hit circle elements
2023-09-03 02:22:53 +03:00
Salman Ahmed
920c6fa48f
Update comment
2023-09-01 23:29:51 +03:00
Salman Ahmed
f74dfa9c6c
Apply flashlight slider dim immediately to match osu!(stable)
2023-09-01 22:55:33 +03:00
Dean Herbert
90121814f9
Merge branch 'master' into stable-notelock
2023-09-01 17:15:48 +09:00
Dean Herbert
c75b14c729
Apply NRT to new LegacyHitPolicy
class (and other implementations)
2023-09-01 16:56:34 +09:00
Salman Ahmed
993cebe785
Fix mod "Classic" interfering with DrawableHitCircle
animation while in hit state
2023-08-30 21:42:47 +03:00
Salman Ahmed
3bcddf3cc8
Add gap of two whole spins before achieving bonus score
2023-08-27 01:54:10 +03:00
Salman Ahmed
d614e745b8
Calculate spinner ticks as "whole spins" without arbitrary factors
2023-08-27 01:27:31 +03:00
Salman Ahmed
e77581f641
wholeSpins
-> currentSpins
2023-08-27 01:27:31 +03:00
Bartłomiej Dach
7f215f163f
Use reduced hittable range with autopilot active
2023-08-24 08:52:49 +02:00
Bartłomiej Dach
ed2b1a0754
Contain entirety of legacy notelock badness inside the hit policy
2023-08-24 08:52:49 +02:00
Bartłomiej Dach
a045cb71fc
Add assertions checking action type taken by legacy hit policy
2023-08-24 08:52:49 +02:00
Bartłomiej Dach
b777b34cc0
Merge branch 'master' into stable-notelock
2023-08-24 08:43:59 +02:00
Dan Balasescu
e8337c592a
Update framework and apply changes to support masking SSBO
2023-08-22 12:50:13 +09:00
Bartłomiej Dach
3c191ff9ea
Expand allowable rotation range to [-360, 360]
2023-08-19 15:09:59 +02:00
Dean Herbert
63080d049f
Adjust icons slightly
2023-08-17 19:08:18 +09:00
Dean Herbert
0858bef66e
Update SmokeSegment
in line with framework vertex changes
2023-08-17 18:12:04 +09:00
Bartłomiej Dach
19f892687a
Add precise rotation control to osu! editor
2023-08-16 11:37:52 +02:00
Bartłomiej Dach
262f25dce8
Make SelectionRotationHandler
a Component
2023-07-30 20:18:33 +02:00
Bartłomiej Dach
821cd08f34
Merge branch 'master' into selection-operations-refactor
2023-07-30 19:29:06 +02:00
Bartłomiej Dach
c21167e2ab
Merge pull request #24360 from peppy/spinner-faster-rotation
...
Change spinner rotation animation to match input 1:1
2023-07-29 00:48:56 +02:00
Dean Herbert
2e9379474d
Change spinner rotation animation to match input 1:1
2023-07-25 19:21:20 +09:00
Dean Herbert
eac6271bd0
Add new property to avoid overlapping usages
2023-07-25 18:14:03 +09:00
Dean Herbert
2f7d38d98b
Merge branch 'master' into fix-editor-blueprint-input-extension
2023-07-25 18:14:02 +09:00
Bartłomiej Dach
aec3ca250c
Migrate SelectionHandler
to use SelectionRotationHandler
2023-07-23 20:56:22 +02:00
Bartłomiej Dach
ba904fd77b
Migrate osu! rotation handling to SelectionRotationHandler
2023-07-23 20:56:22 +02:00
Bartłomiej Dach
4622255cc7
Move out helper methods to static class
2023-07-23 18:24:20 +02:00
Dean Herbert
b58354ac64
Fix playfield getting cut off (again) at tall aspect ratios
2023-07-21 15:20:20 +09:00
Liam DeVoe
6a81230298
rename ObjectOrderedHitPolicy to LegacyHitPolicy
2023-07-19 14:44:28 -04:00
Liam DeVoe
2c97ac7410
convert AliveObjects to list in hit policy instead of globally
2023-07-19 14:28:04 -04: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
Liam DeVoe
768d7b5e1c
correct implementation of stable notelock
2023-07-17 23:31:21 -04: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