1
0
mirror of https://github.com/ppy/osu.git synced 2024-12-18 04:55:36 +08:00
Commit Graph

6031 Commits

Author SHA1 Message Date
StanR
e986a7dfe1 Fix repetition nerf not updating the counts 2024-09-19 19:15:54 +05:00
StanR
202364be5e Use List instead of Dictionary for island counting, minor adjustments 2024-09-19 17:52:55 +05:00
Bartłomiej Dach
89509ea49e
Fix DrawableOsuHitObject not properly cleaning up dim application callbacks
Should fix https://github.com/ppy/osu/issues/28629.

First of all, to support the claim that this does fix the issue -
reproduction is rather difficult, but I believe I found a way to
maximise the chances of it reproducing by performing the following
steps:

1. Apply the following diff:

diff --git a/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSlider.cs b/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSlider.cs
index eacd2b3e75..4c00da031a 100644
--- a/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSlider.cs
+++ b/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSlider.cs
@@ -6,6 +6,7 @@
 using System;
 using System.Collections.Generic;
 using System.Linq;
+using System.Threading;
 using JetBrains.Annotations;
 using osu.Framework.Allocation;
 using osu.Framework.Bindables;
@@ -95,6 +96,8 @@ public DrawableSlider([CanBeNull] Slider s = null)
         [BackgroundDependencyLoader]
         private void load()
         {
+            Thread.Sleep(100);
+
             tailContainer = new Container<DrawableSliderTail> { RelativeSizeAxes = Axes.Both };

             AddRangeInternal(new Drawable[]

2. Download https://osu.ppy.sh/beatmapsets/1470790#osu/3023028 and open
   it in the editor.

3. Select all objects using Ctrl-A. Yes, it'll take a while, especially
   so with the patch above.

4. Rotate the selection by any amount using the right toolbox.

5. Press undo. The game should crash. If it doesn't spam redo and undo
   until it does.

Now to explain what the fix is.

In the issue thread I spent a considerable time hemming and hawing about
which of the dimmable pieces was null, which was a complete miss and a
failure at reading. Let's see the stack trace again:

	2024-06-27 02:15:20 [error]: at osu.Game.Rulesets.Osu.Objects.Drawables.DrawableOsuHitObject.<UpdateInitialTransforms>g__applyDim|15_0(Drawable piece) in /home/runner/work/osu-auth-client/osu-auth-client/osu/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableOsuHitObject.cs:line 101

Line 101, you say? What could be null here?

	bd8addfb5f/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableOsuHitObject.cs (L101)

Okay, what's `InitialLifetimeOffset`, then?

	bd8addfb5f/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableOsuHitObject.cs (L108)

Yes, that's right. It's `HitObject` that is null here.

Now why does *that* happen? First, let's note that all stacks where this
died went through `UpdateState()`, which means that the problematic
`applyDim()` calls had to be `ApplyCustomUpdateState` event callbacks.
Meaning that the pieces where `HitObject` was null were DHOs themselves.

Recall that parent DHOs and child DHOs are pooled separately. Therefore,
there is no guarantee that any parent and child DHOs will remain
associated with each other for the entire duration of a gameplay
session; it is quite the contrary, and nobody should rely on that.
Unfortunately for us, adding a `applyDimToDrawableHitObject` callback to
a child object's `ApplyCustomUpdateState` *implicitly creates* such an
association, because it ends up allocating a closure that captures
`this` (meaning the parent in this context).

Therefore, this now creates a situation where a child DHO can attempt to
read state from a former parent DHO which can be in an indeterminate
state, and in fact, when this crashes, the former parent DHO is most
likely not even in use - hence the null `HitObject`.

Thus, the fix is to clear the association by unsubscribing from the
event when nested objects are cleared.

My hypothesis why the reproduction scenario is like it is, is that both
the sleep and the increased pressure on the pool (by way of selecting
all objects and therefore forcing the DHOs to be materialised beyond
pool capacity) increases the likelihood of getting a crosslink.
When pool pressure is low, it is much more likely that a parent DHO
*will* get the same child DHO again on re-application, even though
that is not guaranteed.

Just as an additional detail, note that the sentry issue for this lists
the "first seen" version as 2024.312.0, which is the release that
included https://github.com/ppy/osu/pull/27401 which would be directly
responsible for this mess.
2024-09-19 14:30:02 +02:00
StanR
732a114b95 Slight refactoring 2024-09-19 15:53:18 +05:00
Dean Herbert
188a430418
Merge branch 'master' into grids-3 2024-09-19 18:21:05 +09:00
StanR
0bad5e4684 Move slider-related ratio multiplier out of the delta switch block, add nerf for ratios with delta difference fractions that are too big, adjust consts 2024-09-19 04:38:01 +05:00
Bartłomiej Dach
67a7f608f1
Fix slider end drag marker being in incorrect position for stacked sliders
Closes https://github.com/ppy/osu/issues/29884.
2024-09-17 08:23:46 +02:00
StanR
c9ce7d29e6 Adjust multipliers 2024-09-16 01:04:46 +05:00
StanR
bee18b03e7 Reduce history max overall instead of using clock rate 2024-09-16 00:49:36 +05:00
StanR
145731bdef More balancing 2024-09-15 02:48:41 +05:00
StanR
863a74f980 Balancing 2024-09-15 02:08:37 +05:00
StanR
738d4bcb80 Reduce ratio if we're starting island counting after a slider 2024-09-15 01:49:52 +05:00
StanR
db626f168a Refactor 2024-09-15 01:12:41 +05:00
StanR
5e8174faa8 Reduce ratio for island size 1 2024-09-14 22:03:01 +05:00
StanR
d544498e8d Merge branch 'master' into rhythm-fixes 2024-09-12 15:29:20 +05:00
Dan Balasescu
d54c6aefbe
Merge branch 'master' into pp_refactoring_osustrainskill 2024-09-12 17:28:24 +09:00
Dean Herbert
a8365202d9
Merge pull request #29841 from bdach/replay-analysis-mod-woes
Fix several issues in interactions between playfield-altering mods and the replay analysis feature
2024-09-12 13:52:09 +09:00
StanR
3398497d4b Remove kickslider changes 2024-09-12 01:04:07 +05:00
Dan Balasescu
d935ed949c
Merge branch 'master' into pp_refactoring_speed_eval_change 2024-09-11 23:45:10 +09:00
Bartłomiej Dach
f38ae5f239
Fix replay analysis overlay being affected by visibility impairing mods
Closes https://github.com/ppy/osu/issues/29748.
2024-09-11 15:55:02 +02:00
Bartłomiej Dach
4a39873e2a
Fix replay analysis overlay not rotating with Barrel Roll enabled
Closes https://github.com/ppy/osu/issues/29839.
2024-09-11 15:54:30 +02:00
Dean Herbert
41d32ab2ca
Fix display length not resetting to default because default was wrong
Closes https://github.com/ppy/osu/issues/29757.
2024-09-07 13:54:12 +09:00
Sheppsu
e94e08fec3 fix marker depth when rewinding 2024-09-05 20:14:36 -04:00
Bartłomiej Dach
b9ddac4201
Fix test failures 2024-09-05 09:45:37 +02:00
Dean Herbert
167e3a3377
Make loading asynchronous 2024-09-05 16:25:08 +09:00
Dean Herbert
a1cf67be62
Add setting to adjust replay analysis display length 2024-09-05 15:53:53 +09:00
Dean Herbert
0f01a855af
Add note about cursor hiding being potentially flaky 2024-09-05 15:30:42 +09:00
Dean Herbert
47a9b345eb
Rename config variables and setting strings 2024-09-05 15:15:15 +09:00
Dean Herbert
7390d89c75
Switch to using CircularProgress for more consistent sizing
Also show both mouse buttons at once on frame markers.
2024-09-05 15:12:53 +09:00
Dean Herbert
4f719b9fec
One more rename pass 2024-09-05 14:28:20 +09:00
Dean Herbert
2d198e57e1
Second visual design pass 2024-09-05 14:17:53 +09:00
Dean Herbert
08ebc83a89
Fix path getting misaligned with negative position values 2024-09-05 12:14:24 +09:00
Dean Herbert
21146c3501
Add back shadow cast 2024-09-05 12:08:49 +09:00
Dean Herbert
a6ed719454
Visual design pass 2024-09-05 12:08:49 +09:00
Dean Herbert
a4a37c5ba6
Simplify lifetime entries and stuff 2024-09-05 12:08:49 +09:00
Dean Herbert
7f9a98a7aa
More renames 2024-09-05 12:08:48 +09:00
Dean Herbert
dcb463acaf
Split out classes and avoid weird configuration stuff 2024-09-05 12:08:48 +09:00
Dean Herbert
6c07b873af
Isolate configuration container from analysis overlay 2024-09-04 19:37:36 +09:00
Bartłomiej Dach
130802e480
Add hotkey hints to editor menus 2024-09-04 12:16:54 +02:00
Dean Herbert
9b81deb3ac
Fix settings not working if ReplayPlayer is not available 2024-09-04 19:09:23 +09:00
Dean Herbert
cc3d220f6f
Allow settings to be added to replay HUD from ruleset 2024-09-04 19:00:23 +09:00
Dean Herbert
992a0da957
Rename classes slightly 2024-09-04 19:00:22 +09:00
Dean Herbert
a417fec234
Move analysis container implementation completely local to osu! ruleset 2024-09-04 19:00:22 +09:00
Sheppsu
c89597b060 fix config mistake 2024-09-04 03:37:52 -04:00
Sheppsu
a549cdd5b9 persist analysis settings 2024-09-03 04:49:50 -04:00
Sheppsu
56db29d0f5 make test go indefinitely 2024-09-03 01:38:54 -04:00
Sheppsu
a2b15fcdee rework code logic to make more sense
analysis container creates settings and the settings items are created more nicely
also removed use of localized strings because that can be done separately
2024-09-03 00:59:42 -04:00
Sheppsu
1ed94e598a Merge branch 'master' into replay-analysis-settings 2024-09-01 19:32:25 -04:00
Andrei Zavatski
501ea68a21 Merge branch 'master' into fast-circle 2024-08-31 17:31:30 +03:00
Andrei Zavatski
f5a2b5ea03 Use FastCircle in demanding places in the editor 2024-08-30 17:45:26 +03:00
Dan Balasescu
4e8fb0dcab
Merge branch 'master' into scroll-speed-std 2024-08-30 00:41:05 +09:00
StanR
7fda8bc95b Reduce repetition nerf for non-consecutive islands 2024-08-27 23:48:15 +05:00
StanR
ed45c947fc Adjust max history by clockrate to make rhythm calculation more consistent between rates 2024-08-27 15:50:08 +05:00
Bartłomiej Dach
7c0550d251
Merge pull request #29500 from frenzibyte/fix-pausing-for-the-millionth-time
Fix oversight in osu! pause input handling
2024-08-27 10:04:47 +02:00
Dean Herbert
1b26e1c126
Merge branch 'master' into free-sliders 2024-08-27 13:32:24 +09:00
Dean Herbert
50a8348bf9
Apply NRT to remaining classes in slider blueprint namespace 2024-08-27 13:18:55 +09:00
Dean Herbert
4fc96ebfde
Tidy some thing up 2024-08-27 13:13:22 +09:00
StanR
ce8286d299 Scale difficulty with doubletapness, make kicksliders not reduce the difficulty of the next object, adjust balancing 2024-08-24 04:37:58 +05:00
Dean Herbert
48cfd77ee8
Component -> Lookup 2024-08-23 14:48:50 +09:00
OliBomby
2de5ecceb8 Merge remote-tracking branch 'upstream/master' into scroll-speed-std 2024-08-22 20:17:14 +02:00
OliBomby
998b5fdc12 Add property EditorShowScrollSpeed to Ruleset 2024-08-22 19:53:34 +02:00
StanR
f1adc6f98c Don't cap max island size, make repetition nerf more lenient on high bpm, adjust balancing 2024-08-22 15:59:13 +05:00
Dean Herbert
1435fe24ae
Remove requirement of base calls to ensure user skin container layouts are retrieved 2024-08-22 19:14:30 +09:00
Dean Herbert
b57b8168a6
Rename Target lookup to Component 2024-08-22 19:00:28 +09:00
Dean Herbert
9a21174582
Move GlobalSkinnableContainers to global scope 2024-08-22 18:46:07 +09:00
Dean Herbert
36b4013fa6
Rename GameplaySkinComponentLookup -> SkinComponentLookup 2024-08-22 18:46:03 +09:00
Dean Herbert
f37cab0c6e
Rename SkinComponentsContainerLookup to GlobalSkinnableContainerLookup 2024-08-22 18:39:36 +09:00
OliBomby
094b184191 snap the slider duration in normal drag 2024-08-21 12:28:56 +02:00
Dan Balasescu
f4b8fc6165
Merge pull request #29536 from frenzibyte/fix-legacy-key-counter-position
Fix legacy key counter position not matching stable
2024-08-21 01:05:46 +09:00
Salman Ahmed
20658ef4ee Fix legacy key counter position not matching stable 2024-08-21 00:10:16 +09:00
Dean Herbert
ebff2ebf01
Merge pull request #29528 from smoogipoo/invert-snapping-binds
Make grid/distance snap binds T/Y respectively
2024-08-20 19:23:42 +09:00
Dan Balasescu
180c4a0248
Fix tests by removing assumption 2024-08-20 14:20:52 +09:00
Dan Balasescu
86c3c115f6
Make grid/distance snap binds T/Y respectively 2024-08-20 12:15:33 +09:00
TheOmyNomy
67de43213c Apply current cursor expansion scale to trail parts 2024-08-19 23:21:06 +10:00
Salman Ahmed
2a49167aa0 Remove flac whatever 2024-08-19 15:44:17 +09:00
Salman Ahmed
86d0079dcd Rewrite the fix to look less hacky and direct to the point 2024-08-19 15:43:59 +09:00
Dean Herbert
0c6bee4033
Merge branch 'master' into free-sliders 2024-08-19 14:27:54 +09:00
Salman Ahmed
62dec1cd78 Fix oversight in input blocking from osu! gameplay resume 2024-08-19 14:14:40 +09:00
Dean Herbert
7248c04ba4
Merge branch 'master' into polygon-tool 2024-08-19 13:54:02 +09:00
Dean Herbert
95d06333c1
Fix typo in editor field 2024-08-19 13:49:59 +09:00
Dean Herbert
f34132fd6b
Merge branch 'master' into polygon-tool 2024-08-19 13:00:02 +09:00
Dan Balasescu
3b94d1f8eb
Merge pull request #29433 from OliBomby/grid-anchors
Fix grid snap slider placement double-click not making new segment if anchor not hovered
2024-08-16 17:42:15 +09:00
OliBomby
00e210147a Fix inputs being eaten by PathControlPointVisualizer when no control points are selected 2024-08-15 23:11:07 +02:00
OliBomby
f717938a28 Fix grid snap slider placement double-click does not make new segment if anchor not hovered 2024-08-15 22:49:05 +02:00
Dean Herbert
5710f0f302
Merge pull request #26254 from frenzibyte/mania-combo-counter
Add argon/classic osu!mania combo counter
2024-08-15 17:56:28 +09:00
Salman Ahmed
49c71f7863 Fix beatmap skin always overriding ruleset HUD components 2024-08-15 16:47:10 +09:00
Dean Herbert
e465049050
Merge branch 'master' into mania-combo-counter 2024-08-14 15:12:00 +09:00
OliBomby
ae47671d17 clarify angle ranges in HandleFlip 2024-08-13 14:21:42 +02:00
Bartłomiej Dach
06c2952fe8
Merge branch 'master' into grids-3 2024-08-12 13:55:35 +02:00
Dean Herbert
d2eb6ccb8c
Standardise skin transformer code structure 2024-08-12 14:27:21 +09:00
StanR
3acd00b9b7 Tweak some values 2024-08-10 22:30:24 +05:00
Dean Herbert
8fdd94090b
Show object inspector values during placement 2024-08-09 18:02:37 +09:00
Dean Herbert
80c814008f
Update in line with new changes 2024-08-09 14:55:01 +09:00
Dean Herbert
60d383448f
Avoid making non-ruleset transformers in Ruleset.CreateSkinTransformer
This didn't make any sense, so let's do it a better way.
2024-08-08 16:29:54 +09:00
Dean Herbert
3c572abaa7
Merge branch 'master' into ruleset-specific-combo-counter 2024-08-08 03:21:52 +09:00
Dean Herbert
b1488fd5b7
Merge pull request #29027 from normalid-awa/feature/skin/legacy-input-overlay
Add legacy key counter support
2024-08-07 17:48:30 +09:00
Givikap120
a28913af7a multiplied numbers in multipliers 2024-08-06 14:47:05 +03:00
Dean Herbert
725dc4de9b
Use transformers for per-skin key counter implementation 2024-08-06 18:17:21 +09:00
Givikap120
ace1a57242 Update SpeedEvaluator.cs 2024-08-05 16:53:06 +03:00
Givikap120
ac57cdd1b3 speed eval refactoring 2024-08-05 16:50:06 +03:00
Givikap120
8431e62c47 fixed CI 2024-08-05 16:14:32 +03:00
Givikap120
251d009394 moved conversion formulas to respective classes 2024-08-05 16:08:30 +03:00
Givikap120
0a9b11d3a7 removed default difficulty multiplier 2024-08-05 15:57:02 +03:00
Dan Balasescu
117d6bf8d1
Merge branch 'master' into stacking-updates 2024-08-05 14:39:29 +09:00
Dan Balasescu
20b890570e
Replace try-finally with return
Try-finally has a small overhead that's unnecessary in this case given
how small the code block is.
2024-08-05 13:28:42 +09:00
Dean Herbert
419d5a76ce
Merge branch 'master' into fix-pause-in-osu-again 2024-08-05 12:00:21 +09:00
Caiyi Shyu
4b5c163d93 remove unnecessary LayoutValue 2024-08-02 17:45:05 +08:00
Caiyi Shyu
06af8cb952 interpolate parts in local space to avoid broken trails 2024-08-02 16:23:37 +08:00
Salman Ahmed
dc9f6a07cb Fix inspections 2024-08-02 11:16:32 +03:00
Salman Ahmed
f5a3eb5612 Add comment 2024-08-02 11:01:40 +03:00
Salman Ahmed
5368a43633 Fix clicking resume overlay hitting underlying hit circle 2024-08-02 10:22:01 +03:00
Salman Ahmed
eafc0f79af Fix clicking resume cursor not triggering a gameplay press in osu! 2024-08-02 10:21:44 +03:00
Dan Balasescu
ff7815c3c5
Submit vertices in local space to avoid cross-thread access 2024-07-30 20:13:00 +09:00
Caiyi Shyu
e564b1dc9e Fix cursor trail alignment issue with UI panels
- Convert cursor trail coordinates to local space before storing.
- Apply necessary transformations to align with other UI elements.
- Ensure cursor trail remains connected during UI panel movements.
2024-07-25 18:23:01 +08:00
Bartłomiej Dach
088e8ad0a2
Respect pre-empt time when auto-generating breaks
Closes https://github.com/ppy/osu/issues/28703.
2024-07-23 13:30:13 +02:00
OliBomby
c57232c220 enforce minimum duration based on snap 2024-07-22 11:58:53 +02:00
OliBomby
9fb9a54a4d hold shift to adjust velocity instead of duration 2024-07-22 11:34:07 +02:00
Bartłomiej Dach
088b8aff11
Merge pull request #28881 from smoogipoo/fix-judgement-cut
Fix judgement animation getting cut early
2024-07-22 09:24:57 +02:00
Salman Ahmed
e539670df1 Add explanatory note 2024-07-19 19:19:36 +03:00
Salman Ahmed
4f6c7fe7c3 Schedule resume operation by one frame to ensure the triggered key down event does not cause a gameplay press 2024-07-19 18:48:35 +03:00
StanR
c1532bcb57 Reduce base ratio a bit 2024-07-19 11:01:42 +05:00
StanR
bae9625b0b Make repetition nerf harsher, buff initial rhythm ratio, small refactoring 2024-07-19 10:13:50 +05:00
Dan Balasescu
a7e110f669
Don't rely on single-use properties 2024-07-18 19:07:02 +09:00
Dean Herbert
c1414f332e
Merge branch 'master' into free-sliders 2024-07-18 18:13:43 +09:00
OliBomby
7dc006f9ba fix horizontal flip rotation 2024-07-16 13:19:01 +02:00
Dan Balasescu
ced11e6949
Even better readability 2024-07-16 12:23:46 +09:00
Dan Balasescu
fcc8e7be8a
Invert condition to reduce number of brain flips required 2024-07-16 12:09:09 +09:00
StanR
67cb4a2d02 InspectCode 2024-07-15 22:54:25 +05:00
StanR
e25642b484 Implement a bunch of rhythm difficulty calculation fixes 2024-07-15 14:45:31 +05:00
OliBomby
2bbaa8e43c make flips grid-type aware 2024-07-14 18:12:55 +02:00
OliBomby
a80e333786 add playfield origin as third origin option 2024-07-14 17:27:04 +02:00
OliBomby
9e5d099b1b rename playfield centre origin to grid centre 2024-07-14 17:13:22 +02:00
OliBomby
7a319a6d74 dont rotate scale when in selection origin mode 2024-07-14 17:03:17 +02:00
OliBomby
58eb7f6fe1 fix rotated scale bounds again 2024-07-14 16:58:05 +02:00
OliBomby
ae38002777 Revert "fix incorrect rotated bound checking"
This reverts commit 4165ded813.
2024-07-14 15:46:40 +02:00
Bartłomiej Dach
37a296ba4c
Limit per-frame movement hitobject processing to stacking updates 2024-07-11 13:36:14 +02:00
Bartłomiej Dach
38796aa7e7
Merge branch 'master' into stacking-updates 2024-07-11 13:23:11 +02:00
Bartłomiej Dach
c8a64c5950
Remove setup screen controls that do nothing useful
Before I go with a hammer to redesign these, I want to remove stuff that
does nothing first.

Hard-breaks API to allow rulesets to specify an enumerable of custom
sections rather than two specific weird ones.

For specific rulesets:

- osu!:
  - Stack leniency slider merged into difficulty section.
- osu!taiko:
  - Approach rate and circle size sliders removed.
  - Colours section removed.
- osu!catch:
  - No functional changes.
- osu!mania:
  - Special style toggle merged into difficulty section.
  - Colours section removed.
2024-07-10 14:53:16 +02:00
Bartłomiej Dach
9cc0e0137b
Snap to stack in osu! composer when dragging to any of the items on it
Previously it would be required to drag to the starting position of the
stack which feels weird.
2024-07-09 13:58:58 +02:00
Bartłomiej Dach
ec9040798f
Run stacking when performing movement in osu! composer
Closes https://github.com/ppy/osu/issues/28635.
2024-07-09 13:52:36 +02:00
OliBomby
89f106d14f Merge remote-tracking branch 'upstream/master' into free-sliders 2024-07-03 20:40:25 +02:00
OliBomby
5697c82bb8 add a small bias towards longer distances to prevent jittery behaviour on path self-intersections 2024-07-03 20:33:00 +02:00
OliBomby
3926af1053 Use draggable handle for length adjust 2024-07-03 20:17:39 +02:00
OliBomby
dfe6c70996 prevent flipping objects far offscreen 2024-07-03 19:08:31 +02:00
OliBomby
4165ded813 fix incorrect rotated bound checking 2024-07-03 19:03:15 +02:00
Dean Herbert
e151454c4e
Add missing check for curve menu items not yet being created 2024-07-04 01:00:51 +09:00
Dean Herbert
f7339e3e8b
Remove outdated(?) todo 2024-07-04 00:26:00 +09:00
Dean Herbert
6abb728cd5
Change menu items to be in same order as hotkeys 2024-07-04 00:22:46 +09:00
Dean Herbert
42aff953d9
Ensure menu items update when curve type changes 2024-07-04 00:19:20 +09:00
OliBomby
0797d942ae fix warning 2024-07-03 16:41:57 +02:00