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

436 Commits

Author SHA1 Message Date
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
Dean Herbert
7af23328a4
Merge branch 'master' into ruleset-ordering-fix 2022-01-27 21:46:03 +09:00
Dean Herbert
3ae5973ab7 Fix compilation error due to commit split 2022-01-27 17:08:31 +09:00
Dean Herbert
5637fd64d6 Perform ordering using IComparable instead 2022-01-27 15:59:20 +09:00
Dean Herbert
5288eedd31 Update all usages of RulesetID and Ruleset.ID to use Ruleset.OnlineID 2022-01-27 15:38:03 +09:00
Dean Herbert
f30d63107a Add SortID to RulesetInfo to allow stable ordering of rulesets for display 2022-01-27 15:35:16 +09:00
Dean Herbert
f70e10e8a4 Fix ruleset filter matching using OnlineID instead of ShortName 2022-01-27 01:25:57 +09:00
Derrick Timmermans
873d367615
Fix custom rulesets not being able to convert maps 2022-01-26 15:51:39 +01:00
Dean Herbert
473c4d00ca Fix grouped difficulty icons using incorrect lookup for ruleset grouping 2022-01-26 18:38:44 +09:00
Dean Herbert
d7342880f5 Update remaining cases of clashes with realm.Write and realm.RegisterForNotifications 2022-01-25 13:09:48 +09:00
Dean Herbert
6eb2c28e41 Rename RealmContextFactory to RealmAccess 2022-01-24 20:38:07 +09:00
Dean Herbert
40aa873190 Rename register methods to better explain their purpose 2022-01-24 14:37:36 +09:00
Dean Herbert
e9e3e024a1 Update all usages of QueryAsyncWithNotifications to use new Register pathway 2022-01-23 20:28:04 +09:00
Dean Herbert
1f157d729d Update existing subscriptions to new style
Fix missing detach calls in `MusicController`
2022-01-21 20:05:03 +09:00
Dean Herbert
ff4f40db8a Merge branch 'master' into carousel-performance-n 2022-01-21 15:27:42 +09:00
Dan Balasescu
c4f24ef96c
Merge pull request #16542 from peppy/carousel-search-performance-less-simple
Avoid performing full filter when updating carousel beatmap sets
2022-01-21 15:05:30 +09:00
Dean Herbert
bed7b69464 Apply NRT to CarouselGroup 2022-01-21 13:26:29 +09:00
Dean Herbert
5b24800b0e Avoid applying filter in UpdateBeatmapSet flow 2022-01-21 13:26:25 +09:00
Dean Herbert
45bf35c425 Avoid performing keyword filtering at song select unless keywords are specified 2022-01-21 12:26:24 +09:00
Dean Herbert
9a864267d2 Fix CarouselGroupEagerSelect not invoking subclassed AddChild from AddChildren calls 2022-01-20 21:57:16 +09:00
Dan Balasescu
581873f944
Merge pull request #16497 from peppy/top-local-rank-optimisation
Rewrite `TopLocalRank` to use realm subscriptions
2022-01-19 14:22:12 +09:00
Dean Herbert
9be5bf38c6 Simplify binding/invalidation in TopLocalRank 2022-01-19 13:20:52 +09:00
Dean Herbert
7f65f3a47f Remove all usage of BaseDifficulty (and access Difficulty instead) 2022-01-18 22:57:39 +09:00
Dean Herbert
f5b8653491 Add spaces to query string 2022-01-18 19:28:09 +09:00
Dean Herbert
27ea37c690 Rewrite TopLocalRank to use realm subscriptions
This addresses the number one performance concern with realm (when
entering song select). Previous logic was causing instantiation and
property reads of every score in the database due to the `AsEnumerable`
specfication.
2022-01-18 18:17:53 +09:00
Dean Herbert
eb70a1eeb7 Replace compatibility properties with direct references 2022-01-12 18:13:14 +09:00
Dean Herbert
6919df18fa Fix incorrect ordering and grouping of difficulties at song select 2022-01-12 17:00:17 +09:00
Dean Herbert
de3a338d02 Update realm queries to use Filter to allow for indirect property filtering 2022-01-12 17:00:16 +09:00
Dean Herbert
3811bd8520 Fix some null inspections 2022-01-12 17:00:16 +09:00
Dean Herbert
6d60aa7d9c Replace TopLocalRank event flow with realm subscriptions 2022-01-12 17:00:16 +09:00
Dean Herbert
00e3af3366 Update model manager and many related classes to get things compiling again 2022-01-12 17:00:00 +09:00
Dean Herbert
4f6a05ce3d Reimplement all query methods 2022-01-12 16:57:27 +09:00
Dean Herbert
b8cd3cdbbc Various updates to ruleset and primary key usages to move closer to realm support 2022-01-12 16:57:13 +09:00
Dean Herbert
213d89b479 Update null fallback cases involving OnlineID 2022-01-12 16:39:36 +09:00
Dean Herbert
02d8a6359a Update FilterMatchingTest and filter code to use ruleset's OnlineID
The tests were relying on the `RulesetID` being set to 0 in the example
beatmap, even though the ruleset *instance* was set to ID 5.

