1
0
mirror of https://github.com/ppy/osu.git synced 2024-11-16 12:37:47 +08:00
Commit Graph

10267 Commits

Author SHA1 Message Date
Dean Herbert
a8c20368c0
Merge pull request #15976 from smoogipoo/add-modes-to-room-panels
Add match type and queue mode to multiplayer room panels
2021-12-07 22:08:30 +09:00
Dan Balasescu
4683193f09 Move implementation to base class 2021-12-07 20:36:39 +09:00
Dan Balasescu
5ffe702dd6 Add match type and queue mode to multiplayer room panels 2021-12-07 18:57:13 +09:00
Dean Herbert
dea7f2308c Fix participant panels potentially keeping a reference to an old user
If a user leave and then rejoins a multiplayer match while another user
is not at the lobby screen, there is a potential the `ParticipantPanel`
tracking the user will not correctly be recreated to reference the new
instance of the `MultiplayerUser`.

This happens because the `OnRoomUpdated` call is scheduled, which means
it is not running in the background, coupled with the local logic that
relies on `IEquatable(MultiplayerRoomUser)` (which in turn falls back to
a UserID comparison).

Changing this to a reference comparison is the easiest way to resolve
this. Whether we change the `IEquatable` implementation is up for
discussion.

Closes https://github.com/ppy/osu/issues/15970.
2021-12-07 17:24:04 +09:00
Dean Herbert
0ea7a69084 Ensure user is returned to the RoomSubScreen before gameplay is started
This covers the scenario where a user may be at the song select screen
while another user (the room host) starts the match. This was only made
possible with the new queue modes, so is quite a recent regression.
2021-12-06 14:03:52 +09:00
Dean Herbert
a76cfbea21 Add test coverage of incorrect beatmap being used in multiplayer when match started from song select 2021-12-06 14:03:33 +09:00
Bartłomiej Dach
af35652b8b
Disable beatmap card expansion on solo spectator screen 2021-12-05 20:07:58 +01:00
Dean Herbert
e1897f9998 Don't debounce MultiplayerRoomComposite events
This avoids accidental usage which could result in data being lost or
ignored (as only the last `user` in a single frame would arrive).

