Commit Graph

142 Commits

Author SHA1 Message Date
5233a0449a Hide main room subscreen on initial mp room creation. Toggle mp room subscreen visibility based on settings overlay visibility before room is created. 2021-01-18 16:08:06 -05:00
e6ceaad732 Revert user state back to idle upon availability change 2021-01-18 17:23:51 +03:00
0b165dce4b Fix multiplayer mod select showing autoplay as a choice 2021-01-18 17:50:32 +09:00
6deb10e075 Add UI state display for each client's beatmap availability 2021-01-18 11:10:02 +03:00
4e6c1a3906 Update client beatmap availability in-line with tracker 2021-01-18 10:51:39 +03:00
59ae50b0e5 Clean up ready button logic into using MultiplayerBeatmapTracker 2021-01-17 01:11:03 +03:00
67b5ebadf5 Merge branch 'master' into fix-is-connected-thread-safety 2021-01-15 12:56:21 +09:00
3e8732a59f Merge branch 'master' into fix-participants-list 2021-01-14 21:30:53 +09:00
2d3cacca11 Fix non-hosts crashing on load requested
`onLoadRequested()` always released the `readyClickOperation` ongoing
operation, without checking whether it actually needs to/should (it
should only do so if the action initiating the operation was starting
the game by the host). This would crash all other consumers, who already
released the operation when their ready-up operation completed server
side.

To resolve, relax the constraint such that the operation can be ended
multiple times in any order. At the end of the day the thing that
matters is that the operation is done and the ready button is unblocked.
2021-01-13 00:58:53 +01:00
7298adc9d9 Fix non-threadsafe usage of MultiplayerClient.IsConnected 2021-01-12 19:04:16 +09:00
422260797b Revert polling changes to fix participant list display
It turns out this polling was necessary to get extra data that isn't
included in the main listing request. It was removed deemed useless, and
in order to fix the order of rooms changing when selecting a room.
Weirdly, I can't reproduce this happening any more, and on close
inspection of the code can't see how it could happen in the first place.

For now, let's revert this change and iterate from there, if/when the
same issue arises again.

I've discussed avoiding this second poll by potentially including more
data (just `user_id`s?) in the main listing request, but not 100% sure
on this - even if the returned data is minimal it's an extra join
server-side, which could cause performance issues for large numbers of
rooms.
2021-01-12 17:26:00 +09:00
b69fe8a274 Merge branch 'master' into disable-repeat-multi-actions 2021-01-09 10:15:20 +09:00
dad5dd3667 Remove unnecessary permissiveness wrt null 2021-01-08 22:21:54 +01:00
edd328c8fe Move bindable closer to source class 2021-01-08 17:24:55 +09:00
54982dcdd7 Refactor LoadingLayer to avoid applying effects to external drawables
In theory this seemed like a good idea (and an optimisation in some
cases, due to lower fill rate), but in practice this leads to weird edge
cases.

This aims to do away with the operations on external drawables by
applying a dim to the area behind the `LoadingLayer` when required.
I went over each usage and ensured they look as good or better than
previously.

The specific bad usage here was the restoration of the colour on dispose
(if the `LoadingLayer` was disposed in a still-visible state).

I'm aware that the `BeatmapListingOverlay` will now dim completely during
load. I think this is fine for the time being.
2021-01-05 17:31:45 +09:00
deb1ad7bca Merge branch 'master' into disable-repeat-multi-actions 2021-01-04 23:38:29 +09:00
7d9a61fbc1 Handle unobserved exceptions from ready button properly 2020-12-31 11:57:13 +01:00
f800448c87 Move game start logic to a higher level 2020-12-30 18:15:48 +01:00
d34609b98e Rename On{ToggleReady -> ReadyClick} 2020-12-30 16:29:36 +01:00
59f2017a13 Move BindValueChanged subscriptions to LoadComplete 2020-12-30 16:22:11 +01:00
cafa241ef3 Fix ready-up button getting stuck if server operation fails 2020-12-29 09:44:30 +01:00
e9b0652359 Move ready-up operation logic again to client
To salvage ready up button tests.
2020-12-29 09:16:02 +01:00
db52255bbe Adjust tracker usages to match new API 2020-12-29 08:20:43 +01:00
9ff2140232 Move ready-up logic to match sub-screen 2020-12-29 07:52:15 +01:00
903dca875e Make localUser a client property 2020-12-29 07:46:22 +01:00
f68e4fc88f Merge branch 'master' into disable-repeat-multi-actions 2020-12-29 07:42:20 +01:00
45c578b857 Remove selection polling from multiplayer
Looks like this was just copy-paste without any thought into whether it
should exist. It really shouldn't exist.

This is a thing for the playlists system because the *whole system*
there relies on polling the web API to get updated information. In the
case of mutliplayer, we hand off all communications to the realtime
server at the point of joining the rooms.

The argument that this was there to do faster polling on the selection
isn't valid since the polling times were the same for both cases.

Closes #11348.
2020-12-29 15:10:09 +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
6dc0f6af50 Disable setting apply button for duration of operation 2020-12-28 22:48:03 +01:00
af66e45311 Disable create room button after triggering join 2020-12-28 22:48:03 +01:00
47ab7c9fd6 Disable ready button after host click 2020-12-28 22:48:03 +01:00
a014d0ec18 Use PlayingUsers when constructing player directly 2020-12-28 19:27:56 +01:00
2e88036f39 Merge pull request #11342 from bdach/fix-beatmap-not-reverting
Fix user changes in multi song select not reverting on exit without confirmation
2020-12-28 21:56:07 +09:00
f16b516e58 Revert user changes if no selection was made 2020-12-28 12:35:17 +01:00
046a76cb1d Allow null users to still be displayed in the participant list
The fix here is correcting the access of `user.Country`. The deicision
to have null users display is because this is the best we can do (if
osu-web could not resolve the user). We still want the users in the
lobby to be aware of this user's presence, rather than hiding them from
view.

osu-stable does a similar thing, showing these users as `[Loading]`. I
decided to go with blank names instead because having *any* text there
causes confusion. We can iterate on this in future design updates.
2020-12-28 15:03:44 +09:00
fe1bbb1cac Don't fail if the local user is not present in room users when updating ready button state 2020-12-26 10:49:22 +09:00
f9900720d5 Rename OnRoomChanged to OnRoomUpdated to avoid confusion 2020-12-26 10:49:02 +09:00
ed4b8482b6 Rename {Multiplayer -> OnlinePlay}Composite 2020-12-25 18:07:34 +01:00
4c43a67b68 Rename I{Multiplayer -> OnlinePlay}SubScreen 2020-12-25 18:07:34 +01:00
4caf75850b Rename {Multiplayer -> OnlinePlay}Screen 2020-12-25 17:00:00 +01:00
83fb7c7a1a Re-namespace all files in OnlinePlay directory 2020-12-25 16:50:09 +01:00
e797e5ce7a Rename Multi directory to OnlinePlay 2020-12-25 16:50:02 +01:00