1
0
mirror of https://github.com/ppy/osu.git synced 2024-09-23 09:27:23 +08:00
Commit Graph

465 Commits

Author SHA1 Message Date
Dean Herbert
cd31cff8cd Fix event subscriptions not being cleaned up in DrawableCarouselBeatmap
The handling of cleanup is performed only the `Item_Set` method. This
was already correctly called for `DrawableCarouselBeatmapSet`, but not
for the class in question here.

This would cause runaway memory usage at song select when opening many
beatmaps to show their difficulties. For simplicity, we don't yet pool
these (and generate the drawables each time a set is opened) which isn't
great but likely will be improved upon when we update the visual /
filtering of the carousel. But this simplicity caused the memory usage
to blow out until exiting back to the main menu when cleanup would
finally occur.
2023-05-03 18:41:30 +09:00
Elvendir
216a88e18d limited max Date comparison 2023-03-18 21:35:10 +01:00
Elvendir
102576cd8c adddede LastPlayed as filter option in beatmap carousel 2023-03-18 17:53:41 +01:00
Cootz
556964eae0
Merge branch 'master' into BitmapUpdatesOnScore 2023-03-16 12:16:42 +03:00
Bartłomiej Dach
6c5ccdfd90
Merge branch 'master' into optimise-search 2023-03-07 22:07:29 +01:00
Bartłomiej Dach
5213bfa5c9
Merge branch 'master' into make_skin_reset_dangerous 2023-03-07 21:06:44 +01:00
Dean Herbert
5af41bb1c8 Move filter matching code into own method to simplify early returns 2023-03-07 17:24:17 +09:00
Dean Herbert
87d0bef313 Use nullable comparison helper method instead of manual implementation 2023-03-06 15:16:32 +09:00
mk56-spn
908651cc11 make ResetConfirmDialog properly utilise its parent's logic
Adjust name of `DeleteAction` to `DangerousAction`
2023-03-05 20:57:26 +01:00
OliBomby
70a925aab1 added extra early-returns 2023-03-04 16:49:33 +01:00
OliBomby
b90c389ff0 using List instead of Span in GetSearchableTerms 2023-03-04 15:42:35 +01:00
OliBomby
91d206e8d2 Optimised GetSearchableTerms
Reduced memory allocations to 1
2023-03-03 19:21:50 +01:00
Dean Herbert
82293c0c86 Don't filter away results with missing data when using "Date Submitted" or "Date Ranked" sort modes
From a user's perspective, changing a sort / order mode shouldn't filter
away results, but we were doing this.

