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

613 Commits

Author SHA1 Message Date
Dean Herbert
2d135e5be6 Explain purpose of Schedule call in MultiplayerPlayer.onResultsReady 2022-03-10 19:56:13 +09:00
Dan Balasescu
45d537ef72 Fix potential multiplayer crash with async disposal 2022-03-10 18:50:53 +09:00
Dan Balasescu
f1c40bd9ed Rework GetScore() method signatures + implementations
Rename legacy-facing overload to mention as much
2022-03-08 22:30:44 +09:00
Dan Balasescu
387ae59bc4 Fix nullref in tests 2022-02-25 16:12:25 +09:00
Dan Balasescu
48ed9c6144 Enable high chat polling rate 2022-02-25 16:03:56 +09:00
Dan Balasescu
f9d9ad388b Add chat display to multiplayer spectator screen 2022-02-25 16:03:28 +09:00
Dean Herbert
bb1aa032bd Combine SelectedItem and CurrentPlaylistItem into same storage 2022-02-24 16:21:20 +09:00
Dan Balasescu
bdc3b76df0 Remove beatmap bindable from PlaylistItem 2022-02-15 23:50:08 +09:00
Dan Balasescu
efeba30b9f Remove ruleset and mod bindables from PlaylistItem 2022-02-15 16:28:15 +09:00
Dan Balasescu
18251c9285 Clean up SpectatorScreen based on suggestions 2022-02-09 12:20:07 +09:00
Dan Balasescu
ffc4c64f7e Unify namings across the board 2022-02-09 12:10:07 +09:00
Dan Balasescu
886d1d2df6 Refactorings 2022-02-08 21:29:43 +09:00
Dan Balasescu
4c76027178 Rename completed state to passed 2022-02-08 20:29:49 +09:00
Dan Balasescu
45b3f472ab Merge branch 'master' into spectator-state-rework 2022-02-08 19:51:50 +09:00
Dan Balasescu
c2416c490e Fix crash on disconnection during multi-spectate 2022-02-08 11:29:39 +09:00
Dan Balasescu
d5269ba05b Merge branch 'fix-spectator-restart-crash' into spectator-state-rework 2022-02-04 17:59:18 +09:00
Dan Balasescu
0473c6c52f Also handle null SelectedItem for safety 2022-02-04 17:53:51 +09:00
Dan Balasescu
b41655d5b9 Fix crash when gameplay starts while in multi-spectator screen 2022-02-04 17:47:41 +09:00
Dan Balasescu
f285060148 Fix MultiSpectatorScreen not continuing to results 2022-02-03 21:50:19 +09:00
Dan Balasescu
483977d5c8 Merge branch 'master' into spectator-state-rework 2022-02-03 19:59:07 +09:00
Dan Balasescu
b5fb3b7dae Fix crash when selecting swap mod as freemod 2022-02-02 18:42:22 +09:00
Dan Balasescu
781cb9f18d Move HasPassed/HasFailed into GameplayState 2022-02-01 14:46:24 +09:00
Dan Balasescu
a49a9ed0a0 Fix incorrect invoke 2022-01-31 17:19:04 +09:00
Salman Ahmed
3ec193d47e Fix spectator clock container incorrectly starting catch-up clock 2022-01-30 01:46:10 +03:00
Salman Ahmed
4f4f60248f Add failing test case 2022-01-30 01:46:10 +03:00
Jamie Taylor
493a970ed5
Remove unused AudioManager 2022-01-19 14:08:21 +09:00
Dean Herbert
671a3d47b8 Move bindable binding to LoadComplete and remove unnecessary unbind 2022-01-15 21:20:27 +09:00
Dean Herbert
ea8e49c543 Reorder private/protected methods 2022-01-15 21:19:02 +09:00
Jamie Taylor
7e9b5dd150
Add audio feedback for host change in multiplayer 2022-01-14 18:11:00 +09:00
Dean Herbert
675bdd3213 Fix MultiplayerMatchSubScreen mutating mods outside of bindable lease
As seen at https://github.com/peppy/osu/runs/4674501626?check_suite_focus=true.
2022-01-01 12:13:59 +09:00
Joseph Madamba
7de43e3aba Fix most open compound words in identifiers being closed 2021-12-27 20:26:28 -08:00
Dan Balasescu
a43cc20ae2 Apply changes to GameplayCompleted from reviews 2021-12-24 21:58:20 +09:00
Dan Balasescu
c6854b37c8 Unbind event on disposal 2021-12-24 21:58:09 +09:00
Dan Balasescu
727335dcad Improve reliability of exiting gameplay 2021-12-24 14:23:09 +09:00
Dan Balasescu
4ce61d4260 Directly bind to room updates
Currently doesn't really cause any difference, however it may in the
future if we decide the queueing algorithm shouldn't update PlaylistOrder
when an item has been played.
2021-12-21 18:40:29 +09:00
Dan Balasescu
a34d24fb20 Disallow expired items from showing delete button
This isn't possible in practice since expired items are removed from the
queue list, but this helps out in tests.
2021-12-21 18:37:42 +09:00
Dan Balasescu
51b7e920c0 Fix delete button being able to show on current item 2021-12-21 16:57:58 +09:00
Dean Herbert
d08b66a5ff Also add logging to OnlinePlayScreen 2021-12-21 15:07:06 +09:00
Dean Herbert
ddadf3c4b5 Add logging of MultiplayerMatchSubScreen exiting from room loss 2021-12-21 14:53:24 +09:00
Dean Herbert
6907a9a3cc Name some screen stacks for better logging context 2021-12-20 18:24:14 +09:00
Dean Herbert
cd8dfac625
Merge pull request #16097 from smoogipoo/forego-resetting-spectate-state
Don't reset spectating state if spectator exited after gameplay finishes
2021-12-15 22:30:41 +09:00
Dean Herbert
33cf4ba7f6
Merge pull request #16075 from smoogipoo/prevent-idle-transition-during-load
Add AbortGameplay() to fix state transition race conditions during multiplayer load
2021-12-15 19:59:19 +09:00
Dean Herbert
9e82a3e79a Merge branch 'master' into forego-resetting-spectate-state 2021-12-15 18:05:06 +09:00
Dan Balasescu
18d7b79207 Don't reset spectating state if gameplay is finished 2021-12-15 17:40:30 +09:00
Dan Balasescu
740a6f16c7 Fix exception when updating the room's visual playlist 2021-12-15 16:53:25 +09:00
Dan Balasescu
9ade8069a1 Rename to AbortGameplay() and handle additional states 2021-12-15 06:40:28 +09:00
Dan Balasescu
2f1dc91211 Add AbortLoad() method to abort gameplay loads 2021-12-14 11:30:42 +09:00
Dan Balasescu
70045494ba Re-simplify code by removing BeatmapManager event instead 2021-12-13 16:09:54 +09:00
Dan Balasescu
a6e77f172d Add some comments 2021-12-12 16:30:37 +09:00
Dan Balasescu
d6c08fae48 Fix incorrect global beatmap with availability changes 2021-12-11 23:08:21 +09:00
Dan Balasescu
25b274c323 Fix starting gameplay too early after import 2021-12-11 22:47:50 +09:00
Dan Balasescu
6057037e35 Move playlist item beatmap population to MatchSubScreen 2021-12-10 20:08:59 +09:00
Dan Balasescu
de0f37b08d Separate editing and adding playlist items 2021-12-10 15:26:48 +09:00
Dean Herbert
88670c3b01 Document OpenSongSelection and mark null param 2021-12-10 14:14:22 +09:00
Dan Balasescu
671582a925 Allow host to enqeue items and items to be edited 2021-12-10 01:15:19 +09:00
Dan Balasescu
1a0945daba Siplify condition, allow host to always remove items 2021-12-09 14:33:50 +09:00
Dan Balasescu
8398f86440 Don't consider expired items in visibility check 2021-12-09 04:02:16 +09:00
Dan Balasescu
c34c580ad4 Add client-side + interface implementation 2021-12-09 03:08:59 +09:00
Dan Balasescu
273042aa16 Add virtual method for creating different DrawablePlaylistItem types 2021-12-09 01:49:34 +09:00
Dan Balasescu
3be4d8b68d Remove ctor params from DrawableRoomPlaylist/DrawablePlaylistItem 2021-12-09 01:04:56 +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
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
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
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
Dean Herbert
1eed2436e6 Clean up unused resolved properties 2021-12-03 18:49:49 +09:00
Dean Herbert
e75e209053 Cache and consume IRulesetStore where feasible 2021-12-03 18:16:01 +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
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
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
Dan Balasescu
e1445dcb05 Only show owner in match subscreen 2021-11-26 17:40:45 +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
4b498c7bd6 Merge branch 'master' into multi-queueing-modes 2021-11-22 07:46:45 +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