Commit Graph

34824 Commits

Author SHA1 Message Date
ekrctb c1d39b6401 Don't inherit Fruit from Banana 2020-12-07 14:10:17 +09:00
ekrctb 7f1ad1040d Don't inherit DrawableFruit from DrawableBanana
- A banana cannot be hyper
2020-12-07 14:08:50 +09:00
ekrctb c0f39514b9 Fix legacy droplet scale 2020-12-07 14:00:22 +09:00
ekrctb b8f1c499a4 Allow PulpFormation to update formation dynamically
Pulps are lazily allocated but never deallocated for a DrawableFruit
2020-12-07 13:56:22 +09:00
ekrctb 0d73bf8488 Refactor catch default piece to allow reuse
But Fruit in-place update is still incomplete,
as child drawables are recreated when reused.
2020-12-07 13:14:00 +09:00
ekrctb d51d2c5331 Don't recreate pieces when catch DHO is reused 2020-12-07 12:59:03 +09:00
ekrctb 87189452d1 Refactor legacy skin piece to allow texture update 2020-12-07 12:57:24 +09:00
Dean Herbert 56699df0cf
Merge pull request #11101 from bdach/confine-mode-dropdown-fullscreen
Hide confine mode dropdown when full-screen
2020-12-06 22:47:04 +09:00
Bartłomiej Dach 71edada623 Hide confine setting entirely in fullscreen 2020-12-05 22:15:41 +01:00
Bartłomiej Dach 08f23cc424 Revert leasing logic 2020-12-05 22:15:41 +01:00
Bartłomiej Dach 15ce7bacf1 Add test coverage for confine functionality
Due to growing levels of complexity around confine logic.
2020-12-05 14:17:05 +01:00
Bartłomiej Dach 0a745144e3 Disable confine mode dropdown when full-screen
After hard-locking the mouse confine mode to `Always` in full-screen to
prevent confine issues from popping up, the confine mode dropdown in
settings had confusing UX due to seemingly having no effect when
full-screen.
2020-12-05 13:49:09 +01:00
Dean Herbert 9064ca9064
Merge pull request #11066 from ekrctb/fix-sample-expire
Fix DrawableHitObjects potentially expiring before their hit samples finish playback
2020-12-04 21:52:36 +09:00
Dean Herbert 91c5183b3e
Merge pull request #11092 from peppy/fix-fullscreen-mouse-confining
Always confine mouse to screen when running fullscreen
2020-12-04 21:52:20 +09:00
Dean Herbert 7c0edb796e Always confine mouse to screen when running fullscreen 2020-12-04 20:49:18 +09:00
Dean Herbert a21311f029
Merge pull request #11089 from Joehuu/one-binding-not-sentence-cased 2020-12-04 18:02:27 +09:00
Joehu b8c284b34f Fix one more key binding string not being sentence cased 2020-12-04 00:51:46 -08:00
Dean Herbert ff64ba1b08
Merge pull request #11071 from ekrctb/caught-object-refactor 2020-12-04 17:17:38 +09:00
Dean Herbert d3a17b65d5 Move public methods upwards 2020-12-04 14:36:40 +09:00
Dean Herbert 8988023407 Tidy up code formatting and remove unnecessarily publicly exposed methods 2020-12-04 14:35:56 +09:00
Dean Herbert aa24890aff
Merge branch 'master' into caught-object-refactor 2020-12-04 14:12:33 +09:00
Dean Herbert e37c325d94
Merge pull request #11084 from bdach/fix-hidden-increased-visibility-state-2 2020-12-04 14:08:36 +09:00
Dean Herbert a0f92628ac Merge branch 'master' into fix-sample-expire 2020-12-04 13:49:08 +09:00
Dean Herbert 2f4b3a2d4c
Merge branch 'master' into fix-hidden-increased-visibility-state-2 2020-12-04 13:38:01 +09:00
Dean Herbert aeb059bcce
Merge pull request #11069 from smoogipoo/fix-hidden-mod-crash 2020-12-04 13:27:43 +09:00
Dean Herbert 48c42e4247
Merge pull request #11083 from LittleEndu/recommend-if-filtered
Select recommended beatmap if last selection is filtered
2020-12-04 13:22:34 +09:00
Dean Herbert 0134ac94a7
Merge pull request #11055 from ekrctb/catch-stateless-rng 2020-12-04 13:08:30 +09:00
Dean Herbert 5db15a6b26
Merge branch 'master' into fix-hidden-mod-crash 2020-12-04 12:50:02 +09:00
Dean Herbert d15f947778
Merge pull request #11073 from smoogipoo/dho-remove-onparentreceived 2020-12-04 11:41:34 +09:00
Dean Herbert 5ded4b9faa
Merge branch 'master' into dho-remove-onparentreceived 2020-12-04 11:04:56 +09:00
Dean Herbert 3b38e0259f
Merge pull request #11085 from bdach/sampleinfo-consistent-hashcode 2020-12-04 10:31:44 +09:00
ekrctb 23af70dd32 Invert `if` 2020-12-04 10:24:25 +09:00
ekrctb e82ca66d3e Fix depth of dropped objects 2020-12-04 10:21:54 +09:00
ekrctb 3de46d0a3b Fix & clarify catcher tests 2020-12-04 10:14:00 +09:00
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