1
0
mirror of https://github.com/ppy/osu.git synced 2024-12-15 12:42:54 +08:00
Commit Graph

34992 Commits

Author SHA1 Message Date
Bartłomiej Dach
15d9147edd Ensure equality member consistency for SampleInfo
The previous implementation of `SampleInfo`'s equality members was not
completely correct in its treatment of the `sampleNames` array. While
`Equals()` compared the values of `sampleNames` using `SequenceEqual()`,
therefore performing a structural check that inspects the contents of
both arrays, `GetHashCode()` used `HashCode.Combine()` directly on the
arrays, therefore operating on reference equality. This could cause the
pooling mechanism of samples to fail, as pointed out in #11079.

To resolve, change the `GetHashCode()` implementation such that it also
considers the contents of the array rather than just the reference to
the array itself. This is achieved by leveraging
`StructuralEqualityComparer`.

Additionally, as a bonus, an array sort was added to the constructor of
`SampleInfo`. This is intended to be a "canonicalisation" processing
step for the array of sample names. Thanks to that sort, two instances
of `SampleInfo` that have the same sample names but permutated will also
turn out to be equal and have the same hash codes, given the
implementation of both equality members. This gives `SampleInfo`
set-like semantics.
2020-12-03 23:25:53 +01:00
Bartłomiej Dach
71fa0da7f4 Add failing test cases 2020-12-03 23:13:48 +01:00
Bartłomiej Dach
4d739f11a8 Fix spinner ticks getting increased visibility state
Regressed in #10696. The old `IsFirstHideableObject()` method did not
consider nested hitobjects, while its replacement -
`IsFirstAdjustableObject()` - did. Therefore, spinner ticks could be
considered first adjustable objects, breaking the old logic.

There is no need to match over `SpinnerBonusTick`, as it inherits from
`SpinnerTick`.
2020-12-03 22:51:59 +01:00
Bartłomiej Dach
0bc591fef2 Add failing assertions
`GameplayBeatmap` has to be used instead of the normal bindable
`Beatmap`, beecause the former uses osu!-specific hitobjects, while
the latter returns convert objects (i.e. `ConvertSlider`s).

Similarly, the mod has to be fetched from the player instead of the
global bindable, as `Player` has its own cloned instance of the mod, to
which the beatmap is applied. The global bindable instance does not have
`FirstObject` set.
2020-12-03 22:51:59 +01:00
Endrik Tombak
c25e2c3dd5 Select recommended beatmap if last selection is filtered 2020-12-03 23:13:14 +02:00
Dan Balasescu
1d92800761
Merge pull request #11068 from peppy/fix-carousel-edge-masking
Fix beatmap carousel panels getting masked away when out of scroll bounds
2020-12-03 20:40:44 +09:00
smoogipoo
09af4bbd57 Merge branch 'dho-remove-onparentreceived' into fix-hidden-mod-crash 2020-12-03 20:10:16 +09:00
smoogipoo
0bdf99b97a Remove OnParentReceived() 2020-12-03 20:08:42 +09:00
smoogipoo
73e99718bc Change order of OnParentReceived() 2020-12-03 20:06:26 +09:00
ekrctb
7e66714c2f Use ApplyCustomUpdateState for dropping transformation
We cannot just apply the transforms because DHO clears transforms when state is updated
2020-12-03 18:46:58 +09:00
ekrctb
be456f9c6b Make DroppedObjectAnimation private 2020-12-03 18:46:58 +09:00
Dean Herbert
37d550f42a
Merge pull request #11035 from smoogipoo/add-playlist-length 2020-12-03 18:39:54 +09:00
Dean Herbert
1c15c4bcee
Merge pull request #11072 from peppy/update-framework 2020-12-03 18:32:45 +09:00
Dean Herbert
78417b8015
Merge pull request #10905 from smoogipoo/hit-sample-pooling
Implement hitsample pooling
2020-12-03 18:09:53 +09:00
smoogipoo
8245bb85dc Invoke on initial bind 2020-12-03 18:06:55 +09:00
smoogipoo
62b1e37f73 Use async overloads 2020-12-03 18:04:53 +09:00
smoogipoo
3e62da119e Add to inspector also 2020-12-03 17:59:39 +09:00
Dean Herbert
78c43641d1 Update imagesharp namespaces (and consume System.Drawing types instead) 2020-12-03 17:43:09 +09:00
Dean Herbert
c64343c7d7 Update framework 2020-12-03 17:42:41 +09:00
Dean Herbert
d7cfaa38f1
Merge branch 'master' into hit-sample-pooling 2020-12-03 17:08:13 +09:00
ekrctb
1d669cf65e Add more TestSceneCatcher tests
Some tests are moved from TestSceneCatcherArea
2020-12-03 16:44:36 +09:00
ekrctb
5a5c956ced Move more logic to Catcher from CatcherArea 2020-12-03 16:44:36 +09:00
ekrctb
2eb2c934cc Refactor fruit dropping code
- The repeated `Remove` call was quadratic complexity.
  Now it is linear time.
