Bartłomiej Dach
ed38746823
Fix spacer appearing on top of menu
2023-11-21 16:14:41 +09:00
Bartłomiej Dach
d83b2e24e7
Merge pull request #25371 from RatinFX/open-editor-timestamp
...
Implement opening editor timestamp links
2023-11-21 15:48:36 +09:00
Dean Herbert
cc33e12125
Fix dragging after one point already placed incorrectly entering drawing mode
2023-11-21 15:38:12 +09:00
Dean Herbert
a210469956
Reorder methods
2023-11-21 15:38:12 +09:00
Dean Herbert
016de7be6a
Simplify drag handling code in SliderPlacementBlueprint
2023-11-21 15:38:12 +09:00
Dean Herbert
cf6f66b84f
Remove redundant Clear()
call
2023-11-21 15:38:12 +09:00
Dean Herbert
92728ea564
Simplify toolbox initialisation
2023-11-21 15:38:12 +09:00
Dean Herbert
e69e78ad41
Refactor b-spline path conversion code to better handle linear segments
2023-11-21 15:38:12 +09:00
Dean Herbert
0a5444d091
Fix using the incorrect position for the first point
2023-11-21 15:38:12 +09:00
Dean Herbert
314a7bf6f1
Simplify AddOnce
call to avoid self
argument
2023-11-21 15:38:12 +09:00
Samuel Cattini-Schultz
c9ee29028f
Fix implicitly used method being named incorrectly
2023-11-21 16:54:20 +11:00
Dean Herbert
9718a80249
Add visible spacer between "inherit" and other curve types
2023-11-21 14:24:19 +09:00
Dean Herbert
3680024e31
Fix tolerance not being transferred to blueprint in all cases
2023-11-21 11:15:00 +09:00
Dean Herbert
e9f371a581
Refactor slider settings class
2023-11-21 09:59:49 +09:00
Dean Herbert
638c8f1adc
Get rid of weird cruft and non-standard flow
2023-11-21 00:25:23 +09:00
Dean Herbert
6f5c468a83
Rename settings class
2023-11-21 00:21:44 +09:00
Dean Herbert
750bbc8a19
Simplify null checks
2023-11-21 00:18:36 +09:00
Bartłomiej Dach
364a3f75e1
Compile regexes
2023-11-20 22:03:25 +09:00
Bartłomiej Dach
b6215b2809
Rename and document SelectFromTimestamp
2023-11-20 21:57:14 +09:00
Dean Herbert
492fd06c62
Remove unnecessary null override
2023-11-20 19:21:23 +09:00
Bartłomiej Dach
3d569850b1
Merge pull request #25493 from peppy/adjust-slider-tick-animation
...
Adjust slider follow circle animation to not abruptly scale on early ticks
2023-11-20 17:58:15 +09:00
Dean Herbert
7633c92a78
Merge branch 'master' into bspline-sliders
2023-11-20 17:53:58 +09:00
Bartłomiej Dach
4061417ac8
Decrease default value for slider tolerance
...
Highly subjective change, but at 50 the drawing just did not feel
responsive enough to input.
2023-11-20 15:54:46 +09:00
Bartłomiej Dach
43dbd65708
Show Catmull as a control point type option if selection already contains it
2023-11-20 15:53:25 +09:00
Bartłomiej Dach
5d1bac6d7a
Remove IToolboxAttachment
for now
...
The interface doesn't really do anything useful right now because
it enforces a common contract, but all usages of the contract
go through the concrete implementation, and it inflates
the already-huge diff.
2023-11-20 13:17:43 +09:00
Bartłomiej Dach
affef85f25
Remove ISliderDrawingSettingsProvider
...
Seems like excessive abstraction.
2023-11-20 13:02:51 +09:00
Bartłomiej Dach
831884a64b
Remove unused enum member
2023-11-20 13:00:12 +09:00
Bartłomiej Dach
f46945a294
Avoid one unnecessary path update from B-spline builder
2023-11-20 12:42:16 +09:00
Bartłomiej Dach
518dcc567b
Null-check drawingSettingsProvider
...
As it's annotated as an optional dependency.
2023-11-20 12:41:24 +09:00
Bartłomiej Dach
b6e3e42445
Merge branch 'master' into bspline-sliders
2023-11-20 12:03:29 +09:00
Bartłomiej Dach
e182acf3e8
Expand comment for clarification
2023-11-20 11:50:28 +09:00
Zyf
cadd9b4ace
Merge remote-tracking branch 'upstream/master' into scorev3
2023-11-19 23:53:05 +01:00
Dean Herbert
307ec172cb
Use simplified formula
2023-11-17 23:48:48 +09:00
Dean Herbert
66f7b9fae1
Adjust slider follow circle animation to not abruptly scale on early ticks
2023-11-17 19:09:24 +09:00
Dean Herbert
fd3508254b
Add note about break calculation method
2023-11-17 18:49:19 +09:00
Dean Herbert
2ab84fdaa3
Use switch statement for type matching
2023-11-17 18:45:16 +09:00
Dean Herbert
a556caae43
Move default value out of switch statement
2023-11-17 18:43:31 +09:00
Dean Herbert
c9c8ed7c77
Remove unused values
2023-11-17 18:41:09 +09:00
Dean Herbert
6fa7b4f552
Merge branch 'master' into hp-drain-v1-2
2023-11-17 18:33:03 +09:00
Dean Herbert
9172632b0b
Rename method and adjust xmldoc to be very explicit about how wrong this is
2023-11-17 17:04:20 +09:00
Dean Herbert
a1673160f1
Refactor OsuAutoGenerator
to allow custom SPM specifications
2023-11-17 16:44:11 +09:00
Dean Herbert
3c513d0b62
Refactor fail reason output to not perform string interpolation unless hooked
2023-11-16 15:29:32 +09:00
Dean Herbert
265ae6fd30
Remove unused using refs
2023-11-16 15:14:32 +09:00
cs
360864fd7b
Hide catmull curve type when possible
2023-11-15 07:45:28 +01:00
cs
520642975b
Fix control point hover text and context menu
2023-11-15 07:45:09 +01:00
cs
ceeaf5b67c
CI fixes and small tweaks
2023-11-15 07:09:33 +01:00
Thomas Müller-Höhne
90ec6895d1
Automatic red control point generation & corner threshold
2023-11-14 16:53:01 +09:00
Dan Balasescu
e3137d575b
Fix osu! and base HP processor break time implementation
2023-11-14 01:11:17 +09:00
cs
fa976a5aa0
Fix code style/quality issues
2023-11-13 08:25:27 +01:00
Dan Balasescu
35d4c483d7
Improve commenting around small tick/large tick health
2023-11-13 14:06:34 +09:00
Dan Balasescu
65b41138a3
Add option to disable combo end
2023-11-13 14:06:24 +09:00
Dan Balasescu
98e6b7744b
Cleanup
2023-11-13 13:46:47 +09:00
Dan Balasescu
7713da499f
Make osu ruleset use the new health processor
2023-11-13 13:12:56 +09:00
Dan Balasescu
929570656d
Disallow legacy health processor from being used for gameplay
2023-11-13 13:12:46 +09:00
Dan Balasescu
5fd55e55c0
Add flag for combo end bonus to legacy processor
2023-11-13 12:59:36 +09:00
Thomas Müller-Höhne
e6b4dfba36
Fix doubled control point at beginning of drawn slider
2023-11-13 12:49:59 +09:00
Thomas Müller-Höhne
c24b3543ab
Fix OnDragStart on macOS
2023-11-13 12:47:12 +09:00
ratinfx
fab6fc9adb
Updated comments, renamed method
2023-11-12 15:09:15 +01:00
ratinfx
4e7c40f1d7
Do Split and Parse before checking HitObjects
2023-11-12 14:58:46 +01:00
Dean Herbert
a04f9aaef7
Apply various inspections
2023-11-12 16:24:35 +09:00
Dean Herbert
6bd5eda2a0
Merge branch 'master' into arod_rate_adjust
2023-11-12 15:49:07 +09:00
cs
54b8244a18
CI Fixup
2023-11-11 15:02:06 +01:00
ratinfx
4e1e19728c
Refactor HitObject selection in Composer
2023-11-11 14:02:42 +01:00
cs
3f85aa79c5
Add free-hand drawing of sliders to the editor
2023-11-11 13:33:25 +01:00
Thomas Müller-Höhne
926636cc03
Generalize Bezier curves to BSplines of Nth degree
2023-11-11 13:32:53 +01:00
Dan Balasescu
793d90e396
Add some notes
2023-11-10 19:09:09 +09:00
Dan Balasescu
12e5766d50
Implement OsuHealthProcessor following osu-stable
2023-11-10 18:41:02 +09:00
Dan Balasescu
fecc6f580b
Add legacy reference health processor
2023-11-10 18:40:21 +09:00
Bartłomiej Dach
c522a703eb
Merge branch 'master' into skin-size-editing
2023-11-10 18:19:27 +09:00
Dean Herbert
1c63f1f89d
Merge pull request #25348 from bdach/less-basic-touchscreen-detection
...
Implement basic touchscreen detection
2023-11-10 18:01:40 +09:00
Dean Herbert
35e11c7c63
Rename diagonal scale variable and update xmldoc
2023-11-10 17:55:02 +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
Dean Herbert
ec3b6e47fb
Change selection handling to adjust Size
instead of Scale
for edge nodes
2023-11-10 14:22:28 +09:00
Dan Balasescu
44c0442f4f
Adjust comment on Slider's judgement
2023-11-10 14:00:34 +09:00
Givikap120
e451b2197c
Delete util functions from rulesets
2023-11-09 18:23:53 +02: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
92043f45a4
Merge branch 'master' into slider-combo-matching-2
2023-11-09 18:45:37 +09:00
Bartłomiej Dach
13b599b9b6
Merge branch 'master' into less-basic-touchscreen-detection
2023-11-09 17:36:48 +09:00
Dean Herbert
c00a1d948a
Merge branch 'master' into better-touch-settings
2023-11-07 23:21:59 +09:00
Dean Herbert
7bedf7cf16
Move static method to end of file
2023-11-07 21:08:49 +09:00
Dean Herbert
38c9a98e67
Add failing test coverage
2023-11-07 19:54:21 +09:00
ratinfx
aa87e0a44d
HitObject Selection logic and separation for gamemodes
...
+ moved time_regex into EditorTimestampParser
2023-11-07 01:36:58 +01:00
Susko3
05d9418718
Rename setting to TouchDisableGameplayTaps
for better visibility when searching
2023-11-07 00:13:46 +01:00
Susko3
ea357bafdd
Fix tests by using the correct setting for touch input
2023-11-06 20:53:22 +01:00
Salman Ahmed
75fbbb35ad
Move cursor scale application within OsuCursor
...
Doing so takes down two birds with one stone.
1. `ResumeOverlay` having to manually apply cursor scale to its "resume
cursor".
2. Resume cursor input handling scaling up with the gameplay setting. Now, only the sprite itself gets scaled.
2023-11-06 18:30:55 +03:00
Salman Ahmed
915feeffb0
Revert gameplay cursor scale changes
2023-11-06 17:37:32 +03: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
febd004bda
Merge branch 'master' into less-basic-touchscreen-detection
2023-11-06 07:41:35 +01:00
Salman Ahmed
9cb331641c
Rename container
2023-11-05 06:34:09 +03:00
Salman Ahmed
48a75f6152
Fix resume cursor following gameplay cursor scale setting
2023-11-05 06:28:10 +03:00
Givikap120
5597e819be
fixed bug in AR formula
2023-11-04 18:01:10 +02:00
Givikap120
57170501cd
Improve code quality
2023-11-04 17:25:09 +02:00
Bartłomiej Dach
d3c5988bf1
Merge branch 'master' into slider-combo-matching-2
2023-11-03 09:11:39 +01:00
Bartłomiej Dach
8e9006b5d5
Declare Touch Device incompatible with Autopilot
...
With Autopilot active, Touch Device no longer matters.
2023-11-02 22:57:05 +01:00
Bartłomiej Dach
9f11a04cc7
Generalise notion of 'touch device' mod
2023-11-02 19:14:05 +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
64feea80db
Merge pull request #25334 from peppy/fix-bubble-crash-again
...
Fix another potential crash in bubbles mod
2023-11-02 09:32:09 +01:00
Bartłomiej Dach
ad82ada030
Trim redundant comments
2023-11-02 08:18:37 +01:00
Dean Herbert
48bdeaeff1
Fix another potential crash in bubbles mod
...
Storing `DrawableHitObject` for later use is not safe – especially
when accessing `HitObject` – as it's a pooled class. In the case here,
it's important to note that `PrepareForUse` can be called a frame or
more later in execution, which made this unsafe.
Closes https://github.com/ppy/osu/issues/24444 .
2023-11-02 02:43:51 +09: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
Bartłomiej Dach
e5b51f769c
Fix incorrect assertion placement in spinner rotation tracker
...
Checking the delta after the application of rate is not correct. The
delta is in screen-space *before* the rate from rate-changing mods were
applied; the point of the application of the rate is to compensate for
the fact that the spinner is still judged in "track time" - but the goal
is to keep the spinner's difficulty *independent* of rate, which means
that with DT active the user's spin is "twice as effective" to
compensate for the fact that the spinner is twice as short in real time.
In another formulation, with DT active, the user gets to record replay
frames "half as often" as in normal gameplay.
2023-10-30 21:28:29 +01:00
Dean Herbert
fbba3787d1
Merge pull request #25190 from frenzibyte/match-skin-element-animation-support
...
Match capability of animating legacy skin elements with osu!(stable)
2023-10-30 18:25:06 +09:00
Dean Herbert
a91b704d21
Fix some new nullable inspections
2023-10-30 15:10:10 +09:00
Bartłomiej Dach
99e590c8dd
Fix legacy sprite texts not matching stable with respect to fixed width
...
stable's `pSpriteText` has a `TextConstantSpacing` flag, that is
selectively enabled for some usages. In particular, these are:
- mania combo counter (not yet implemented)
- taiko combo counter (not yet implemented)
- score counter
- accuracy counter
- scoreboard entries (not yet implemented)
Everything else uses non-fixed-width fonts.
Hilariously, `LegacySpinner` _tried_ to account for this by changing
`Font` to have `fixedWidth: false` specified, only to fail to notice
that `LegacySpriteText` changes `Font` in its BDL, making the property
set do precisely nothing. For this reason, attempting to set `Font`
on a `LegacySpriteText` will now throw.
2023-10-27 20:14:39 +02:00
Bartłomiej Dach
c9cb0561f7
Move maxSizePerGlyph
optional ctor param to init-only property
...
I'm doing this as I'm about to add more similar properties to
`LegacySpriteText` and I don't want to create a twenty-argument
constructor monstrosity.
2023-10-27 19:48:10 +02:00
Dean Herbert
24b1d1e955
Fix code quality fail
2023-10-27 18:18:07 +09:00
Dean Herbert
f165653e8d
Merge pull request #25233 from Termincc/FreezeFrame-and-Transform-Compatibility
...
Make FreezeFrame and Transform Incompatible
2023-10-27 16:53:23 +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
Termincc
8b9b085ef5
Address mod incompatibilities
...
Makes FreezeFrame and Transform mods incompatible.
2023-10-26 22:15:10 +10:00
Bartłomiej Dach
9c9000027a
Merge pull request #25221 from peppy/fix-repeat-dim
...
Fix repeat circles on sliders not correctly getting dimmed
2023-10-25 11:43:46 +02: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
23ea128f30
Merge branch 'master' into velocity-based-ball-animation
2023-10-25 14:01:19 +09:00
Dean Herbert
121fa6f165
Simplify pre-checks in HitObjectApplied
delegate
2023-10-25 13:53:20 +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
Dean Herbert
ded99c4097
Simplify calculation
2023-10-24 14:32:03 +09:00
Salman Ahmed
ff66b74b0e
Refactor logic to support DHO pooling
2023-10-24 02:24:00 +03: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
Salman Ahmed
0cf572d029
Use existing property and fix nullability
2023-10-23 11:46:21 +03: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
Salman Ahmed
2a70c331b9
Remove animation support from osu! slider reverse arrow
2023-10-20 23:59:03 +03:00
Salman Ahmed
80ce78e05d
Remove animation support from osu! hit circle overlay
2023-10-20 23:59:03 +03:00
Salman Ahmed
7373a9a784
Remove unnecessary usage of ApplyWithDoubledAlpha
2023-10-20 23:54:29 +03:00
Salman Ahmed
ac8c2a173b
Apply velocity into legacy slider ball animation rate
2023-10-20 22:47:45 +03: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
ca3a3f600e
Update visuals of spinner implementations to show MAX score differently
2023-10-20 16:11:09 +09:00
Dean Herbert
181a98e8ef
Remove duplicate definition of bonus text in ArgonSpinner
2023-10-20 16:10:54 +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
Bartłomiej Dach
dcfd6a0a8a
Remove DistancedHitObjectComposer
inheritance from osu! composer
2023-10-19 11:46:30 +02:00
Bartłomiej Dach
3ab083b696
Split IPositionSnapProvider
from IDistanceSnapProvider
...
In preparation to remove `DistancedHitObjectComposer`, split off
`IPositionSnapProvider` from `IDistanceSnapProvider`.
`DistancedHitObjectComposer` was not touching `IPositionSnapProvider`'s
only interface member at all, it was just forwarding it for subclasses
to override to their own leisure.
2023-10-19 11:45:24 +02: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
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
Givikap120
1a70110a4e
Added BeatmapAttributesDisplay support
2023-09-12 16:44:44 +03: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
Givikap120
c61212c523
Merge pull request #1 from Givikap120/master
...
add display to calibrate
2023-09-12 13:02:19 +03: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
Givikap120
290f8db341
fixed stated problems
...
removed functions from `Ruleset.cs` and added a `GetEffectiveDifficulty()` instead
2023-08-26 02:13:14 +03:00
Givikap120
17b9b1649a
Fixed "works only for std" problem
...
1) Now it use AR/OD calculation from Ruleset class
2) Implemented needed functions in each of default rulesets
2023-08-25 00:58:26 +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
Dean Herbert
bbe4635a50
Remove unused usings
2023-08-22 16:07:48 +09:00
Dean Herbert
4e9e084b2c
Merge branch 'master' into scorev3
2023-08-22 15:52:22 +09: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