This explicitly adds that 0 value to show intent, and also removes the
incorrect specification of 5 (which would cause the convert filter tests
to fail).

Also updates the filter code to use `OnlineID`, which is required in
realm changes.
2022-01-10 12:30:34 +09:00
Dean Herbert
7c2e79f911 Update all simple cases of switching to IWorkingBeatmap 2021-11-17 20:56:57 +09:00
Dean Herbert
d2d66766d4
Merge branch 'master' into songselect-audio-improvements 2021-11-12 19:40:04 +09:00
Dean Herbert
692e846acd Rename BeatmapSetInfo.OnlineBeatmapSetID to OnlineID to match interface 2021-11-12 17:52:44 +09:00
Dean Herbert
6a098a8634 Rename BeatmapInfo.OnlineBeatmapID to OnlineID to match interface 2021-11-12 17:46:24 +09:00
Dean Herbert
51a353e12d Rename BeatmapInfo.Version to DifficultyName to match underlying interface 2021-11-11 17:20:53 +09:00
Dean Herbert
ebe58cee11 Rename BeatmapInfo.StarDifficulty to StarRating to match underlying interface 2021-11-11 17:19:46 +09:00
Jamie Taylor
6dc13ef396
Use default hover sample instead of song-ping (they're the same sample anyway) 2021-11-10 17:14:20 +09:00
Dean Herbert
78aef9ce86
Merge branch 'master' into remove-stupid-weak-reference-bindable-events 2021-11-08 13:35:49 +09:00
Dean Herbert
62600b47b1 Merge branch 'master' into user-class-cleanup 2021-11-08 12:51:12 +09:00
Dean Herbert
54f72d68ca Revert weird event flow in model manager/importers 2021-11-05 19:12:49 +09:00
Dean Herbert
6399c695e8 Update usages of BufferedContainer in line with framework changes 2021-11-05 15:54:49 +09:00
Dean Herbert
ed07ee8c61 Update all existing usages of AuthorString/AuthorId
Unfortunately the getters need to be left in place else EF breaks.
2021-11-04 18:59:37 +09:00
Dean Herbert
86540d1fb6 Update existing usages of Author as string to access Username directly 2021-11-04 18:57:54 +09:00
Dean Herbert
d1e6d1cb98 Update some other missed incorrect null/empty usages 2021-11-04 14:50:43 +09:00
Dean Herbert
67d9590a79 Fix new inspections 2021-11-04 14:02:09 +09:00
Dean Herbert
6944151486 Apply batch fixing of built-in types using var 2021-10-27 13:04:41 +09:00
Bartłomiej Dach
6802e9ec10
Remove FixedWidth and add AutoSizeAxes specs to all usages 2021-10-25 20:24:48 +02:00
Dean Herbert
d3b9660148 Move common interface implementations to extension methods 2021-10-05 14:41:14 +09:00
Dean Herbert
ec61c3c5ee Rename all remaining cases 2021-10-03 00:55:29 +09:00
Dean Herbert
973c31132b Rename BeatmapInfo variables which were named beatmap for clarity 2021-10-02 12:45:34 +09:00
Endrik Tombak
43e8e3e922 Add comments to GetNextToSelect() 2021-08-27 18:16:53 +03:00
Endrik Tombak
8bd7837bf7 Fix off-by-one skip amount 2021-08-26 19:29:58 +03:00
Endrik Tombak
a8d869c31c Replace SkipWhile() LINQ with a while loop 2021-08-26 18:31:19 +03:00
Endrik Tombak
b484bd1af3 Rename parameter and remove redundant parentheses 2021-08-25 22:43:58 +03:00
Endrik Tombak
52a243afca Don't select random beatmap when previous was filtered 2021-08-25 22:03:07 +03:00
Gagah Pangeran Rosfatiputra
2b1d3c8e9c
add od filter in search filter 2021-06-26 21:05:01 +07:00
Dean Herbert
046087a367 Fix access to AliveChildren before IsLoaded 2021-05-27 16:58:01 +09:00
Dean Herbert
b3b39c4c13 Fix BeatmapCarousel accessing ScreenSpaceDrawQuad of non-loaded children
Fixes failure seen at
https://ci.appveyor.com/project/peppy/osu/builds/39302762/tests.
2021-05-26 15:42:27 +09:00
Dean Herbert
df5970fab4 Create base implementations of the two most common TernaryStateMenuItems 2021-05-20 19:34:53 +09:00
Joseph Madamba
a21718f1cd Move source case to a better spot 2021-05-09 14:26:45 -07:00
Joseph Madamba
8964d51de9 Add ability to sort by source in song select 2021-05-09 14:10:38 -07:00
Jamie Taylor
ffacd38e57 Reduce the randomised pitch range of hover sounds 2021-04-09 23:03:14 +09:00
Bartłomiej Dach
42c3309d49 Use ruleset criteria in parsing and filtering 2021-03-02 20:11:21 +01:00
Dan Balasescu
46ea0f44eb
Merge branch 'master' into beatmap-difficulty-cache-nullable 2021-02-25 22:52:15 +09:00
Dean Herbert
03771ce8ec Allow determining a BeatmapDifficultyCache's bindable return's completion state via nullability 2021-02-25 16:19:01 +09:00
Dean Herbert
e82eaffaed Flip order back to original for romanisable strings 2021-02-25 14:14:07 +09:00
Dean Herbert
8a97e2e28d Update LocalisedString usages to RomanisedString 2021-02-22 19:01:42 +09:00
Dean Herbert
1fd76ea3fb Apply changes to UI components overriding functions with changing signatures 2021-02-22 19:01:42 +09:00
Dean Herbert
b713eb2eae Make field readonly 2021-02-18 17:13:48 +09:00
Dean Herbert
c3a98b6ad1 Fix carousel items' borders getting blown out when selected and hovered
I tried restructuring the hierarchy to avoid needing this added property
(moving the hover layer out of the border container) but this leads to
some subpixel leakage outside the borders which looks even worse.

Closes #6915.
2021-02-18 16:59:44 +09:00
smoogipoo
d3f0c0730d Merge branch 'master' into non-concurrent-sample-playback 2021-02-12 17:22:15 +09:00
Dean Herbert
cd01591dda Consume new debounce logic in carousel header 2021-02-12 12:22:35 +09:00
Jamie Taylor
bc7f4a4f88 Use a single sample for CarouselHeader on-hover with randomised pitch instead of multiple samples 2021-02-10 17:53:47 +09:00
smoogipoo
de9d075f94 Initial sample + samplechannel rework 2021-01-19 17:11:40 +09:00
Bartłomiej Dach
43b9fde457 Add some nullability annotations for good measure 2021-01-06 13:15:15 +01:00
Dean Herbert
99701a6d9b Add null check on beatmapContainer for safety 2021-01-06 21:06:33 +09:00
Dean Herbert
83dbba3cbf Fix carousel beatmap set panels applying transforms to difficulties while they are loading 2021-01-05 18:41:45 +09:00
Endrik Tombak
c25e2c3dd5 Select recommended beatmap if last selection is filtered 2020-12-03 23:13:14 +02:00
smoogipoo
31f7f7072d Fix song select panels not loading if partially offscreen 2020-12-03 15:13:20 +09:00
Dean Herbert
6058c66edb Move drawable carousel set movement logic into panels themselves 2020-11-26 18:32:43 +09:00
Dean Herbert
5113d4af8f Rename BeatmapDifficultyManager to BeatmapDifficultyCache 2020-11-06 13:14:29 +09:00
Bartłomiej Dach
3090b6ccb5 Resolve CA2249 inspections
"Use `string.Contains` instead of `string.IndexOf` to improve
readability"
2020-11-01 18:54:44 +01:00
Dean Herbert
8b04cd2cb0 Fix a potential null reference when loading carousel difficulties 2020-10-25 20:28:24 +09:00
Dan Balasescu
1fe987d4b3
Merge pull request #10497 from peppy/beatmap-carousel-less-diffcalc-stutter
Disable difficulty calculation for set-level difficulty icons
2020-10-20 14:57:34 +09:00
Dean Herbert
30e1fce7a4 Reduce alloc overhead of DrawableCarouselBeatmapSet using new function-based ctor 2020-10-14 15:10:50 +09:00
Dean Herbert
07e6609e6d Disable difficulty calculation for set-level difficulty icons 2020-10-14 14:16:22 +09:00
Dean Herbert
e662dc5342 Add missing licence headers 2020-10-13 20:57:26 +09:00
Dean Herbert
8057ea1097 Fix formatting issues 2020-10-13 20:50:36 +09:00
Dean Herbert
3d416f4d64 Clean up beatmapSet resolution in DrawableCarouselBeatmapSet 2020-10-13 19:31:29 +09:00
Dean Herbert
75b6a5e17e Remove unnecessary hack (fixed via framework update) 2020-10-13 19:31:29 +09:00
Dean Herbert
5d11db7753 Locallise ChildItems to DrawableCarouselBeatmapSet for clarity 2020-10-13 19:31:29 +09:00
Dean Herbert
37daefc2b5 Remove outdated comment 2020-10-13 19:12:33 +09:00
Dean Herbert
834b0186f4 Adjust fade duration to be slightly shorter 2020-10-13 18:50:10 +09:00
Dean Herbert
2346644c04 Switch DelayedLoadUnloadWrappers to DelayedLoadWrappers
Due to pooling usage, there is no time we need to unload. Switching to
DelayedLoadWrapper cleans up the code and reduces overhead
substantially.
2020-10-13 18:47:40 +09:00
Dean Herbert
4f4f222514 Remove unnecessary fade (already applied by base DrawableCarouselItem) 2020-10-13 18:28:28 +09:00
Dean Herbert
83358d487f Remove logging 2020-10-13 18:18:22 +09:00
Dean Herbert
3d9ea852ec Remove masking override (no longer needed as our size is now correct) 2020-10-13 18:14:23 +09:00
Dean Herbert
69650c16fc Simplify vertical position calculations by including spacing in height definition 2020-10-13 18:13:36 +09:00
Dean Herbert
b1ddb08a4e Fix right click context menus appearing in incorrect locations 2020-10-13 18:01:12 +09:00
Dean Herbert
d9a6a6b245 Split content out into own class 2020-10-13 18:01:12 +09:00
Dean Herbert
9b2ebb8f0f Fix main content DelayedLoadUnloadWrapper not getting a valid size before load 2020-10-13 17:45:41 +09:00
Dean Herbert
f3b937e358 Fix masking issues with certain aspect ratio displays 2020-10-13 17:37:33 +09:00
Dean Herbert
fdd4d95cdc Fix difficulties being at incorrect vertical positions after filter is applied 2020-10-13 17:37:33 +09:00
Dean Herbert
b536f571fd Move header height propagation to update for safety 2020-10-13 17:37:33 +09:00
Dean Herbert
ded09b78cb Avoid usage of AutoSize for DrawableCarouselItems in general 2020-10-13 17:37:33 +09:00
Dean Herbert
cecdf14f53 Avoid reconstructing beatmap difficulties that were recently displayed 2020-10-13 17:37:33 +09:00
Dean Herbert
1da49073ab Calculate content height automatically 2020-10-13 17:37:33 +09:00
Dean Herbert
c08b5e8d03 Align beatmap difficulties correctly 2020-10-13 17:37:33 +09:00
Dean Herbert
cfec4f4fc1 Extract header element from base DrawableCarouselItem class 2020-10-13 17:37:33 +09:00
Dean Herbert
20b54fb904 Move transform clean-up to pooling free call 2020-10-13 17:37:33 +09:00
Dean Herbert
f6aa448523 Store y positions inside items rather than in a separate array 2020-10-13 17:37:33 +09:00
Dean Herbert
b92c22ad42 Add logging 2020-10-13 17:37:33 +09:00
Dean Herbert
9814e9ba7f Split classes out to reduce loc burder on DrawableCarouselBeatmapSet 2020-10-13 17:37:33 +09:00
Dean Herbert
975cd5a840 Add back beatmap difficulty appear/disappear movement 2020-10-13 17:37:33 +09:00
Dean Herbert
fd8654cff3 Add back difficulty panel spacing 2020-10-13 17:37:33 +09:00
Dean Herbert
82f9ca3de9 Bind to filter event changes in base drawable item 2020-10-13 17:37:33 +09:00
Dean Herbert
813ee19728 Use existing event flow for rendering beatmap difficulties 2020-10-13 17:37:33 +09:00
Dean Herbert
bb03c5d77c Temporarily disable masking temporarily to fix panels disappearing at extents 2020-10-13 17:37:33 +09:00
Dean Herbert
524419d5e4 Fix filtered items being considered for height calculation 2020-10-13 17:37:33 +09:00
Dean Herbert
0a144a1388 Correctly free panels after use to avoid finalizer disposal of subtree 2020-10-13 17:37:33 +09:00
Dean Herbert
5c29aa8cce Fix multiple difficulties being expanded at once 2020-10-13 17:37:33 +09:00
Dean Herbert
5c2f134665 Add back left offset for selected set 2020-10-13 17:37:33 +09:00
Dean Herbert
3cfc0dc82d Add safeties to beatmap panel loading code 2020-10-13 17:37:33 +09:00
Dean Herbert
954d43ef56 Debounce state application events 2020-10-13 17:37:33 +09:00
Dean Herbert
0400b34349 Load more components asynchronously after pool resolution 2020-10-13 17:37:33 +09:00