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
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
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
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
a6fab28461
Merge branch 'master' into no-legacy-difficulty-control-point
2023-09-15 11:14:28 +02: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
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
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
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
dcbdc114ce
Remove precision limitations of SliderVelocity
2023-09-07 17:41:58 +09: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
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
ed2b1a0754
Contain entirety of legacy notelock badness inside the hit policy
2023-08-24 08:52:49 +02:00
Liam DeVoe
768d7b5e1c
correct implementation of stable notelock
2023-07-17 23:31:21 -04:00
Dean Herbert
e0fc97bb93
Replace various local implementations of rewinding checks with new property
2023-07-07 15:21:24 +09:00
Dean Herbert
0ab0c52ad5
Automated pass
2023-06-24 01:00:03 +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
Salman Ahmed
62cb6a98ca
Remove redundant nullable suppression directives
2023-06-07 08:20:41 +03:00
Dean Herbert
dc51d5ecf3
Rename GetSampleInfo
to better describe what method does
...
Also add full xmldoc
2023-05-17 14:07:48 +09:00
Bartłomiej Dach
a45f0b65a1
Merge pull request #23372 from peppy/fix-slider-end-circle-appear-delay
...
Fix fade in delay for first slider end circle being incorrect when snaking disabled
2023-05-03 19:06:39 +02:00
Dean Herbert
a619812cab
Fix nullability and remove extra preempt from SliderEndCircle
calculation
2023-05-02 16:36:43 +09:00
Dean Herbert
1a04be15c7
Fix fade in delay for first slider end circle being incorrect when snaking disabled
2023-05-02 16:27:17 +09:00
OliBomby
27cfadca16
add sample info to Banana and SpinnerBonusTick
2023-05-01 14:54:06 +02:00
OliBomby
41d4894aa3
add min and max value to SliderVelocity
2023-04-30 19:32:24 +02:00
OliBomby
1eb2e35dff
fix ticks not being generated by default
2023-04-30 16:03:58 +02:00
OliBomby
d97daee96b
remove all non-test usage of SampleControlPoint
2023-04-26 13:55:39 +02:00
OliBomby
6c70948681
Remove IContext & add IHasGenerateTicks
2023-04-26 13:10:57 +02:00
OliBomby
e4b64bdc3e
clean up code stuff
2023-04-25 19:06:29 +02:00
OliBomby
66eda40cdf
fix implementations of IHasSliderVelocity
2023-04-25 18:22:22 +02:00
OliBomby
065464d90c
Fixed DifficultyPointPiece
2023-04-25 18:12:53 +02:00
OliBomby
97910d6be6
remove unused directives
2023-04-25 13:06:37 +02:00
OliBomby
891b87a5ff
remove ApplyLegacyInfo method
2023-04-25 12:52:21 +02:00
OliBomby
ea1e6e9798
Add LegacyContext
2023-04-25 12:12:46 +02:00
OliBomby
a4c6850ab2
made the SampleControlPoint and DifficultyControlPoint obsolete
2023-04-25 11:34:09 +02:00
Bartłomiej Dach
6b9472c367
Merge branch 'master' into skin-per-ruleset-layouts
2023-02-17 22:58:38 +01:00
Dean Herbert
675e5b81f3
Fix SkinnableLighting
showing up as a user placeable component
2023-02-17 18:24:05 +09:00
Dean Herbert
da8ab7143b
Merge branch 'master' into maximum-judgement-offset-in-hit-object
2023-02-15 14:48:15 +09:00
Dean Herbert
74ab036f3e
Refactor SkinnableSound.Samples
to be non-nullable
2023-01-27 19:32:30 +09:00
ekrctb
11e1b22bf5
Move MaximumJudgementOffset to HitObject
...
We want to access this property for computing lifetime
2023-01-19 21:23:55 +09:00
Dan Balasescu
7bc8908ca9
Partial everything
2022-11-27 00:00:27 +09:00
Dean Herbert
1aa0e40f2f
Add "Component" prefix to lookup naming
2022-11-09 17:46:43 +09:00
Dean Herbert
c908969d9b
Rename ISkinComponent
to ISkinLookup
2022-11-09 17:46:43 +09:00
Dean Herbert
ab458320c4
Fix some lingering inspections
2022-11-09 17:46:24 +09:00
Dean Herbert
710c224de4
Remove unused IHasMainCirclePiece
interface
2022-11-09 13:31:50 +09:00
Dean Herbert
8c9250285f
Revert incorrect removal default value (causing a new warning)
2022-10-29 18:09:27 +09:00
Dean Herbert
19e0b9085c
Remove redundant parameters
2022-10-29 00:24:33 +09:00
Dean Herbert
674ae9e742
Refactor DrawableSliderHead
to never update the drawable position
...
Slider heads are guaranteed to always be drawn at (0,0). This fixes
weird behaviour in the editor, but also simplifies things in the
process. Win-win.
Closes #20644 .
2022-10-26 15:26:22 +09:00
Salman Ahmed
7d31eaea54
Move ball tinting logic to overwrite SliderBall
colour
2022-10-20 03:55:53 +03:00
Dean Herbert
299131c985
Merge pull request #20816 from frenzibyte/adjust-slider-fade-parameters
...
Adjust slider fade out transition to match stable
2022-10-19 12:04:24 +09:00
Salman Ahmed
13e2323791
Adjust fade out duration to match stable
2022-10-18 23:48:51 +03:00
Salman Ahmed
03edfce822
Remove fade easing from sliders
2022-10-18 23:43:42 +03:00
Salman Ahmed
d46bc7f72a
Adjust fade out time to match stable
2022-10-18 23:43:31 +03:00
Dan Balasescu
083a13f041
Merge pull request #20680 from peppy/fix-slider-ball-editor-rewind
...
Fix slider ball facing incorrect direction during rewinding in editor
2022-10-11 17:47:17 +09:00
Dean Herbert
f060e6a780
Implement hold "sliding" samples in osu!mania
2022-10-11 16:31:37 +09:00
Dean Herbert
33620b7bd6
Fix slider ball facing incorrect direction during rewinding in editor
...
Closes https://github.com/ppy/osu/issues/20648 .
2022-10-10 15:24:18 +09:00
Dan Balasescu
b6db36dcca
Merge pull request #20580 from peppy/approach-circle-fade-out
...
Hide approach circles immediate on successful hit
2022-10-05 19:17:57 +09:00
Dean Herbert
52002d91dd
Only apply dim at top level objects
2022-10-05 17:48:56 +09:00
Dean Herbert
56d424003d
Fix sliders not dimming correctly due to modified miss window
2022-10-05 14:25:04 +09:00
Dean Herbert
44b99444a7
Hide approach circles immediate on successful hit
2022-10-05 13:42:04 +09:00
Dean Herbert
c2956c6e1e
Add osu! hit object dim
...
Stable would dim objects when they can't be hit (ie. the "miss" window
is not active yet). This was never implemented in lazer, and causes
quite large visual differences.
No one has mentioned this yet, but it will definitely be one of those
missing pieces which makes lazer feel different to stable.
2022-10-04 17:28:17 +09:00
Dan Balasescu
cbed268ac9
Merge pull request #20510 from sw1tchbl4d3r/high_bpm_judgements
...
Clamp `LifetimeStart` of `HitObject`s to their judgement windows
2022-09-28 17:49:35 +09:00
sw1tchbl4d3
0cffbb7562
Clamp LifetimeStart
of HitObject
's to their judgement windows
2022-09-27 16:54:24 +02:00
Dean Herbert
a7449380cd
Fix osu! slider ticks appearing too late
2022-09-26 14:11:59 +09:00
Dean Herbert
749053481a
Update osu! hitobject implementation to avoid triggering ClearInternal
2022-09-22 15:04:20 +09:00
Dean Herbert
b844d76311
Move Shake
logic local to hitcircle/slider
2022-09-22 15:04:20 +09:00
Dean Herbert
2bdc6417e9
Mark DrawableOsuHitObject
abstract
for clarity
2022-09-22 14:44:03 +09:00
Dean Herbert
289e6ad977
Fix follow point animations in legacy skins not always starting at correct point in time
2022-09-16 15:12:05 +09:00
Dean Herbert
6a35b233e5
Merge branch 'master' into remove-dispose-updates
2022-09-01 23:03:19 +09:00
Dean Herbert
105aa01e7d
Update usages of RemoveInternal
2022-08-29 15:57:40 +09:00
Dean Herbert
a215d009fe
Update Remove
/RemoveRange
/RemoveAll
calls in line with framework changes
2022-08-29 15:57:40 +09:00
Khang
9c6968e96d
Remove unused import in Slider
2022-08-24 02:54:40 -04:00
Khang
ec9daec93b
Remove unnecessary workaround
2022-08-23 14:18:40 -04:00
Khang
c1ced85b5e
Move GenerateTicks to LegacyDifficultyControlPoint and remove support for NaN slider velocity support for other rulesets (at least for now)
2022-08-23 14:07:18 -04:00
Khang
a81672f3dc
Use an infinite tick distance instead of directly disabling tick generation for SliderEventGenerator
2022-08-22 23:31:24 -04:00
Khang
9f08c474ca
Treat NaN slider velocity timing points as 1.0x but without slider ticks
2022-08-22 21:58:38 -04:00
Dean Herbert
9a4d0494de
Adjust various pooling defaults to better handle more intense beatmaps
2022-08-05 18:09:07 +09:00
Salman Ahmed
d8cce5fe36
Fix OsuHitObject
not using property wrapper properly
2022-07-19 07:52:12 +03:00
Salman Ahmed
8f80a22ef9
Fix osu! and catch hitobjects no longer scaled to 1 by default
2022-07-19 07:00:13 +03:00
Salman Ahmed
1051009827
Change bindable properties in all HitObject
s to be lazily initialised
2022-07-19 05:39:10 +03:00
goodtrailer
e6a05ce3e2
Slow down legacy followcircle animations
2022-07-03 13:51:30 -07:00
goodtrailer
0e0e9968ac
Split ball and followcircle into default/legacy files
2022-06-29 01:23:35 -07:00
Dean Herbert
31a447fda0
Update parameter discards
2022-06-24 21:26:19 +09:00
Dan Balasescu
f8830c6850
Automated #nullable processing
2022-06-17 16:37:17 +09:00
Salman Ahmed
b6e97e699a
Remove unnecessary position specification
2022-06-07 00:34:18 +03:00
Salman Ahmed
4158146c71
Fix spinenr tick samples not positioned at centre
...
Causing samples to be played at left ear rather than centre.
2022-06-07 00:30:11 +03:00
Salman Ahmed
0eaf420fa1
Specify full size for spinner ticks container
2022-06-07 00:29:14 +03:00
Salman Ahmed
3a00931e38
Update slider sliding samples balance calculation to use screen-space as well
2022-04-18 09:18:56 +03:00
Salman Ahmed
fcb48c69cf
Calculate sample playback position using screen-space drawable rectangles
2022-04-18 07:57:31 +03:00
Dean Herbert
879267862c
Fix typo in DrawableOsuHitObject
2022-04-08 15:20:22 +09:00
Dan Balasescu
36772ec652
Merge pull request #17356 from apollo-dw/strict-tracking
...
Implement "Strict Tracking" mod in osu!
2022-03-22 07:32:36 +09:00
apollo-dw
35e2e6a4e7
Remove slider tick judgement flag
2022-03-20 15:41:46 +00:00
apollo-dw
149cfd338d
Use new mod-related object types for Strict Tracking
2022-03-19 18:29:44 +00:00
Dean Herbert
1b8c632b87
Add TailSamples
to auxiliary samples list
2022-03-14 17:19:48 +09:00
Dean Herbert
6d6f73e016
Add overrides in DrawableSliderTail
to explain/warn that this class never plays its own samples
2022-03-14 17:19:48 +09:00
Dean Herbert
be99202188
Move spinner spin samples to auxiliary specification
2022-03-14 17:19:48 +09:00
Dean Herbert
90e34d7686
Move slider slide samples to auxiliary specification
2022-03-14 17:19:48 +09:00
apollo-dw
e2001148d5
Implement strict tracking mod
2022-03-08 21:47:54 +00:00
Salman Ahmed
3ab13dd78c
Assign position to spinner ticks for correct positional playback
2022-01-15 14:24:52 +03:00
Susko3
19467e58c1
Remove unused params from BDL methods
2022-01-15 01:06:39 +01:00
smoogipoo
c3a31a019b
Merge branch 'master' into aim-refactor-base
2021-11-03 00:32:51 +09:00
Dean Herbert
e0cdcdd7a4
Merge branch 'master' into spinner-judgement-fix
2021-10-29 12:13:42 +09:00
Xexxar
9f5a7526ed
merge in ppy/master
2021-10-28 14:47:28 +00:00
Dean Herbert
5c7623e68e
Merge pull request #15255 from goodtrailer/node-samples-ilist
...
Change IHasRepeats.NodeSamples to IList from List
2021-10-28 14:24:26 +09:00
Dean Herbert
6944151486
Apply batch fixing of built-in types using var
2021-10-27 13:04:41 +09:00
Roxie Wattz
cf7fbf4b63
updated bdach's suggestion
2021-10-25 17:15:43 -07:00
Roxie is Flux3on
0c57453f4d
Reverted special case code changes
...
As requested by @frenzibyte
2021-10-24 18:16:14 -07:00
Roxie is Flux3on
a8e3d0bacc
Added an override for StackedEndPosition
...
This ensures the spinner's hit judgement will always be centre instead of in the top left corner.
2021-10-24 18:15:40 -07:00
Roxie is Flux3on
861cd4852a
Made StackedEndPosition virtual
...
Done to allow overriding in the other object classes.
2021-10-24 18:14:37 -07:00
Roxie is Flux3on
386910ca2e
Cut amount of code down for the spinner judgement fix
2021-10-24 15:29:47 -07:00
Roxie is Flux3on
b8308b9715
Corrected spinner judgement positions.
...
For some reason, spinner judgements would stack from the top left in an awkward fashion. This patch ensures that the judgement location will always be in the centre of the screen.
2021-10-24 15:28:38 -07:00
Dean Herbert
99d01f2162
Fix a couple of new layout inspections introduces in Rider 2021.3 EAP5
2021-10-24 23:51:49 +09:00
goodtrailer
4440b9ca11
Change IHasRepeats.NodeSamples to IList from List
2021-10-23 01:59:07 -07:00
smoogipoo
30eb08d394
Merge branch 'master' into aim-refactor-base
2021-10-17 12:00:39 +09:00
Xexxar
200149c9d7
updated to newly refactored aim
2021-10-13 15:41:24 +00:00
smoogipoo
bc37cb6f43
Merge branch 'master' into no-more-difficulty-control-points-info
2021-10-08 18:41:17 +09:00
Dean Herbert
a92d499d7a
Convert usages of BeatmapDifficulty
to IBeatmapDifficultyInfo
2021-10-01 16:55:50 +09:00
Dean Herbert
46bafb6252
Merge branch 'master' into no-more-difficulty-control-points-info
2021-09-28 13:53:56 +09:00
Bartłomiej Dach
c911332540
Merge branch 'master' into correct-reverse-arrow-depth
2021-09-20 22:32:28 +02:00
Bartłomiej Dach
79438c19a4
Fix slider parts not reproxying after first hitobject freed
2021-09-18 16:27:30 +02:00
Dean Herbert
fde7c88999
Merge branch 'master' into update-framework
2021-09-16 22:49:02 +09:00
smoogipoo
d8f27633a4
Fix legacy approach circles accepting alpha
2021-09-16 19:35:15 +09:00
smoogipoo
f9d5abff8a
Update with keybinding changes
2021-09-16 18:26:12 +09:00
Dean Herbert
714f55b6bc
Clone control points when copying to HitObject
s
2021-09-10 14:36:39 +09:00
Dean Herbert
a3d9ab1e2e
Move approach rate to EffectControlPoint
2021-09-03 16:58:16 +09:00
Dean Herbert
071c56e90b
Update usages of DifficultyPointAt
2021-09-03 16:58:16 +09:00
Dean Herbert
b907c2f4f6
Fix osu! judgements getting scaled twice over different durations
2021-09-02 16:31:43 +09:00
Dean Herbert
738ce0f689
Fix repeat arrows being hidden beneath head circles in legacy skins
...
Aims to make minimal changes to `DrawableSlider` itself. I'm not super
happy about the slider ball being moved above the head circle, but it
*is* what people are used to so no one except for me is going to
complain.
Supersedes and closes https://github.com/ppy/osu/pull/14561 .
2021-09-01 19:41:49 +09:00
Dan Balasescu
f0296e5d12
Merge branch 'master' into avoid-default-skin-judgement-transform-overhead
2021-08-27 10:02:40 +09:00
Dan Balasescu
a28bc9f6b2
Merge branch 'master' into path-control-point-bindable-removal
2021-08-27 09:37:37 +09:00