This was added specifically to debounce sample playback, but given that
it's only debouncing on a single frame (hardly noticeable) I'm not going
to add back support for that yet. It should be handled by sample
playback concurrency or something more local to the usage.
2021-12-05 01:38:39 +09:00
Bartłomiej Dach
38702beabf
Merge branch 'master' into i-ruleset-store 2021-12-04 15:05:39 +01:00
Bartłomiej Dach
53a6ef22ce
Add null check to resolve inspection 2021-12-04 14:55:35 +01:00
Bartłomiej Dach
b3b239c9a1
Fix test failures due to beatmap lookup logic being active even when model is populated 2021-12-04 13:59:01 +01:00
Dean Herbert
517a344bcc
Merge branch 'master' into new-multiplayer-playlist 2021-12-04 13:16:09 +09:00
Dan Balasescu
d5803e541b Give playlist items a PlayedAt date 2021-12-03 20:25:51 +09:00
Dan Balasescu
4145a16d5b
Merge pull request #15920 from peppy/clean-up-unused-resolves
Clean up unused resolved properties
2021-12-03 20:08:48 +09:00
Dean Herbert
1eed2436e6 Clean up unused resolved properties 2021-12-03 18:49:49 +09:00
Dean Herbert
2acf46154a Remove many unused resolutions of RulesetStore 2021-12-03 18:16:29 +09:00
Dean Herbert
e75e209053 Cache and consume IRulesetStore where feasible 2021-12-03 18:16:01 +09:00
Dean Herbert
6b73672403 Stop Player from blocking volume adjust when Alt it held
Similar case to what we already have in `OsuScrollContainer`, so there
is precedent for handling this locally in this fashion.
2021-12-03 17:18:07 +09:00
Dan Balasescu
487a71312e Split out code so base methods aren't called 2021-12-03 16:40:20 +09:00
Dan Balasescu
0a1304b92a Remove gameplay_order, use existing playlist_order 2021-12-03 15:45:13 +09:00
Dan Balasescu
b75a5b778e Update history list to also sort by gameplay order 2021-12-03 15:05:56 +09:00
Dan Balasescu
933fd49cff Fix missed callbacks due to AddOnce() schedules 2021-12-02 22:33:14 +09:00
Dan Balasescu
9760a2b087 Update MultiplayerQueueList to take advantage of GameplayOrder 2021-12-02 22:33:14 +09:00
Dean Herbert
512818648f Add some more breathing room between tab control and queue content 2021-12-02 16:56:30 +09:00
Dean Herbert
a8e17cb3a5 Add relative size specs so partially on-screen panels still start loading
Without this, panels at the top of the list but not fully on-screen
wouldn't begin their metadata loading process.
2021-12-01 22:46:38 +09:00
Dean Herbert
d262baefad Only query for the owner user metadata in the case it is actually required 2021-12-01 22:43:32 +09:00
Dean Herbert
a0ff86f5e8 Ensure all read and write operations on APIRoom are done on the update thread 2021-12-01 22:43:03 +09:00
Dan Balasescu
e5e2ae8ab4 Fix dangling line post-rebase 2021-12-01 21:36:25 +09:00
Dan Balasescu
e87b0003fb Fix queue mode not being bound to in all cases 2021-12-01 21:35:23 +09:00
Dan Balasescu
ad35f3434b Fix queue list not considering expired items 2021-12-01 21:35:23 +09:00
Dan Balasescu
e2f289eeff Xmldocs 2021-12-01 21:35:23 +09:00
Dan Balasescu
93a7726f4a Remove now-unused parameter 2021-12-01 21:35:23 +09:00
Dan Balasescu
d70355237d Fix selected item not bound 2021-12-01 21:35:23 +09:00
Dan Balasescu
c3dfe10a8a Add new list to match subscreen 2021-12-01 21:35:22 +09:00
Dan Balasescu
1152c4e8e9 Fix tests 2021-12-01 21:35:22 +09:00
Dan Balasescu
7847ce6253 Redesign with tab control 2021-12-01 21:35:22 +09:00
Dan Balasescu
95050d6597 Extract class to file 2021-12-01 21:35:22 +09:00
Dan Balasescu
fc8c8685b8 Add playlist queue tests 2021-12-01 21:35:22 +09:00
Dan Balasescu
e0ca1af9b8 Remove ctor params 2021-12-01 21:35:22 +09:00
Dan Balasescu
bfd2dc28c8 Rename QueueList -> MultiplayerQueueList 2021-12-01 21:35:22 +09:00
Dan Balasescu
6b198ce112 Document simulation 2021-12-01 21:35:22 +09:00
Dan Balasescu
ef170471f0 Merge branch 'master' into new-multiplayer-playlist 2021-12-01 21:35:22 +09:00
Dan Balasescu
9806c75743 Implement better round robin algorithm 2021-12-01 21:35:12 +09:00
Dan Balasescu
68bb49fc1e Add QueueList tests 2021-12-01 21:33:48 +09:00
Dan Balasescu
0cb35e8b18 Separate out QueueList 2021-12-01 21:33:48 +09:00
Dan Balasescu
17bc0b51aa Merge branch 'playlist-item-add-owner' into new-multiplayer-playlist 2021-12-01 21:33:48 +09:00
Dan Balasescu
942e48ffbd Merge branch 'master' into new-multiplayer-playlist 2021-12-01 21:33:11 +09:00
Dan Balasescu
c38537a51a Initial implementation of MultiplayerPlaylist 2021-12-01 21:32:56 +09:00
Dean Herbert
e4ba66877d Improve transitions when loading new data into a playlist panel 2021-11-30 19:54:26 +09:00
Dean Herbert
fe119da044 Add fetching of beatmap and user data when playlist panels come on screen 2021-11-30 19:52:36 +09:00
Bartłomiej Dach
95373649a4 Skip null items in star rating range display 2021-11-30 19:44:50 +09:00
Bartłomiej Dach
695167a749 Add support for null item display in DrawableRoomPlaylistItem 2021-11-30 19:44:50 +09:00
Dean Herbert
a7e4e7be3a Remove the ability to specify a filename in ReplaceFile 2021-11-29 18:11:51 +09:00
Bartłomiej Dach
05f7ea6b6d
Remove mentions of "panel" and "direct" from names of old download buttons 2021-11-27 15:08:03 +01:00
Bartłomiej Dach
a043d1e427
Move old beatmap download button to more general namespace 2021-11-27 15:06:57 +01:00
Dean Herbert
b8a47755fa Don't show loading tooltip for now
Should probably be replaced with a loading spinner in the future, don't
really like "loading" tooltips.
2021-11-26 22:54:11 +09:00
Dan Balasescu
e1445dcb05 Only show owner in match subscreen 2021-11-26 17:40:45 +09:00
Dan Balasescu
8be2defd09 Right-align avatar 2021-11-26 17:17:06 +09:00
Dan Balasescu
8541db1e85 Merge branch 'master' into playlist-item-add-owner 2021-11-26 17:13:23 +09:00
Bartłomiej Dach
a188d6662f
Use beatmap card in solo spectator screen 2021-11-25 22:31:02 +01:00
Dan Balasescu
1f5d95666e Add owner avatar to multiplayer items 2021-11-25 23:15:29 +09:00
Dean Herbert
7a3c69544b
Merge pull request #15799 from smoogipoo/fix-songselect-test-failures-2
Fix SongSelect-related test failures
2021-11-25 23:01:06 +09:00
Dan Balasescu
09dd054283 Fix SongSelect-related test failures 2021-11-25 21:11:13 +09:00
Dan Balasescu
f712aeee01
Merge pull request #15795 from peppy/realm-integration/separate-download-flow
Split out download logic from main manager classes
2021-11-25 20:59:23 +09:00
Dan Balasescu
d3a4890c31
Merge branch 'master' into realm-integration/stable-export-flow 2021-11-25 19:06:18 +09:00
Dean Herbert
e2ebcf7a26 Remove unnecessary manager parameter
Confused why I added this in the first place..
2021-11-25 18:36:03 +09:00
Dean Herbert
a2ab9f457d Move score download logic out of ScoreManager 2021-11-25 17:33:04 +09:00
Dean Herbert
716543b5b3 Move beatmap download logic out of BeatmapManager 2021-11-25 17:29:41 +09:00
Dean Herbert
79459c1aeb Fix typo in class and variable names 2021-11-25 17:12:15 +09:00
Dean Herbert
cc1b91e4bd Split out legacy model export logic into LegacyModelExporter classes 2021-11-25 16:41:12 +09:00
Dean Herbert
9dcb20a821 Rename Stable to Legacy and add xmldoc 2021-11-25 15:39:05 +09:00
Dan Balasescu
132bb59203 Update working beatmap when returning to match 2021-11-24 19:56:02 +09:00
Dean Herbert
183b95cbc2 Rename BeatmapSetOnlineStatus to BeatmapOnlineStatus
This variable is used at more than just a set level.
2021-11-24 18:42:49 +09:00
Dean Herbert
bbd3ea5b77 Update all actual usages of RulesetInfo.ID to use OnlineID instead 2021-11-24 15:50:26 +09:00
Dan Balasescu
6183d1cd46
Merge pull request #15769 from peppy/model-equality-consistency
Update cases where equality can be used instead of primary key equality
2021-11-24 13:45:57 +09:00
Dan Balasescu
6ffba8a546
Merge pull request #15768 from peppy/standardise-ruleset-create-instance
Remove nullability of `Ruleset.CreateInstance`
2021-11-24 13:43:23 +09:00
Dean Herbert
729f681938 Update cases where equality can be used instead of primary key equality 2021-11-24 12:49:57 +09:00
Dean Herbert
0eea026afb Remove null checks on CreateInstance() calls 2021-11-24 12:23:09 +09:00
Dan Balasescu
6363833fb3 Revert unnecessary changes 2021-11-23 16:17:09 +09:00
Dan Balasescu
1f13669636 Don't poll while in room
Fixes timeout in `TestJoinRoomWithoutPassword`, because the 'server' returns
out-of-date data while the `MatchSubScreen` has possible not been entered
yet (and thus hasn't disabled polling itself yet).

Can be tested by adding a `Task.Delay(3000);` at the end of
the `MultiplayerClient.JoinRoom()` task.
2021-11-23 16:14:01 +09:00
Dan Balasescu
69a9fc9732 Fix a few more multiplayer test timeouts
These can be tested by adding a `Task.Delay(3000);` at the end of the
`MultiplayerClient.JoinRoom` task. The reason is typically that
`Client.Room` becomes not-null but the join task still hasn't completed
yet, so e.g. the ready button is still disabled.
2021-11-23 16:07:03 +09:00
Dan Balasescu
4b498c7bd6 Merge branch 'master' into multi-queueing-modes 2021-11-22 07:46:45 +09:00
Bartłomiej Dach
6100bf66a6
Clean up cancellation handling in WorkingBeatmap
After the recent changes introducing cancellation support to
`WorkingBeatmap`, it turned out that if the cancellation support was
used, `GetPlayableBeatmap()` would raise timeout exceptions rather than
the expected `OperationCanceledException`.

To that end, split off a separate overload for the typical usage, that
catches `OperationCanceledException` and converts them to beatmap load
timeout exceptions, and use normal `OperationCanceledException`s in the
overload that requires a cancellation token to work.
2021-11-20 17:23:55 +01:00
Bartłomiej Dach
15feb17da8
Change difficulty cache storage type to nullable
The recent changes related to adding support for working beatmap load
cancellation exposed a flaw in the beatmap difficulty cache. With the
way the difficulty computation logic was written, any error in the
calculation process (including beatmap load timeout, or cancellation)
would result in a 0.00 star rating being permanently cached in memory
for the given beatmap.

To resolve, change the difficulty cache's return type to nullable.
In failure scenarios, `null` is returned, rather than
`default(StarDifficulty)` as done previously.
2021-11-20 17:00:50 +01:00
Dean Herbert
83b4625bd5 Replace existing cases with new helper method 2021-11-19 22:15:41 +09:00
Dan Balasescu
d397524878
Merge pull request #15676 from peppy/multiplayer-incorrect-beatmap-error
Show better error message when selecting an unavailable beatmap during multiplayer room creation
2021-11-19 18:59:46 +09:00
Dan Balasescu
de0e8ad822 Merge branch 'master' into multi-queueing-modes 2021-11-19 18:58:15 +09:00
Dan Balasescu
4c8c34b43f Use full name for round robin 2021-11-19 18:42:34 +09:00
Dan Balasescu
4e625b78e2 Update queue mode names 2021-11-19 18:28:43 +09:00
Dan Balasescu
12e1142b07 Rename settings section 2021-11-19 15:47:40 +09:00
Dan Balasescu
a922ce2fd9 Remove unnecessary nameofs 2021-11-19 15:45:45 +09:00
Dean Herbert
0c289bf8e5 Remove pointless namespace 2021-11-19 14:46:53 +09:00
Dean Herbert
284e554cbf Only show user displayable portion of server errors when seleting a song in multiplayer 2021-11-19 13:58:03 +09:00
Dean Herbert
c901a4fd7e Show better error message when selecting an unavailable beatmap during multiplayer room creation 2021-11-19 13:28:42 +09:00
Dean Herbert
cb2547a6be Merge branch 'master' into multi-queueing-modes 2021-11-19 13:20:57 +09:00
Dan Balasescu
6ebe54b183
Merge pull request #15494 from Tollii/beatmap-cancellation-token
Add support for cancellation tokens for beatmap difficulty calculation
2021-11-19 10:54:32 +09:00
Joseph Madamba
a09589f833 Fix score panels sometimes jumping when toggling statistics fast 2021-11-17 23:15:51 -08:00
Dan Balasescu
1dacc50ecb Merge branch 'master' into multi-queueing-modes 2021-11-18 15:16:27 +09:00
Dean Herbert
66c307e0ee Remove usage of key repeat helper method 2021-11-18 13:13:36 +09:00
Dean Herbert
7599efac30 Update editor cases where repeat should not be handled 2021-11-18 13:13:36 +09:00
Dean Herbert
3de8125eac Update UI cases where repeat should not be handled 2021-11-18 13:13:36 +09:00
Bartłomiej Dach
8b134914cf
Merge branch 'master' into beatmap-cancellation-token 2021-11-17 21:52:30 +01:00
Dan Balasescu
e4aec3f519
Merge pull request #15648 from peppy/playlist-show-invalid-beatmaps
Highlight invalid playlist items during room creation
2021-11-17 22:24:22 +09:00
Dean Herbert
214705f1e5 Adjust error message, take 2 2021-11-17 21:11:37 +09:00
Dan Balasescu
5fb5baa4c9 Adjust error message 2021-11-17 21:06:33 +09:00
Dean Herbert
7c2e79f911 Update all simple cases of switching to IWorkingBeatmap 2021-11-17 20:56:57 +09:00
Dean Herbert
96e983bbad Disallow playlist item selection at playlist room creation screen
Wasn't being used for anything, confusing that it's even possible.
2021-11-17 14:40:07 +09:00
Dean Herbert
8e9b55ef6d Disallow selection of invalid items 2021-11-17 11:28:43 +09:00
Dean Herbert
0715d40ea0 Merge branch 'master' into beatmap-cancellation-token 2021-11-17 11:16:10 +09:00
Dean Herbert
13f3e2eea9 Add back default timeout to GetPlayableBeatmap 2021-11-17 11:06:31 +09:00
Dan Balasescu
843b0f9641
Merge pull request #15649 from peppy/fix-leaderboard-cancellation-failure
Fix song select leaderboard potentially displaying outdated or incorrect content
2021-11-16 19:10:48 +09:00
Dan Balasescu
f9e3d9bb92
Merge branch 'master' into i-working-beatmap/difficulty-calculator 2021-11-16 17:46:38 +09:00
Dean Herbert
2dd721f760 Fix incorrect CancellationToken being used for inner check during leaderboard updates 2021-11-16 17:41:16 +09:00
Dean Herbert
6dd684588a Merge branch 'master' into playlist-show-invalid-beatmaps 2021-11-16 17:25:33 +09:00
Dean Herbert
2d125893fc Add tests and disable selection on invalid items 2021-11-16 17:23:52 +09:00
Dean Herbert
6f82e6351f Parse osu-web error text to present invalid items to the user in a more approachable format 2021-11-16 17:14:15 +09:00
Dean Herbert
e78c5d0858 Show loadingLayer before calling CreateRoom
This fixes `TestScenePlaylistsMatchSettingsOverlay` incorrectly leaving
the loading layer visible.
2021-11-16 17:14:15 +09:00
Dean Herbert
aa188d5a52 Add ability for playlist items to be marked as invalid 2021-11-16 17:01:24 +09:00
Dean Herbert
49cdcffa30 Simplify schedule logic in DrawableRoomPlaylistItem 2021-11-16 16:58:44 +09:00
Dan Balasescu
ddf2fade1a
Merge branch 'master' into playlist-item-iruleset 2021-11-16 16:19:10 +09:00
Dean Herbert
726a0cc091 Merge branch 'master' into beatmap-collection-inteface-types 2021-11-16 15:31:10 +09:00
Dan Balasescu
29d0d5badf Rename QueueModes -> QueueMode 2021-11-16 14:53:10 +09:00
Dan Balasescu
5c3141d16a Fix ready button tooltip showing when locally available 2021-11-16 14:48:52 +09:00
Dean Herbert
6cca657a2d Standardise naming of CancellationToken parameters 2021-11-16 14:45:51 +09:00
Dean Herbert
53c0682a08 Merge branch 'master' into beatmap-cancellation-token 2021-11-16 14:43:13 +09:00
Dan Balasescu
459e819a5d Update todo 2021-11-16 00:50:23 +09:00
Dan Balasescu
d27edb3a25 Fix another potential crash from async load 2021-11-16 00:31:46 +09:00
Dan Balasescu
b9e38269e3 Prevent playlist mangling selection if not allowed 2021-11-16 00:31:46 +09:00
Dan Balasescu
8e014ca17a Reverse in-match playlist 2021-11-16 00:31:46 +09:00
Dan Balasescu
eb983ed548 Fix potential crash from playlist updating during async load 2021-11-16 00:02:38 +09:00
Dan Balasescu
f743a3647f Rename APIPlaylistItem -> MultiplayerPlaylistItem 2021-11-15 23:14:27 +09:00
Dean Herbert
369b4ba789 Update DifficultyCalculator to take an IRulesetInfo 2021-11-15 19:16:48 +09:00
Dean Herbert
960cecf3db Merge branch 'beatmap-collection-inteface-types' into i-working-beatmap/difficulty-calculator 2021-11-15 19:16:47 +09:00
Dean Herbert
5489b19c57 Update PlaylistItem to use IRulesetInfo 2021-11-15 16:13:03 +09:00
Dean Herbert
1988b263c6 One more missed usage.. 2021-11-15 16:02:08 +09:00
Dean Herbert
73cb80d8a4 Update one more missed usage 2021-11-15 16:00:45 +09:00
Dan Balasescu
5e2ccd5c85 Merge branch 'master' into multi-queueing-modes 2021-11-15 15:26:34 +09:00
Dean Herbert
285b161da7 Update other usages of online ID comparisons to use new extension method 2021-11-15 14:44:08 +09:00
Dean Herbert
5471994450
Merge branch 'master' into sample-point-multiple 2021-11-15 14:13:58 +09:00
Dean Herbert
fdbb59fd1d
Merge branch 'master' into gameplay-test/share-clock-state 2021-11-15 13:49:17 +09:00
Dean Herbert
a4aa008793 Fix frequency ramping a second time incorrectly after fail 2021-11-14 14:41:17 +09:00
Bartłomiej Dach
6b4b6de554
Fix test gameplay starting in a hidden state 2021-11-13 22:11:00 +01:00
Bartłomiej Dach
2562412125
Propagate clock state from gameplay test back to editor 2021-11-13 22:11:00 +01:00
Bartłomiej Dach
d2ddc25ab3
Propagate clock state from editor to gameplay test 2021-11-13 22:10:59 +01:00
Bartłomiej Dach
9a19a516f9
Adjust spacings on sample point piece popover 2021-11-13 21:59:45 +01:00
Bartłomiej Dach
73ca1d39a2
Improve sample bank text box UX in case of multiple selection 2021-11-13 21:59:44 +01:00
Bartłomiej Dach
3fee6b0938
Add support for setting sample bank & volume for multiple objects at once 2021-11-13 21:24:59 +01:00
Bartłomiej Dach
9800cd4903
Add test coverage for sample control point piece operation 2021-11-13 18:14:50 +01:00
Dean Herbert
983d5a6cb8
Merge branch 'master' into difficulty-point-multiple 2021-11-13 23:47:12 +09:00
Bartłomiej Dach
5f2a789a6d
Ensure editor clock is stopped before testing gameplay 2021-11-13 14:01:00 +01:00