In terms of UX expectations, in stable this kind of scenario would
results in a group being added to the end of son select with "Not
ranked" or "Unknown". I think we should aim to match this eventually.
2023-03-03 16:36:18 +09:00
mk56-spn
90227a6496 Rename DeleteConfirmationDialog.cs into DangerousActionDialog.cs 2023-02-27 21:57:59 +01:00
PC
7e127dafe2 Update reference 2023-02-07 11:52:47 +03:00
Cootz
2c7386db39 FIx score appearing on BeatmapLeaderboard and TopLocalRank 2023-02-06 15:14:14 +03:00
Dean Herbert
ddcc02fdfe
Merge pull request #22505 from Joehuu/fix-hover-click-sounds
Fix some clickable elements having no hover and click sounds
2023-02-06 16:52:19 +09:00
Joseph Madamba
5a76c1ab9c Refactor HoverSampleDebounceComponent to inherit Component 2023-02-03 00:29:25 -08:00
Dean Herbert
f7094567d7 Rename and document method to limit scope 2023-02-03 15:04:47 +09:00
Dean Herbert
500e9c7944 Refactor into a method rather than property 2023-02-02 14:53:58 +09:00
Dean Herbert
942e7729f3 Merge branch 'master' into carousel 2023-02-02 14:41:55 +09:00
Bartłomiej Dach
7ba448b13c
Update comment to match implementation 2023-01-18 17:12:57 +01:00
Dean Herbert
3b27774561 Remove OnlineID sort consideration 2023-01-18 19:21:02 +09:00
Dean Herbert
a9ac28b504 Add fallback sorts to CarouselBeatmapSet to ensure stable sorting 2023-01-17 16:40:25 +09:00
OliBomby
832d033777 Fix merge issues 2023-01-16 01:09:04 +01:00
OliBomby
ab6bf6e1dc Merge remote-tracking branch 'upstream/master' into carousel 2023-01-16 00:27:56 +01:00
OliBomby
87ee9ab813 Added custom menu items in DrawableCarouselBeatmap 2023-01-16 00:13:12 +01:00
Salman Ahmed
112cf403ec Fix intermittent failure in certain beatmap carousel tests 2023-01-13 19:41:44 +03:00
Bartłomiej Dach
aab84d50eb
Remove boxing overhead in CarouselItem comparator 2023-01-10 18:35:06 +01:00
Dean Herbert
b7e845201f Fix whitespace around Debug.Assert 2023-01-10 18:03:17 +09:00
Dean Herbert
d53dafa29f Revert Debug.Assert 2023-01-10 17:52:28 +09:00
mk56-spn
6abbc7dc28 Further fix nullability 2023-01-09 20:59:28 +01:00
mk56-spn
69260ca3c3 remove unnecessary usages of nullable forgiveness, add asserts for debugging 2023-01-09 18:36:55 +01:00
mk56-spn
47fb467012 Remove nullable disabling in carousel 2023-01-08 19:02:48 +01:00
Dan Balasescu
7bc8908ca9 Partial everything 2022-11-27 00:00:27 +09:00
Dean Herbert
d9d083752a Clamp backwards index to total current items to fix edge case of item removal 2022-10-26 11:03:11 +09:00
Dean Herbert
cf3bf41b49 Harden and simplify logic to avoid weird issues 2022-10-25 18:57:15 +09:00
Dean Herbert
22ea9a8ab4 Add early return of carousel group has no items 2022-10-25 13:34:22 +09:00
Dean Herbert
2456a18bc1 Rewrite implementation to avoid duplicated LINQ returns 2022-10-25 12:48:17 +09:00
Endrik Tombak
5a118cfdc3 Merge branch 'master' of https://github.com/ppy/osu into carousel-perform-selection
 Conflicts:
	osu.Game.Tests/Visual/SongSelect/TestSceneBeatmapCarousel.cs
