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

2003 Commits

Author SHA1 Message Date
Bartłomiej Dach
7816c41b94
Only transfer difficulty slider values on commit
Closes https://github.com/ppy/osu/issues/30112.
2024-10-04 14:08:46 +02:00
Bartłomiej Dach
99eb26b7d5
Redo the layout of sections based on discord feedback
See
https://discord.com/channels/188630481301012481/188630652340404224/1291358770064130140
and everything after.
2024-10-03 13:53:21 +02:00
Bartłomiej Dach
ddfa877b12
Fix code quality 2024-10-03 13:08:04 +02:00
Bartłomiej Dach
b15608343b
Replace setup screen controls with new "form" controls 2024-10-03 11:49:03 +02:00
Dean Herbert
590f27e0a0
Merge branch 'master' into hotkeys-in-context-menus 2024-10-01 15:50:19 +09:00
Dean Herbert
9a39b80a4d
Merge pull request #29970 from bdach/volume-aware-sample-equality-pitfall
Fix argon volume-aware hitsounds not correctly playing immediately after object placement
2024-09-27 16:38:35 +09:00
Dan Balasescu
3111d6a74d
Merge pull request #29986 from OliBomby/refactor-placement-tool
Refactor placement blueprints to not be limited to hit objects
2024-09-25 17:59:43 +09:00
OliBomby
e3b4483872 Refactor PlacementBlueprint to not be hitobject specific 2024-09-24 20:31:00 +02:00
Bartłomiej Dach
e8a394f894
Fix argon volume-aware hitsounds not correctly playing immediately after object placement
Closes https://github.com/ppy/osu/issues/29832.

The underlying reason for the incorrect sample playback was an equality
comparer failure.

Samples are contained in several pools which are managed by the
playfield. In particular, the pools are keyed by `ISampleInfo`
instances. This means that for correct operation, `ISampleInfo` has to
implement `IEquatable<ISampleInfo>` and also provide an appropriately
correct `GetHashCode()` implementation. Different audible samples must
not compare equal to each other when represented by `ISampleInfo`.

As it turns out, `VolumeAwareHitSampleInfo` failed on this, due to not
overriding equality members. Therefore, a `new
HitSampleInfo(HitSampleInfo.HIT_NORMAL, HitSampleInfo.BANK_NORMAL,
volume: 70)` was allowed to compare equal to a
`VolumeAwareHitSampleInfo` wrapping it, *even though they correspond to
completely different sounds and go through entirely different lookup
path sequences*.

Therefore, to fix, provide more proper equality implementations for
`VolumeAwareHitSampleInfo`.

When testing note that this issue *only occurs immediately after
placing an object*. Saving and re-entering editor makes this issue go
away. I haven't looked too long into why, but the general gist of it is
ordering; it appears that a `normal-hitnormal` pool exists at point
of query of a new object placement, but does not seem to exist when
entering editor afresh. That said I'm not sure that ordering aspect of
this bug matters much if at all, since the two `IHitSampleInfo`s should
never be allowed to alias with each other at all wrt equality.
2024-09-23 13:38:26 +02:00
Givikap120
2995df7903 removed unnecessary includes 2024-09-22 15:04:21 +03:00
Givikap120
1b77b3912b initial commit 2024-09-22 15:01:58 +03:00
Dan Balasescu
c7a2e79b6e
Merge branch 'master' into pp_refactoring_merge_multipliers 2024-09-12 16:22:55 +09:00
Bartłomiej Dach
130802e480
Add hotkey hints to editor menus 2024-09-04 12:16:54 +02:00
Dean Herbert
36b4013fa6
Rename GameplaySkinComponentLookup -> SkinComponentLookup 2024-08-22 18:46:03 +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
Givikap120
e6fc4f6766 merged multipliers 2024-08-05 16:33:42 +03:00
Bartłomiej Dach
157cc884f4
Fix swells not being correctly treated in editor gameplay test
Closes https://github.com/ppy/osu/issues/28989.