2020-12-03 16:44:36 +09:00
ekrctb
873f2363c1 Simplify the fruit stacking code
It is now more clear that
the expression of distance checking is probably unintended (a bug)
2020-12-03 16:44:36 +09:00
ekrctb
8d32cca5d6 Use more specific type for caught object 2020-12-03 16:44:36 +09:00
ekrctb
a231a4aa6d Remove unused method 2020-12-03 16:44:36 +09:00
ekrctb
af45e8d97b Don't delay caught fruit loading
It is not needed anymore because
some code in DCHO is moved from `load` to constructor.
2020-12-03 16:44:36 +09:00
ekrctb
e5c8e06c4b Create children in the constructor 2020-12-03 16:44:36 +09:00
Dean Herbert
3550e5b30f Add length display to room screen as well 2020-12-03 16:42:06 +09:00
Dean Herbert
1039df5e16
Merge pull request #11053 from smoogipoo/fix-banana-samples
Fix bananas not playing sounds
2020-12-03 16:01:45 +09:00
Dean Herbert
de1c628d19
Merge pull request #11070 from smoogipoo/fix-songselect-panel-load
Fix song select panels not loading if partially offscreen
2020-12-03 15:50:14 +09:00
smoogipoo
31f7f7072d Fix song select panels not loading if partially offscreen 2020-12-03 15:13:20 +09:00
smoogipoo
db7e82c560 Add test 2020-12-03 14:54:28 +09:00
smoogipoo
e3bbc2b128 Rework osu! hidden mod to avoid storing hitobjects 2020-12-03 14:45:56 +09:00
Dean Herbert
897f593b37 Fix beatmap carousel panels getting masked away when out of scroll bounds
Regressed in https://github.com/ppy/osu/pull/10973 due to removed masking specification.

Closes #11067.
2020-12-03 13:26:28 +09:00
ekrctb
6c46046c24 Fix DHO expires while hit sound is playing 2020-12-03 12:32:49 +09:00
Dean Herbert
a5bb194cb8
Merge pull request #11060 from FamousPig/fix-raw-input
Fix MouseHandler not being ignored when Raw Input is enabled
2020-12-03 12:15:51 +09:00
ekrctb
2e8195e059 Use transformation to set fruit rotation 2020-12-03 12:13:14 +09:00
Bartłomiej Dach
7fd385efe6 Remove unused using directive 2020-12-02 20:01:58 +01:00
Leon Gebler
a2a10d4e13 Don't use nameof(MouseHandler) 2020-12-02 19:45:59 +01:00
Leon Gebler
bbde1f6b9c Fix MouseHandler not being ignored when raw input is enabled 2020-12-02 18:56:59 +01:00
Bartłomiej Dach
6c41830d4d
Merge pull request #11054 from peppy/update-resources
Update resources
2020-12-02 18:42:02 +01:00
Bartłomiej Dach
2b828faecb
Merge branch 'master' into update-resources 2020-12-02 18:07:46 +01:00
ekrctb
fdcfa81e46 Make RandomSeed a property, not a bindable 2020-12-02 20:53:47 +09:00
Dean Herbert
33b88e09cd
Merge pull request #11056 from smoogipoo/fix-spectator-test-failures
Fix spectator connecting not being thread-safe
2020-12-02 19:50:15 +09:00
smoogipoo
d5dccbc3d7 Fix spectator not being thread-safe 2020-12-02 19:13:09 +09:00
ekrctb
5936a8ffb4 Fix drawables are added multiple times in a test scene 2020-12-02 18:06:14 +09:00
ekrctb
1a6b8e022c Fix formatting 2020-12-02 17:20:52 +09:00
ekrctb
ef741a1471 Test banana colour change based on random seed 2020-12-02 17:16:36 +09:00
ekrctb
08848e49de Set banana combo colour using random seed 2020-12-02 17:12:30 +09:00