1
0
mirror of https://github.com/ppy/osu.git synced 2025-02-24 06:32:56 +08:00
Commit Graph

16188 Commits

Author SHA1 Message Date
Bartłomiej Dach
64f0d234d8
Fix exiting being eternally blocked after successful beatmap submission 2025-02-07 15:37:27 +01:00
Bartłomiej Dach
1afd1f5000
Merge branch 'master' into bss/the-actual-submission 2025-02-07 15:30:37 +01:00
Layendan
d4c69f0c90 Assume room is setup correctly and remove duplicate maps before querying realm 2025-02-07 04:04:29 -07:00
Layendan
aad12024b0 remove using cache, improve tests, and revert loading 2025-02-07 03:13:51 -07:00
Bartłomiej Dach
a068d88b84
Merge pull request #31823 from peppy/carousel-v2-optimisation-pass
Refactor grouping to be much more efficient
2025-02-07 10:44:53 +01:00
Dean Herbert
753eae426d
Update strings 2025-02-07 18:42:41 +09:00
Dean Herbert
783ef00785
Change BeatmapSubmissionScreen to use global back button instead of custom implementation 2025-02-07 18:34:48 +09:00
Dean Herbert
95967a2fde
Adjust beatmap stream creation to make a bit more sense 2025-02-07 18:17:49 +09:00
Bartłomiej Dach
ae179c8feb
Merge pull request #31824 from peppy/carousel-v2-group-click-transfer-keyboard
Always transfer keyboard selection on activation
2025-02-07 10:12:10 +01:00
Dean Herbert
12881f3f36
Don't show informational screens for subsequent submissions
These are historically only presented to the user when uploading a new
beatmap for the first time.
2025-02-07 18:06:31 +09:00
Dean Herbert
46290ae76b
Disallow changing beatmap / ruleset while submitting beatmap 2025-02-07 18:05:47 +09:00
Dean Herbert
6335228fb0
Merge branch 'master' into bss/the-actual-submission 2025-02-07 17:44:48 +09:00
Dean Herbert
cf4b501214
Merge pull request #31804 from bdach/bss/api-setup
Add API request & response structures for beatmap submission
2025-02-07 17:43:38 +09:00
Bartłomiej Dach
9af5ebbca9
Merge pull request #31822 from peppy/dont-submit-zero-scores
Don't attempt to submit zero scores
2025-02-07 09:42:38 +01:00
Dean Herbert
177ca4fb7c
Merge pull request #31799 from frenzibyte/carousel-v2-spacing
Support variable spacing between beatmap carousel panels
2025-02-07 17:41:28 +09:00
Dean Herbert
29b0b62ffa
Rename variables to something more sane 2025-02-07 17:39:38 +09:00
Dean Herbert
3da615481e
Change switch to simple conditional for now 2025-02-07 17:38:24 +09:00
Dean Herbert
41c8f64806
Simplify naming of endpoints 2025-02-07 17:33:32 +09:00
Dean Herbert
c935c3154b
Always transfer keyboard selection on activation 2025-02-07 17:02:53 +09:00
Dean Herbert
9d979dc3f4
Refactor grouping to be much more efficient 2025-02-07 16:35:20 +09:00
Dean Herbert
50d880e2ae
Fix unnecessary BeatmapSet.Metadata lookups 2025-02-07 16:09:36 +09:00
Dean Herbert
0235928fda
Merge pull request #31815 from smoogipoo/score-panel-ruleset
Add ruleset icon to expanded score panel
2025-02-07 16:04:24 +09:00
Dean Herbert
4d1167fdcc
Don't attempt to submit zero scores 2025-02-07 15:36:59 +09:00
Dean Herbert
d73f275143
Don't inflate set / group panels for simplicity 2025-02-07 15:15:59 +09:00
Dean Herbert
1cf375e329
Merge branch 'master' into carousel-v2-spacing 2025-02-07 14:34:59 +09:00
Dean Herbert
975c35f5ac
Also add difficulty icon to contracted panel 2025-02-07 14:27:37 +09:00
Dean Herbert
25846b2327
Adjust results screen designs and tests slightly 2025-02-07 14:21:43 +09:00
Layendan
2aa930a36c Corrected notification strings 2025-02-06 17:46:49 -07:00
Layendan
6769a74c92 Add loading in case cache lookup takes longer than expected 2025-02-06 17:23:06 -07:00
Layendan
b7483b9442 Add playlist collection button w/ tests 2025-02-06 07:25:45 -07:00
Bartłomiej Dach
91bc23e39e
Merge pull request #31801 from peppy/carousel-v2-artist-grouping
Add support for grouping by artist to beatmap carousel v2
2025-02-06 13:13:35 +01:00
Dean Herbert
cb42ef95c5
Add invalidation on draw size change in beatmap carousel v2
Matching old implementation.
2025-02-06 17:48:42 +09:00
Dean Herbert
33035f0206
Merge branch 'master' into carousel-v2-spacing 2025-02-06 17:30:49 +09:00
Dean Herbert
f4bb3bc422
Merge pull request #31802 from frenzibyte/carousel-v2-depth-ordering
Allow ordering certain carousel panels behind others
2025-02-06 17:29:56 +09:00
Dean Herbert
bff686f012
Avoid double iteration when updating group states 2025-02-06 17:22:50 +09:00
Dean Herbert
024fbde0fd
Refactor selection and activation handling
I had a bit of a struggle getting header traversal logic to work well.
The constraints I had in place were a bit weird:

