5261c01849
Tie JoinRoom() and PartRoom() together
2021-01-20 19:43:42 +09:00
88abee705b
Add missing event mapping for user beatmap availability change
2021-01-18 10:49:02 +03:00
eb53e32792
Use task completion source for room join flow
...
On Android, users were unable to join or create multiplayer rooms. The
root cause of that was that the both the wait and set of the
`ManualResetEvent` in `getRoomUsers` occurred on the same thread, which
created a chicken-and-egg situation - the set could not proceed until
the wait had actually completed.
Resolve by substituting the `ManualResetEvent` for a
`TaskCompletionSource` to achieve a promise-style task, which the
previous code was a crude approximation of anyway.
Closes #11385 .
2021-01-17 14:40:22 +01:00
67b5ebadf5
Merge branch 'master' into fix-is-connected-thread-safety
2021-01-15 12:56:21 +09:00
560b1e970c
Merge branch 'master' into user-beatmap-downloading-states
2021-01-13 22:31:31 +03:00
7298adc9d9
Fix non-threadsafe usage of MultiplayerClient.IsConnected
2021-01-12 19:04:16 +09:00
0d5fbb15ac
Fix up code comments
...
Default value restated in xmldoc was snipped because it's made redundant
by the initialiser and possibly bound to be outdated at some point.
2021-01-11 20:31:52 +01:00
90fb67b377
Update code in-line with decided direction
2021-01-11 20:52:24 +03:00
deb1ad7bca
Merge branch 'master' into disable-repeat-multi-actions
2021-01-04 23:38:29 +09:00
839f5a7570
Ensure clients don't blow up when given user isn't in room
2021-01-03 18:36:37 +03:00
152e9ecccf
Make BeatmapAvailability
class in-line with other online data structures
2021-01-03 18:36:05 +03:00
dfa8be9173
Add beatmap availability change state & event methods
2021-01-03 05:48:49 +03:00
09e5e2629a
Add user beatmap availability property
2021-01-03 05:48:49 +03:00
9ab1091281
Merge branch 'master' into fix-signalr-reconnect
2021-01-02 13:18:02 +01:00
72a6ca7755
Allow signalr to retry connecting when connection is closed without an exception
2021-01-02 16:47:00 +09:00
f800448c87
Move game start logic to a higher level
2020-12-30 18:15:48 +01:00
dd87478690
Add helper IsHost property to Client
2020-12-30 16:29:19 +01:00
497d644a19
Move thread safety / locking logic from MultiplayerRoom
2020-12-30 20:24:50 +09:00
3920dac8af
Merge branch 'master' into fix-error-spam-on-disconnection
2020-12-30 00:55:37 +09:00
6bbd0ecfac
Remove unused lock object
2020-12-29 17:39:00 +09:00
e9b0652359
Move ready-up operation logic again to client
...
To salvage ready up button tests.
2020-12-29 09:16:02 +01:00
903dca875e
Make localUser a client property
2020-12-29 07:46:22 +01:00
2cb84c5111
Fix error message being shown to user on multiplayer disconnection when not in room
2020-12-29 15:19:52 +09:00
f31a0e455a
Minor xmldoc rewording
2020-12-29 14:29:40 +09:00
e3a41f6118
Rename variable to make more sense
...
It needs to be explicitly stated that the users in this list are related
to the *joined* room. Especially since it's sharing its variable name
with `SpectatorStreamingClient` where it has the opposite meaning (is a
list of *globally* playing players).
2020-12-29 14:27:35 +09:00
6aeb7ece66
Tidy up update state code, naming, xmldoc
2020-12-29 14:25:08 +09:00
1d311a6680
Change PlayingUsers population logic to match expectations
2020-12-28 19:27:56 +01:00
b059b5d616
Merge branch 'master' into fix-ready-button-crash
2020-12-26 12:41:47 +01:00
04d54c40db
Allow all StatefulMultiplayerClient schedules to run inline
...
Fixes test failures due to not allowing to do so, therefore inverting
execution order in some cases - for example, calling
JoinRoom(room);
LeaveRoom();
on the update thread would invert execution order due to the first being
unscheduled but the second being scheduled.
2020-12-26 12:04:10 +01:00
dae27fefe4
Run user list copy inline if possible
...
`getRoomUsers()` was not safe to call from the update thread, as
evidenced by the test failures. This was due to the fact that the added
reset event could never actually be set from within the method, as the
wait was blocking the scheduled set from ever proceeding.
Resolve by allowing the scheduled copy & set to run inline if on the
update thread already.
2020-12-26 12:03:03 +01:00
f9900720d5
Rename OnRoomChanged to OnRoomUpdated to avoid confusion
2020-12-26 10:49:02 +09:00
5ce5b6cec0
Fix non-safe thread access to room users on room join
2020-12-26 10:25:16 +09:00
e0198c36ae
Fix user population happening in single file
2020-12-26 09:48:13 +09:00
5d4b73baa5
RealtimeMultiplayer -> Multiplayer
2020-12-25 14:10:59 +09:00
a1384942b1
Timeshift -> Playlists at a code level
2020-12-25 13:11:21 +09:00
c07b2d89e6
Merge branch 'master' into realtime-multiplayer-2
2020-12-21 18:44:03 +09:00
44af32dc47
Merge pull request #11234 from smoogipoo/fix-category-serialisation
...
Fix room category being serialised as int
2020-12-21 18:03:10 +09:00
5ec64c0348
Merge pull request #11232 from smoogipoo/participant-count-serialisation
...
Make participant count non-nullable
2020-12-21 17:34:01 +09:00
04af072da7
Merge branch 'fix-category-serialisation' into realtime-multiplayer-2
2020-12-21 16:57:22 +09:00
e23d81bfc6
Use enum property
2020-12-21 16:56:45 +09:00
a021aaf546
Fix room category being serialised as ints
2020-12-21 16:42:21 +09:00
5d73359bd7
Make participant count non-nullable
2020-12-21 16:35:19 +09:00
64a32723f3
One more case
2020-12-21 16:23:42 +09:00
14ea49a14d
Merge branch 'nullable-endsat' into realtime-multiplayer-2
2020-12-21 16:22:16 +09:00
a59124dd93
Make room duration/endsat nullable
2020-12-21 16:18:39 +09:00
536df074a9
Don't attempt to re-map existing beatmap/ruleset (for testing)
2020-12-21 00:02:49 +09:00
2fc5561b7e
Add handling for GetRoomRequest()
2020-12-19 01:22:52 +09:00
c6555c53cc
Add a testable realtime room manager
2020-12-19 01:17:24 +09:00
ef57ae6f40
Merge pull request #11127 from peppy/realtime-multiplayer
...
Add client-side models and interfaces required for multiplayer
2020-12-16 13:22:01 +09:00
c1c0b9a9db
Add realtime to room categories
2020-12-11 14:10:45 +09:00