2022-10-24 21:40:48 +03:00
Salman Ahmed
964ed01abb Add confirmation dialog for updating locally modified beatmaps 2022-10-13 02:40:15 +03:00
Dean Herbert
a44ba579c5 Fix beatmap update button not respecting user "prefer no video" setting
Closes #20701.
2022-10-11 14:27:40 +09:00
Dan Balasescu
3cfacb5e39
Merge pull request #20257 from peppy/update-button-show-login
Show login overlay when attempting to update a beatmap while logged out
2022-09-12 17:51:45 +09:00
Dean Herbert
94f8197e22 Show login overlay when attempting to update a beatmap while logged out 2022-09-12 16:15:14 +09:00
Salman Ahmed
95062c2cc8 Remove center origin specification to avoid single-frame layout issues 2022-09-09 19:42:58 +03:00
Salman Ahmed
dd10a06e3d Merge branch 'master' into top-rank-badge-order 2022-09-09 19:38:44 +03:00
Dean Herbert
1524623624 Fix back-to-front filter logic
Was copied across from a place which was checking for `match` and
applied verbatim to a place that was `filter`. Which are polar
opposites.
2022-09-01 19:59:27 +09:00
Dean Herbert
217fa00a72 Bring logic up-to-date 2022-08-26 19:32:49 +09:00
Dean Herbert
a146db0e35 Merge branch 'master' into carousel-perform-selection 2022-08-26 19:29:00 +09:00
Andrew Hong
55f1b43329 Removed check 2022-08-22 13:41:36 -04:00
Andrew Hong
c2036d3893 Moved filter exclusion 2022-08-22 03:39:46 -04:00
Andrew Hong
09ef13908c Adjust to reviews 2022-08-22 03:20:27 -04:00
Andrew Hong
c6a739f5a8 Add date submitted sorting 2022-08-21 23:09:33 -04:00
Salman Ahmed
fc7fc3d673 Fix newly imported beatmaps not using correct comparer for sorting 2022-08-01 19:13:57 +03:00
Dean Herbert
438067a18b Convert realm data propagation to more correctly use Live<T>
wip
2022-07-27 19:35:09 +09:00
Dean Herbert
41393616d8 Replace BeatmapCollection with RealmBeatmapCollection 2022-07-27 19:35:09 +09:00
Dean Herbert
9c543fef48 Remove CollectionManager 2022-07-27 18:45:33 +09:00
Dan Balasescu
8f7dff5c2c
Merge pull request #19378 from peppy/beatmap-update-test
Add separate beatmap update flow to handle edge cases better
2022-07-26 18:49:20 +09:00
Salman Ahmed
a4f6f2b9eb Make item ID comparer static 2022-07-26 09:55:37 +03:00
Dean Herbert
8370ca9765 Add ImportAsUpdate method to IModelImporter to avoid otehr changes 2022-07-26 15:49:04 +09:00
Salman Ahmed
693ac8750c Remove remaining uses of "child" terminology in non-drawable components 2022-07-26 09:43:47 +03:00
Salman Ahmed
d7ef4170be Maintain sort stability by using carousel item ID as fallback 2022-07-26 09:40:41 +03:00
Dean Herbert
b7f6413bce Fix old version of beatmap potentially not being deleted during update flow
This can happen if the online IDs are not present in the `.osu` files.
Previously this was only working due to the early logic in the import
process (that relies on matching all online IDs perfectly).
2022-07-25 19:51:19 +09:00
Salman Ahmed
3aecd288e2 Enable NRT on TopLocalRank 2022-07-23 09:27:03 +03:00
Salman Ahmed
1d0306810a Fix TopLocalRank not handling legacy scores properly 2022-07-23 09:24:38 +03:00
Salman Ahmed
727fe76b60 Fix TopLocalRank hacking around presence to hide on null rank
Fixed this here because that blocks `Schedule` from running, and I don't
want to add another override to the `IsPresent` flag.
2022-07-23 09:22:22 +03:00
Dean Herbert
3cfe624af1 Fix one more missed method with incorrect terminology 2022-07-21 16:16:41 +09:00
Dean Herbert
a05d7f4d8c Change carousel terminology to not use Children / InternalChildren 2022-07-21 16:06:06 +09:00
Dan Balasescu
2b399ec7ad
Merge branch 'master' into date-submitted-ranked 2022-07-20 18:36:57 +09:00
Dan Balasescu
de29078db2 Remove nullable disables 2022-07-20 15:16:40 +09:00
Dean Herbert
30daa0fd44 Add ranked and submitted date storage and filtering 2022-07-19 19:55:56 +09:00
Dean Herbert
17046b0553 Add basic handling of download failures 2022-07-19 19:01:23 +09:00
Dean Herbert
a16bf35581 Rename button class and add basic progress display 2022-07-19 18:29:36 +09:00
Dean Herbert
da360af15a Fix vertical centering of button 2022-07-19 18:29:36 +09:00
Dean Herbert
eaf4f6dbb7 Add beatmap update button 2022-07-19 18:29:36 +09:00
Salman Ahmed
102d0415f1 Merge branch 'master' into drawable-playlist-item-collection 2022-07-14 00:10:49 +03:00
Dean Herbert
fc274629f8 Add "last played" sort mode to song select
Note that this will consider the most recent play of any beatmap in
beatmap set groups for now, similar to other sort methods.
2022-07-13 16:43:43 +09:00
Salman Ahmed
a94fb62be3 Split collection toggle menu item to own class 2022-07-08 01:39:45 +03:00
Dean Herbert
31a447fda0 Update parameter discards 2022-06-24 21:26:19 +09:00
Dean Herbert
30eebf3511 Merge branch 'master' into c-sharp-10 2022-06-24 21:22:33 +09:00
Dean Herbert
f71f6302fd Remove unnecessary null casts 2022-06-24 14:50:11 +09:00
Dean Herbert
28837693e5 Nuke calculating everything
The whole component is pointless so I'm just going to nuke for now I
guess. Kind of makes the whole refactor effort pointless but oh well?