- Group panels should toggle or potentially fall into the prev/next
  group
- Set panels should just traverse around them

The current method of using `CheckValidForGroupSelection` return type
for traversal did not mesh with the above two cases. Just trust me on
this one since it's quite hard to explain in words.

After some re-thinking, I've gone with a simpler approach with one
important change to UX: Now when group traversing with a beatmap set
header currently keyboard focused, the first operation will be to reset
keyboard selection to the selected beatmap, rather than traverse.

I find this non-offensive – at most it means a user will need to press
their group traversal key one extra time.

I've also changed group headers to always toggle expansion when doing
group traversal with them selected.

To make all this work, the meaning of `Activation` has changed somewhat.
It is now the primary path for carousel implementations to change
selection of an item. It is what the `Drawable` panels call when they
are clicked.

Selection changes are not performed implicitly by `Carousel` – an
implementation should decide when it actually wants to change the
selection, usually in `HandleItemActivated`.

Having less things mutating `CurrentSelection` is better in my eyes, as
we see this variable as only being mutated internally when utmost
required (ie the user has requested the change). With this change,
`CurrentSelection` can no longer become of a non-`T` type (in the
beatmap carousel implementation at least).

This might pave a path forward for making `CurrentSelection` typed, but
that comes with a few other concerns so I'll look at that as a
follow-up.
2025-02-06 17:02:44 +09:00
Bartłomiej Dach
070d402ac2
Merge branch 'bss/api-setup' into bss/the-actual-submission 2025-02-06 08:38:08 +01:00
Bartłomiej Dach
5bcd79956b
Merge branch 'master' into bss/api-setup 2025-02-06 08:30:01 +01:00
Dan Balasescu
5b8b9589d8
Add ruleset icon to expanded score panel 2025-02-06 15:25:38 +09:00
Dean Herbert
342a66b9e2
Fix keyboard traversal on a collapsed group not working as intended 2025-02-06 14:49:58 +09:00
Dean Herbert
88ad87a78e
Expose set grouping state 2025-02-06 14:30:15 +09:00
Dan Balasescu
885ae7c735
Adjust styling 2025-02-06 14:25:08 +09:00
Dan Balasescu
d93f7509b6
Fix participant panels not displaying mods from other rulesets correctly 2025-02-06 14:24:09 +09:00
Dean Herbert
d9b370e3a1
Add xmldoc for menu implying external consumption 2025-02-06 13:48:38 +09:00
Dean Herbert
dd53ae0e02
Merge pull request #31806 from bdach/bookmark-follow-ups
Improve bookmark controls
2025-02-06 13:48:12 +09:00
Dean Herbert
4fda4d625f
Merge pull request #31803 from bdach/bss/submission-progress-display
Implement visual component for displaying submission progress
2025-02-06 13:37:08 +09:00
Dean Herbert
9cc90a51df
Adjust xmldoc and avoid LINQ overheads 2025-02-06 13:32:11 +09:00
Dan Balasescu
84206e9ad8
Initial support for freemod+freestyle 2025-02-06 13:29:16 +09:00
Bartłomiej Dach
10711e5e27
Add missing partial 2025-02-05 15:39:36 +01:00
Bartłomiej Dach
4cbfb51707
Fix undoing bookmark operations potentially making them unsorted
Found in testing of previous commit. This would break seeking between
bookmarks.

Reproduction steps on `master`:

