1
0
mirror of https://github.com/ppy/osu.git synced 2024-11-15 13:47:24 +08:00
osu-lazer/osu.Game.Rulesets.Taiko
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
..
Beatmaps Remove unnecessary prefix 2023-12-06 22:00:35 +09:00
Configuration Removed unnecessary directives that were added automatically and I forgot to remove 2023-01-10 12:44:27 +00:00
Difficulty merged multipliers 2024-08-05 16:33:42 +03:00
Edit Remove setup screen controls that do nothing useful 2024-07-10 14:53:16 +02:00
Judgements Automated pass 2023-06-24 01:00:03 +09:00
Mods Implement taiko relax mod 2024-06-13 15:06:40 +02:00
Objects Fix swells not being correctly treated in editor gameplay test 2024-07-22 11:27:56 +02:00
Properties Automated pass 2023-06-24 01:00:03 +09:00
Replays Use AsNonNull() instead. 2022-07-02 19:48:32 +08:00
Resources Add conversion tests 2023-02-09 23:23:58 +01:00
Scoring Fix back-to-front conditional in taiko processor 2024-01-22 19:57:12 +01:00
Skinning Fix argon volume-aware hitsounds not correctly playing immediately after object placement 2024-09-23 13:38:26 +02:00
UI Merge pull request #27341 from Hiviexd/taiko-constant-speed-mod 2024-05-23 21:01:53 +09:00
osu.Game.Rulesets.Taiko.csproj Upgrade to .NET 8 SDK 2024-02-02 21:28:51 +09:00
TaikoInputManager.cs Automated pass 2023-06-24 01:00:03 +09:00
TaikoRuleset.cs Remove setup screen controls that do nothing useful 2024-07-10 14:53:16 +02:00
TaikoSettingsSubsection.cs localise remaining parts of the game settings 2024-02-03 00:08:36 +03:00
TaikoSkinComponentLookup.cs Rename GameplaySkinComponentLookup -> SkinComponentLookup 2024-08-22 18:46:03 +09:00
TaikoSkinComponents.cs Move DrumSamplePlayer to be a skinnable component 2023-07-05 18:44:27 +09:00