Because swell ticks are judged manually by their parenting objects,
swell ticks were not given a start time (with the thinking that there
isn't really one *to* give). This tripped up the "judge past objects"
logic in `EditorPlayer`, since it would enumerate all objects
(regardless of nesting) that are prior to current time and mark them as
judged. With all swell ticks having the default start time of 0 they
would get judged more often than not, leading to behaviour weirdness.

To resolve, give swell ticks a *relatively* sane start time equal to
the start time of the swell itself.
2024-07-22 11:27:56 +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
Dean Herbert
5350945340
Update HasFlag usages 2024-07-03 00:19:04 +09:00
Salman Ahmed
dce1b4ec6c Merge branch 'master' into ruleset-specific-combo-counter 2024-07-01 08:31:40 +03:00
StanR
df64d7f374 Refactor out taiko Peaks skill 2024-06-25 23:06:42 +05:00
Dan Balasescu
030853ed5a
Merge pull request #28472 from bdach/taiko-mod-relax
Implement relax mod for taiko
2024-06-17 13:49:17 +09:00
Bartłomiej Dach
d7997cc93c
Implement taiko relax mod 2024-06-13 15:06:40 +02:00
Bartłomiej Dach
5fcea01c13
Merge branch 'master' into ruleset-specific-combo-counter 2024-06-04 15:44:11 +02:00
Bartłomiej Dach
f13ca28d5e
Fix performance overhead from ternary state bindable callbacks when selection is changing
Closes https://github.com/ppy/osu/issues/28369.

The reporter of the issue was incorrect; it's not the beat snap grid
that is causing the problem, it's something far stupider than that.

When the current selection changes,
`EditorSelectionHandler.UpdateTernaryStates()` is supposed to update the
state of ternary bindables to reflect the reality of the current
selection. This in turn will fire bindable change callbacks for said
ternary toggles, which heavily use `EditorBeatmap.PerformOnSelection()`.

The thing about that method is that it will attempt to check whether any
changes were actually made to avoid producing empty undo states, *but*
to do this, it must *serialise out the entire beatmap to a stream* and
then *binary equality check that* to determine whether any changes were
actually made:

	7b14c77e43/osu.Game/Screens/Edit/EditorChangeHandler.cs (L65-L69)

As goes without saying, this is very expensive and unnecessary, which
leads to stuff like keeping a selection box active while a taiko beatmap
is playing under it dog slow. So to attempt to mitigate that, add
precondition checks to every single ternary callback of this sort to
avoid this serialisation overhead.

And yes, those precondition checks use linq, and that is *still* faster
than not having them.
2024-06-04 10:32:12 +02:00
Dean Herbert
0d6adf160b
Share scale factor with hit target 2024-05-27 14:20:28 +09:00
Joppe27
76f13b21da Correct scale of taiko-glow element 2024-05-25 23:28:51 +02:00
Dan Balasescu
6304a5ed41
Merge pull request #27341 from Hiviexd/taiko-constant-speed-mod
Add osu!taiko `Constant Speed` mod
2024-05-23 21:01:53 +09:00
Dean Herbert
d0b1ebff5a
Revert "Temporary rollback of framework / SDL3"
This reverts commit d7d569cf4e.
2024-05-22 16:29:39 +08:00
Dean Herbert
d7d569cf4e
Temporary rollback of framework / SDL3 2024-05-21 14:36:16 +08:00
Dan Balasescu
3b8b56cbcb
Apply required changes after framework masking updates 2024-05-09 20:18:53 +09:00
Dan Balasescu
362a7b2c77
Remove unused members from GameplaySkinComponentLookup 2024-04-19 18:03:13 +09:00
Salman Ahmed
51f79c33e1 Fix URL pointing to non-existent commit 2024-03-29 23:33:06 +03:00
Dean Herbert
c21805589e
Fix taiko mascot size not matching stable 2024-03-29 22:40:04 +08:00
Bartłomiej Dach
b74f8dba41
Merge branch 'master' into verify-abnormal-difficulty-settings 2024-03-26 11:13:16 +01:00
Bartłomiej Dach
1866b4b6b1
Refactor abstract check to reduce duplication 2024-03-26 11:13:03 +01:00
Bartłomiej Dach
e7cf1ab4df
Add checks for taiko drain rate 2024-03-26 10:58:39 +01:00
Bartłomiej Dach
6266af8a56
Fix taiko legacy score simulator not including swell tick score gain into bonus portion
Reported in https://discord.com/channels/188630481301012481/1097318920991559880/1221836384038551613.

Example score: https://osu.ppy.sh/scores/1855965185

The cause of the overestimation was an error in taiko's score simulator.
In lazer taiko, swell ticks don't give any score anymore, while they did
in stable.

For all intents and purposes, swell ticks can be considered "bonus"
objects that "don't give any actual bonus score". Which is to say,
during simulation of a legacy score swell ticks hit should be treated
as bonus, because if they aren't, then otherwise they will be treated
essentially as *normal hits*, meaning that they will be included in
the *accuracy* portion of score, which breaks all sorts of follow-up
assumptions:

- The accuracy portion of the best possible total score becomes
  overinflated in comparison to reality, while the combo portion of
  that maximum score becomes underestimated.

- Because the affected score has low accuracy, the estimated accuracy
  portion of the score (as given by maximmum accuracy portion of score
  times the actual numerical accuracy of the score) is also low.

- However, the next step is estimating the combo portion, which is done
  by taking legacy total score, subtracting the aforementioned
  estimation for accuracy total score from that, and then dividing
  the result by the maximum achievable combo score on the map. Because
  most of actual "combo" score from swell ticks was "moved" into the
  accuracy portion due to the aforementioned error, the maximum
  achievable combo score becomes so small that the estimated combo
  portion exceeds 1.

Instead, this change makes it so that gains from swell ticks are treated
as "bonus", which means that they are excluded from the accuracy portion
of score and instead count into the bonus portion of score, bringing the
scores concerned more in line with expectations - although due to
pessimistic assumptions in the simulation of the swell itself,
the conversion will still overestimate total score for affected scores,
just not by *that* much.
2024-03-25 19:09:38 +01:00
Arthur Araujo
6fa663c8ca Make check ruleset specific 2024-03-22 14:48:22 -03:00
Dan Balasescu
0beaa8e8c5
Merge branch 'master' into tcm-resume 2024-03-14 12:22:46 +09:00
Hivie
a8792b3585 better assertion 2024-03-08 16:02:17 +01:00
Hivie
48c8319567 change multiplier to 0.9x 2024-03-08 16:01:57 +01:00
Salman Ahmed
dac8f98ea6 Fix GameplayState not handled as nullable 2024-02-29 07:13:32 +03:00
Salman Ahmed
847a8ead4f Hide taiko scroller when beatmap has storyboard 2024-02-29 05:39:59 +03:00
Hivie
4ea9519db8 revert changes to IncompatibleMods 2024-02-23 21:15:52 +01:00
Hivie
46a1f5267f account for beatmap base scroll speed in constant visualisation method 2024-02-23 21:15:18 +01:00
Hivie
65c0b73dd5 mark TaikoModConstantSpeed as incompatible with EZ/HR 2024-02-23 17:55:49 +01:00
Hivie
7762d2469b exclude EZ/HR for now 2024-02-23 14:24:26 +01:00
Hivie
14b0c41937 remove unnecessary ComputeTimeRange override 2024-02-23 14:22:56 +01:00