- open map with bookmark
- delete the first bookmark
- undo the deletion of the first bookmark
- seek to previous bookmark will now always seek to the first bookmark
  rather than closest preceding regardless of current clock time
2025-02-05 15:30:11 +01:00
Bartłomiej Dach
abce42b1c8
Improve bookmark controls
- Bookmark menu items get disabled when they would do nothing.
- Bookmark deletion only deletes the closest bookmark instead of all of
  them within the proximity of 2 seconds to current clock time. Action
  is only however *enabled* within 2 seconds of a bookmark.

Additionally, logic was moved out of `Editor` because it's a huge class
and I dislike huge classes if they can be at all avoided.
2025-02-05 15:28:27 +01:00
Bartłomiej Dach
78e85dc2c7
Add beatmap submission support 2025-02-05 14:01:37 +01:00
Bartłomiej Dach
fff99a8b40
Implement special exporter intended specifically for submission flows 2025-02-05 14:01:37 +01:00
Bartłomiej Dach
7d299bb2ad
Expose EndpointConfiguration directly in IAPIAccess 2025-02-05 13:31:37 +01:00
Bartłomiej Dach
092b953dca
Implement visual component for displaying submission progress 2025-02-05 13:31:35 +01:00
Bartłomiej Dach
ceb424faa1
Merge pull request #31798 from peppy/carousel-v2-async-fix
Fix `Carousel.FilterAsync` not working when called from a non-update thread
2025-02-05 12:23:27 +01:00
Dean Herbert
11de429621
Add support for grouping by artist 2025-02-05 19:48:41 +09:00
Salman Alshamrani
c370c75fe2 Allow ordering certain carousel panels behind others 2025-02-05 05:47:55 -05:00
Dean Herbert
ea725e2caf
Merge pull request #31524 from smoogipoo/user-panel-status
Display up-to-date online status in user panels
2025-02-05 19:22:27 +09:00
Salman Alshamrani
c389dbc711 Extend panel input area to cover gaps 2025-02-05 05:20:26 -05:00
Salman Alshamrani
fc5832ce67 Support variable spacing between carousel items 2025-02-05 05:20:26 -05:00
Dean Herbert
c37fa261c3
Merge pull request #31789 from bdach/distance-snap-fix
Fix distance snap grid not properly working due to multiple issues
2025-02-05 18:41:46 +09:00
Bartłomiej Dach
e5943e460d
Unify ConfigureAwait() calls across method 2025-02-05 10:28:42 +01:00
Bartłomiej Dach
c5deb9f36b
Use alternative lockless solution for atomic cancellation token recreation 2025-02-05 10:28:25 +01:00
Dean Herbert
9b79cf6c61
Merge pull request #31784 from bdach/bss/wizard-appearance
Implement visual appearance of beatmap submission wizard
2025-02-05 17:34:30 +09:00
Dean Herbert
5c9e84caf0
Add lock object 2025-02-05 17:31:54 +09:00
Dan Balasescu
7f8f528ae2
Add helper for testing mod/freemod validity 2025-02-05 16:44:52 +09:00
Dean Herbert
14273824dc
Fix Carousel.FilterAsync not working when called from a non-update thread
I was trying to be smart about things and make use of our
`SynchronisationContext` setup, but it turns out to not work in all
cases due to the context being missing depending on where you are
calling the method from.

For now let's prefer the "works everywhere" method of scheduling the
final work back to update.
2025-02-05 16:40:11 +09:00
NecoDev
13fa49d5b5
Merge branch 'master' into pr 2025-02-05 14:53:20 +08:00
NecoDev
db7b665f4d Removed unused using
For https://github.com/ppy/osu/pull/31780
2025-02-05 13:31:57 +08:00
Dean Herbert
0d7bbd63fc
Merge branch 'master' into user-panel-status 2025-02-04 22:56:19 +09:00
Dean Herbert
15ed029dd1
Merge pull request #31260 from smoogipoo/multiplayer-free-style
Add support for "freestyle" in multiplayer
2025-02-04 22:40:38 +09:00
Dean Herbert
87ff8778c6
Merge pull request #31791 from bdach/unify-selection-behaviour
Always select the closest control point group regardless of whether it has a timing point on entering timing screen
2025-02-04 22:32:22 +09:00
Bartłomiej Dach
23ec27e911
Merge branch 'master' into distance-snap-fix 2025-02-04 13:50:14 +01:00
Dean Herbert
a93dabd33f
Merge branch 'master' into multiplayer-free-style 2025-02-04 21:48:39 +09:00
Bartłomiej Dach
41cf3696f2
Merge branch 'master' into bss/wizard-appearance 2025-02-04 13:48:35 +01:00
Bartłomiej Dach
2dbf30a096
Select timing point on enter if no effect point is active at the time
Noticed during testing.
2025-02-04 12:44:05 +01:00
Bartłomiej Dach
a0b6610054
Always select the closest control point group regardless of whether it has a timing point 2025-02-04 12:35:02 +01:00
Bartłomiej Dach
731f100aaf
Fix incorrect snapping behaviour when previous object is not snapped to beat 2025-02-04 11:45:15 +01:00
Dean Herbert
6c6063464a
Remove Scheduler.AddOnce from updateSpecifics
To keep things simple, let's not bother debouncing this. The debouncing
was causing spectating handling to fail because of two interdependent
components binding to `BeatmapAvailability`:

