1
0
mirror of https://github.com/ppy/osu.git synced 2024-12-15 21:53:22 +08:00
Commit Graph

312 Commits

Author SHA1 Message Date
smoogipoo
2784ba1423 Add queueing modes 2021-10-14 16:34:23 +09:00
Dean Herbert
e1ab3434ed Add ability to handle user join/leave/kick events in MultiplayerComposites 2021-08-25 14:37:14 +09:00
Dean Herbert
bc025efce5 Add commenting regarding workaround to avoid potential omission in the future 2021-08-19 17:42:44 +09:00
Dean Herbert
2b5a42e063 Add missing union specification for MatchUserRequest 2021-08-19 17:42:26 +09:00
Dean Herbert
f95c6f0de5 Switch multiplayer back to messagepack 2021-08-19 17:42:13 +09:00
Bartłomiej Dach
498462dfd0
Fix room null-check racing against async schedule 2021-08-14 17:44:41 +02:00
Dean Herbert
9b21ebd6d0 Add client side handling on incoming kick 2021-08-11 19:56:06 +09:00
Dean Herbert
d9a4f018e6 Add event flow for receiving kick commands 2021-08-11 19:56:06 +09:00
Dean Herbert
e8ad0fba75 Add required server methods for kicking users 2021-08-11 17:20:41 +09:00
Dean Herbert
2b9168157d Fix CurrentMatchPlayingItem not being reset on leaving a multiplayer room 2021-08-10 16:53:03 +09:00
Dean Herbert
ea6e441dec Simplify method of marking players as playing in test scenes 2021-08-09 19:21:22 +09:00
Dean Herbert
8dc167ac9a Set default MultiplayerRoomSettings type to something that isn't playlists 2021-08-06 18:56:01 +09:00
Dean Herbert
666007b2f9
Merge branch 'master' into multiplayer-team-vs-team-selection 2021-08-04 13:54:11 +09:00
Dean Herbert
401835a3d8 Add missing event glue 2021-08-04 13:13:47 +09:00
Dean Herbert
75426f84f1 Fire initial match user states in TestMultiplayerClient 2021-08-03 23:42:37 +09:00
Dean Herbert
b956d32587 Add the ability to change multiplayer game type 2021-08-03 23:42:37 +09:00
Dean Herbert
70da58323a Drop MatchRuleset terminology completely 2021-08-03 15:45:17 +09:00
Dean Herbert
66427127f0 Update naming in line with discussion 2021-08-03 15:09:03 +09:00
Dean Herbert
5ac3abac99 Add missing forceScheduled parameter 2021-08-03 14:53:04 +09:00
Dean Herbert
d93421b9b8 Expose a default TeamVs room state so it can be consumed by tests 2021-08-02 18:50:22 +09:00
Dean Herbert
c7274355a4 Remove abstract definitions from multiplayer states for now 2021-08-02 18:50:22 +09:00
Dean Herbert
617ff40de7 Add the ability to not use MessagePack when creating a HubConnector 2021-08-02 18:50:22 +09:00
Dean Herbert
4cf2c6188d Add union attributes for derived class deserialisation 2021-08-02 18:50:22 +09:00
Dean Herbert
ce92a47ec6 Add silly event handling hookups 2021-08-02 18:50:22 +09:00
Dean Herbert
359eb9c4ec Add new event flow for match ruleset state handling
I'm totally not happy with how this is done, but don't have the energy
to rewrite everything just now.
2021-08-02 18:50:22 +09:00
Dean Herbert
035dfd071f Add missing nullable specifications 2021-08-02 18:47:26 +09:00
Dean Herbert
d17b2b3268 Add boilerplate for server events 2021-08-02 18:47:26 +09:00
Dean Herbert
1d645d4ca9 Mark base classes non-abstract to fix messagepack serialisation 2021-08-02 18:47:26 +09:00
Dean Herbert
1c125eef12 Make Users an IList for more flexibility server-side 2021-08-02 18:47:26 +09:00
Dean Herbert
9d1e95caf0 Add flow for sending match ruleset specific messages to the server 2021-08-02 18:47:26 +09:00
Dean Herbert
e8338f2711 Add basic class structure for match rulesets and required state 2021-08-02 17:14:49 +09:00
smoogipoo
2eec524f27 Fix password not copied from multiplayer client 2021-07-19 20:20:08 +09:00
Dean Herbert
9f9d7f9125 Add remaining pieces of password flow (for osu-web join request) 2021-07-12 18:22:52 +09:00
Dean Herbert
08c40938db Add support for updating a room's password 2021-07-12 15:49:19 +09:00
Dean Herbert
5148069efe Update signatures in line with no-overload methods (unsupported by signalr) 2021-07-12 15:49:19 +09:00
Dean Herbert
2ca11d458a Add password to room settings and multiplayer lounge interface 2021-07-12 15:49:19 +09:00
Dean Herbert
9495f87f04 Remove redundant NotNull attributes in nullable classes 2021-06-17 16:07:32 +09:00
smoogipoo
d197a7f6f5 Rename multiplayer client classes 2021-05-20 15:39:45 +09:00
smoogipoo
5f94b3bdac Remove legacy playlist item ID handling 2021-05-18 21:03:59 +09:00
smoogipoo
f8f9cf9412 Merge branch 'fix-initial-playingusers' into multiplayer-spectator-screen 2021-04-22 23:25:25 +09:00
smoogipoo
f593d9e42c Fix playing users not being updated on room join 2021-04-22 23:23:43 +09:00
smoogipoo
56e1bffdfd Populate initial user states 2021-04-13 23:57:16 +09:00
smoogipoo
6eddc6c59e Enable spectating multiplayer matches 2021-04-09 21:03:50 +09:00
smoogipoo
2791d454d2 Don't send spectating user state yet 2021-04-07 22:21:22 +09:00
smoogipoo
6de91d7b6b Add spectate button + test 2021-04-06 21:37:27 +09:00
smoogipoo
d5ba77b2c2 Add spectating user state 2021-04-06 21:22:28 +09:00
Dean Herbert
b1cd01ceb8 Apply ConfigureAwait changes to game side 2021-03-08 14:36:35 +09:00
smoogipoo
7adb33f40e Fix beatmap getting nulled due to failing web request 2021-03-01 17:24:54 +09:00
smoogipoo
c0e0bd4f42 Add compatibility with old server build 2021-02-19 13:57:04 +09:00
smoogipoo
183a481a34 Refactor playlist update to remove .Contains() check 2021-02-19 13:32:32 +09:00
smoogipoo
56e9e10ff5 Make server authoritative in playlist item id 2021-02-18 15:30:31 +09:00
smoogipoo
70a995919c Update comments 2021-02-17 17:58:24 +09:00
smoogipoo
f61b8e6154 Change to long 2021-02-16 21:32:38 +09:00
smoogipoo
100097d78f Fix playlist not being handled correctly for non-joined cases 2021-02-16 21:32:35 +09:00
smoogipoo
3ff9e14e35 Make StatefulMultiplayerClient control current playlist item 2021-02-16 18:56:13 +09:00
Dean Herbert
9ad38ab20e Move HubClientConnector retrieval to IAPIProvider 2021-02-15 16:43:56 +09:00
Salman Ahmed
5fb99fdc52 Rename some members and extract connection closure to separate method 2021-02-11 10:49:16 +03:00
Salman Ahmed
0c5e66205b Merge branch 'master' into abstract-hub-connection 2021-02-11 02:14:22 +03:00
Dan Balasescu
92599aa02b
Merge branch 'master' into user-beatmap-downloading-states-2 2021-02-09 21:06:09 +09:00
Salman Ahmed
f04d6d5e5e Update hub clients with changes to connecotr 2021-02-09 08:02:32 +03:00
Salman Ahmed
71e564d399 Revert clients to be Components 2021-02-09 07:46:00 +03:00
Salman Ahmed
28b815ffe1 Clean up multiplayer client with new hub connector 2021-02-09 02:13:09 +03:00
smoogipoo
d8c53e34ae Fix missing using 2021-02-08 19:42:17 +09:00
Dean Herbert
5fbed05d04
Merge pull request #11551 from smoogipoo/fix-leave-room-race-2
Fix client potentially not leaving a room on exiting multiplayer
2021-02-08 19:23:14 +09:00
smoogipoo
6e34e7d750 Merge branch 'master' into user-beatmap-downloading-states-2 2021-02-08 19:08:53 +09:00
smoogipoo
fb8e31a303 Fix incorrect connection building due to bad merges 2021-02-08 17:52:03 +09:00
smoogipoo
da85fb372d Merge branch 'master' into fix-multiplayer-client-connection-reliability 2021-02-08 13:43:24 +09:00
Dean Herbert
9e9e382bee Merge branch 'master' into user-beatmap-downloading-states-2 2021-02-05 15:27:17 +09:00
Dean Herbert
c5fa818630 Actually handle case of failing to achieve lock on SemaphoreSlim 2021-02-05 14:08:13 +09:00
Dean Herbert
cd67fe1091 Merge branch 'master' into fix-multiplayer-client-connection-reliability 2021-02-05 14:04:57 +09:00
smoogipoo
2e85ce5b82 Rename UserMods -> Mods for MultiplayerRoomUser 2021-02-05 12:40:16 +09:00
smoogipoo
85e63afcb4 Rename Mods -> RequiredMods 2021-02-05 12:36:25 +09:00
smoogipoo
65d45ec74c Unschedule cancellation 2021-02-03 20:50:22 +09:00
smoogipoo
97247b7a67 Fix unset key 2021-02-01 19:59:18 +09:00
smoogipoo
9c4c47599f Merge branch 'master' into freemods 2021-02-01 19:28:10 +09:00
smoogipoo
89a42d60fb General cleanup 2021-02-01 18:50:32 +09:00
smoogipoo
f538963607 Extra mods -> user mods 2021-02-01 17:57:32 +09:00
smoogipoo
ac2a995041 Add user and panel states 2021-02-01 17:54:56 +09:00
Bartłomiej Dach
c3ba92f057 Set canceled result in scheduleAsync
Was holding up the task completion source, and in consequence,
potentially the entire task chain.
2021-01-30 16:13:50 +01:00
Bartłomiej Dach
9ab1ad25eb Merge branch 'master' into fix-leave-room-race-2 2021-01-30 13:41:04 +01:00
smoogipoo
ab9a3e6dd0 Pass allowed mods and consume on server callback 2021-01-29 18:21:22 +09:00
Dean Herbert
a61444690e Remove all usage of CatchUnobservedExceptions
This should no longer be required with the recent framework side change
that stops a game from crashing on unobserved exceptions
(https://github.com/ppy/osu-framework/pull/4171).
2021-01-29 16:32:29 +09:00
Bartłomiej Dach
386f9f7842 Fix typos in comments 2021-01-28 22:36:07 +01:00
Dean Herbert
90a82f986b Fallback to using json for signalr communication if JIT is unavailable 2021-01-28 16:20:19 +09:00
smoogipoo
c408b46a21 Add AllowedMods to MultiplayerRoomSettings model 2021-01-27 22:25:14 +09:00
Bartłomiej Dach
4d4d97661e Fix connection loop always getting a cancelled token 2021-01-26 21:26:50 +01:00
smoogipoo
248989b3eb wip 2021-01-27 01:20:50 +09:00
smoogipoo
085115cba5 Make threading even more thread safe 2021-01-26 22:49:01 +09:00
Dean Herbert
b573c96c07 Move disconnect logic inside connection loop to ensure previous connection is disposed 2021-01-26 18:59:42 +09:00
Dean Herbert
15885c17af Remove unused usings 2021-01-26 18:07:43 +09:00
Dean Herbert
20cfa991bf Switch clients to MessagePack mode 2021-01-26 17:41:21 +09:00
Dean Herbert
e4fc604163 Setup all multiplayer model classes for MessagePack support 2021-01-26 16:26:03 +09:00
smoogipoo
bb44fcfe31 Prevent some data races 2021-01-25 21:01:39 +09:00
smoogipoo
964976f604 Use a task chain and fix potential misordering of events 2021-01-25 21:01:39 +09:00
Dean Herbert
0f09a7feb9 Avoid semaphore potentially getting held forever 2021-01-25 17:17:04 +09:00
Dean Herbert
994fb2667d Call DisposeAsync instead of StopAsync 2021-01-25 17:11:04 +09:00
Dean Herbert
c05ae3497a Make connect/disconnect private 2021-01-25 17:02:24 +09:00
Dean Herbert
d24d236468 Make OperationCanceledException throwing behaviour consistent 2021-01-22 14:34:58 +09:00
Dean Herbert
9f89b4e6d7 Rewrite connection logic to better handle failure cases
The main goal here is to ensure the connection is built each connection
attempt. Previously, the access token would never be updated, leading to
outdated tokens failing repeatedly (in the connection retry loop) and
never being able to establish a new connection as a result.

Due to threading considerations, this isn't as simple as I would hope it
to be. I'm open to proposals as to a better way of handling this.

Also, keep in mind that this logic will need to be abstracted and
(re)used in `SpectatorClient` as well. I've intentionally not done that
yet until we agree that this is a good direction forward.
2021-01-22 14:25:23 +09:00
Dan Balasescu
76e1f6e57b
Fix locking on incorrect object
Co-authored-by: Bartłomiej Dach <dach.bartlomiej@gmail.com>
2021-01-21 12:45:44 +09:00