Commit Graph

22207 Commits

Author SHA1 Message Date
c35454081c Add sound when players change ready state 2020-12-24 17:17:45 +09:00
43370d7021 Merge pull request #11273 from bdach/duplicate-user-in-mp-room
Improve reliability of handling user joined messages
2020-12-24 14:31:44 +09:00
b29a5e2073 Merge pull request #11270 from bdach/better-error-handling
Improve error handling at realtime room settings screen
2020-12-24 13:23:49 +09:00
15cef44351 Merge pull request #11275 from peppy/safer-user-ids
Send multiplayer user IDs via ctor for better thread safety
2020-12-24 12:20:48 +09:00
1ac93d4eeb Merge pull request #11268 from bdach/fix-room-song-select-stuck
Fix realtime multiplayer song select getting stuck after selecting invalid beatmap
2020-12-24 11:26:07 +09:00
d6dadd12fa Send multiplayer user IDs via ctor for better thread safety 2020-12-24 10:39:15 +09:00
414f886b02 Split timeshift & multiplayer "create" buttons
Multiplayer button gets new, different "Create match" text, and disable
logic in case of a dropped connection to the multiplayer server.
2020-12-23 22:03:57 +01:00
c13acb609a Move out sizing logic to multiplayer screen 2020-12-23 22:03:30 +01:00
05d9f23762 Move out create room button to separate class 2020-12-23 22:03:30 +01:00
a71496bc4e Sanity check received user joined messages
While test failures fixed in 9843da5 were a shortcoming of the test,
they exposed a potential vulnerable point of the multiplayer client
logic. In case of unreliable message delivery it is not unreasonable
that duplicate messages might arrive, in which case the same scenario
that failed in the tests could crash the game.

To ensure that is not the case, explicitly screen each new joined user
against the room user list, to ensure that duplicates do not show up.
`UserLeft` is already tolerant in that respect (if a user is requested
to be removed twice by the server, the second removal just won't do
anything).
2020-12-23 21:00:49 +01:00
47020c8887 Add failing test cases 2020-12-23 21:00:47 +01:00
152df2ad84 Merge branch 'master' into better-error-handling 2020-12-23 18:13:50 +01:00
e7a91b3dca Merge branch 'master' into fix-room-song-select-stuck 2020-12-23 18:13:27 +01:00
b1fb906773 Merge branch 'master' into fix-hard-crash-on-signal-r-exceptions 2020-12-23 17:37:49 +01:00
e4959489b7 Improve user-facing error messages in room settings 2020-12-23 17:10:53 +01:00
3b0bf11366 Fix JoinRoom failing to return canceled token
As it turns out, `Task.FromCanceled` expects to receive an already
cancelled `CancellationToken`, which `CancellationToken.None` is not.
2020-12-23 17:01:01 +01:00
6c421b873d Merge branch 'master' into fix-multiplayer-server-disconnection-flow 2020-12-23 16:55:22 +01:00
980e85ce25 Refactor player exit logic to convey intention better 2020-12-23 16:16:24 +01:00
4296f61d6c Tidy up event flow of change settings call 2020-12-23 22:39:14 +09:00
60be1bedc9 Merge pull request #11254 from frenzibyte/fix-multi-songselect-looping
Fix beatmap track not looping on multiplayer song selects
2020-12-23 22:35:11 +09:00
c5692a5d6a Re-enable carousel selection after error 2020-12-23 14:19:30 +01:00
582b0d2a74 Revert logic to be closer to original
Note the reversal of the order of operations in `endHandlingTrack()`
(done for extra safety, to ensure no more value changed events can be
fired at the point of cancelling looping).
2020-12-23 13:47:28 +01:00
74f0c50d82 Merge branch 'fix-multiplayer-server-disconnection-flow' into fix-hard-crash-on-signal-r-exceptions 2020-12-23 13:31:36 +01:00
c839892a4c Merge branch 'master' into fix-multiplayer-server-disconnection-flow 2020-12-23 11:57:43 +01:00
94e4928c4b Bring back accidentally-removed license header 2020-12-23 11:27:15 +01:00
64095307de Merge branch 'master' into realtime-leaderboard 2020-12-23 09:56:47 +01:00
0ddcab574f Rename method to avoid weird code analysis rule 2020-12-23 17:14:58 +09:00
7cc38f03d1 Use extension method in all call sites of fire-and-forget async usage 2020-12-23 17:10:34 +09:00
1864da00e6 Add extension method to handle cases of fire-and-forget async usage 2020-12-23 17:10:02 +09:00
c3c3364d39 Simplify error handling of JoinRoom call 2020-12-23 16:56:57 +09:00
d27b83d678 More correctly handle fire-and-forget async call 2020-12-23 16:51:11 +09:00
91021eb8c4 Remove unused using 2020-12-23 16:49:17 +09:00
d7279dab40 Merge pull request #11226 from peppy/fix-legacy-skin-texture-loader-store
Fix incorrectly provided texture loader store to skins
2020-12-23 16:41:01 +09:00
f5d27b40a8 Standardise flow for aborting realtime player exit to avoid double-exit call 2020-12-23 16:35:39 +09:00
569c4092ef Move notification to stateful client so it is only shown to the user from one location 2020-12-23 16:35:39 +09:00
a1d42dc4a0 Don't allow creating or joining a room when not connected to server 2020-12-23 16:35:39 +09:00
12df3056e6 Ensure appropriate screens handle exiting when the server gets disconnected
I would have liked for this to be handled via the `OnRoomChanged` event
flow, but this isn't present in RealtimeMatchSubScreen due to
inheritence woes.
2020-12-23 16:35:39 +09:00
00d50150de Ensure the current room is left at a mutliplayer client level on client disconnection 2020-12-23 16:35:39 +09:00
286884421d Apply track looping and play on track change 2020-12-23 08:47:34 +03:00
b632e44bac Merge pull request #11256 from frenzibyte/disallow-joining-ended-realtime-room
Disallow joining ended rooms in realtime multiplayer
2020-12-23 14:30:00 +09:00
be427a4ec0 Fix realtime leaderboard showing accuracy based on final base score, not rolling 2020-12-23 14:20:35 +09:00
45dcd3242d Add comment explaining why things are done where they are 2020-12-23 13:57:48 +09:00
3aa2b22838 Add early check for room status before joining 2020-12-23 05:52:10 +03:00
7751ef4f3e Revert previous logic of join guarding 2020-12-23 05:50:15 +03:00
08d87ccb1e Merge branch 'master' into present-recommended 2020-12-22 23:36:13 +01:00
3272804704 Fix potential crash when no submission token
Can happen because `TimeshiftPlayer` will schedule a screen exit on
token retrieval failure, and `RealtimePlayer`'s BDL won't even attempt
to create a leaderboard in that case.
2020-12-22 22:34:26 +01:00
3ae9dd8491 Merge branch 'master' into show-all-participant-states 2020-12-22 21:50:36 +01:00
5efc3b9496 Start state display as hidden
Would otherwise flicker for a few frames when a new user was added to
the list of participants.
2020-12-22 21:49:42 +01:00
a64ffcd294 Refrain from joining room if not allowed 2020-12-22 16:38:10 +03:00
91d5c53643 Add method for checking room joinability 2020-12-22 16:36:17 +03:00