Binding to update the screen's `Beatmap` after a download completes:

5874706117/osu.Game/Screens/OnlinePlay/Match/RoomSubScreen.cs (L266-L267)

Binding to attempt a load request:

8bb7bea04e/osu.Game/Screens/OnlinePlay/Multiplayer/MultiplayerMatchSubScreen.cs (L67)

The first must update the beatmap before the second runs, else gameplay
will not load due to `Beatmap.IsDefault`.
2025-02-04 18:41:28 +09:00
Dean Herbert
599b59cb14
Add expanded state to sample drawable representations 2025-02-04 18:06:16 +09:00
Dan Balasescu
2f90bb4d67
Watch global user presence while in spectator screen 2025-02-04 17:55:50 +09:00
Dean Herbert
58560f8acf
Add tracking of expansion states for groups and sets 2025-02-04 17:51:51 +09:00
Bartłomiej Dach
4dd4e52e6d
Implement visual appearance of beatmap submission wizard 2025-02-04 09:06:33 +01:00
Bartłomiej Dach
6e59cab928
Merge pull request #31764 from peppy/beatmap-carousel-v2-grouping
Add group support to beatmap carousel v2
2025-02-04 08:13:54 +01:00
Dean Herbert
ec88c5ed75
Merge pull request #31776 from frenzibyte/carousel-v2-depth-ordering
Fix depth ordering in new carousel not being relative to selected item
2025-02-04 13:02:21 +09:00
Dean Herbert
e454fa558c
Adjust group traversal logic to handle cases where keyboard selection redirects 2025-02-04 02:55:59 +09:00
Dean Herbert
b433eef138
Remove redundant conditional check 2025-02-04 02:41:39 +09:00
Bartłomiej Dach
a1185df2eb
Refactor IDistanceSnapProvider to accept slider velocity objects as a reference
Method signatures are also changed to be a lot more explicit as to what
inputs they expect.
2025-02-03 14:00:57 +01:00
Dean Herbert
c7780c9fdc
Refactor how grouping is performed 2025-02-03 20:40:52 +09:00
Bartłomiej Dach
1793b8ccb4
Merge pull request #31775 from peppy/avoid-beatmap-access-beat-sync-container
Avoid accessing `WorkingBeatmap.Beatmap` every update call
2025-02-03 12:24:05 +01:00
Bartłomiej Dach
b60a8341e4
Merge pull request #31778 from peppy/editor-menu-mutual-exclusive
Make distance snap settings mutually exclusive
2025-02-03 11:58:34 +01:00
Dean Herbert
99192404f1
Tidy up WorkingBeatmap passing in ctor 2025-02-03 19:26:14 +09:00
Dean Herbert
8bb7bea04e
Rename freestyle select screen classes for better discoverability 2025-02-03 19:21:21 +09:00
Dean Herbert
37abb1a21b
Tidy up button construction code 2025-02-03 19:09:58 +09:00
Dean Herbert
444e0970d6
Standardise naming to use "Freestyle" not "FreeStyle" 2025-02-03 19:01:59 +09:00
NecoDev
55f46e3b66 Added warning 2025-02-03 16:47:38 +08:00
Dean Herbert
26a8fb6984
Make distance snap settings mutually exclusive 2025-02-03 17:34:55 +09:00
Bartłomiej Dach
ee7d281e73
Merge branch 'master' into fix-limit-distance-snap-to-current 2025-02-03 08:57:27 +01:00
Dean Herbert
b9f840c32e
Merge pull request #31742 from smoogipoo/fix-results-persistent-sounds
Fix results screen sounds persisting after exit
2025-02-03 16:39:47 +09:00