To expand on this, the implementation was actually incorrect as pointed
out at https://github.com/ppy/osu/pull/18819#pullrequestreview-1017886035.
2022-06-24 14:24:06 +09:00
Dean Herbert
01da6f20b3 Tidy up all remaining usages 2022-06-23 19:27:35 +09:00
Dean Herbert
7dec530ca5 Split out simple DifficultyIcon with no calculation overhead and update usages 2022-06-23 19:27:35 +09:00
Dan Balasescu
f8830c6850 Automated #nullable processing 2022-06-17 16:37:17 +09:00
Dean Herbert
4a5e86e451 Rename Beatmaps to BeatmapHashes for clarity 2022-06-10 14:03:51 +09:00
Dean Herbert
42cd7d9e6e Change CollectionManager to only store MD5 hashes instead of full BeatmapInfo 2022-06-08 18:23:09 +09:00
Joseph Madamba
4b54fedd88 Add back hide common string using new ToSentence() extension method 2022-06-03 20:09:20 -07:00
Dean Herbert
999b4505d1 Remove localisation of "hide" string to fix incorrect case 2022-04-24 16:37:11 +09:00
Joseph Madamba
5e5c8e78a6 Use existing web localisation for most hardcoded strings 2022-04-20 16:31:11 -07:00
Dean Herbert
e315313266 Split out IDialogOverlay to allow for easier testing 2022-04-18 18:36:26 +09:00
Dean Herbert
520d2d6cfa Fix beatmap carousel panels accepting input while marked as not-visible
This is an issue as carousel panels manage their own animated state. If
they are marked as not-visible (done at a higher level, from filtering
or update pathways) but clicked while fading out, they will animate back
to a visible state but not be marked as visible.

No tests for this one as it's probably not worthwhile to test (and hard
to do so). Manual testing can be done with the following patch:

```diff
diff --git a/osu.Game/Screens/Select/BeatmapCarousel.cs
b/osu.Game/Screens/Select/BeatmapCarousel.cs
index c3d340ac61..3372242acc 100644
--- a/osu.Game/Screens/Select/BeatmapCarousel.cs
+++ b/osu.Game/Screens/Select/BeatmapCarousel.cs
@@ -255,7 +255,7 @@ private void
beatmapSetsChanged(IRealmCollection<BeatmapSetInfo> sender, ChangeS
             }

             foreach (int i in changes.NewModifiedIndices)
-                UpdateBeatmapSet(sender[i].Detach());
+                Scheduler.AddDelayed(() =>
                 UpdateBeatmapSet(sender[i].Detach()), 100, true);

             foreach (int i in changes.InsertedIndices)
                 UpdateBeatmapSet(sender[i].Detach());

```

- Enter gameplay and adjust beatmap offset then return to song select
  and click the flashing panel.
OR
- Enter editor and save then return to song select and click the
  flashing panel.

Closes https://github.com/ppy/osu/discussions/17171.
2022-03-09 16:08:52 +09:00
Dean Herbert
da29947ecd Disallow interaction with carousel set difficulty icons unless selected
I kinda liked this flow, but from multiple reports from users it
definitely seems in the way. We can revisit after the new design is
applied to song select.

Note that this means the tooltips also don't display. If it is preferred
that they should (arguable from a UX perspective, since I'd expect to be
able to click at that point) then the issue can be addressed using a
slightly different path (a few more lines - nothing too complex).
2022-03-07 11:34:08 +09:00
Salman Ahmed
6f0e32826c Standardise ordering/grouping of IRulesetInfo/RulesetInfos 2022-02-11 04:27:11 +03:00
Dean Herbert
eb25730b61 Revert "Merge pull request #16716 from peppy/carousel-less-invalidations"
This reverts commit 8d13e0514b, reversing
changes made to 95582a9023.
2022-02-05 16:12:58 +09:00
Dean Herbert
6bc6675fa1 Adjust fade in times slightly 2022-01-31 14:46:20 +09:00
Dean Herbert
8917ab78f4 Reduce unnecessary container nesting and adjust empty state opacity slightly 2022-01-31 14:46:20 +09:00
Dean Herbert
2ee0db0ebf Move fade in function local 2022-01-31 14:46:20 +09:00
Dean Herbert
c3e3b2019d Reduce overhead of ApplyState by tracking previous values
Even with pooling applied, there are overheads involved with transforms
when quickly cycling through the carousel.

The main goal here is to reduce the transforms in cases the reuse is
still in the same state. Avoiding firing `FadeIn` and `FadeOut` are the
main areas of saving.
2022-01-31 14:46:20 +09:00
Dean Herbert
a06287e76a Remove DrawableCarouselItem.Update updating of height
Marginal from a performance aspect, but reads better.
2022-01-31 14:46:20 +09:00