Commit Graph

1413 Commits

Author SHA1 Message Date
deb1ad7bca Merge branch 'master' into disable-repeat-multi-actions 2021-01-04 23:38:29 +09:00
6ad1b7767e Update osu.Game/Online/API/APIMod.cs
Co-authored-by: Salman Ahmed <slmanarendo1950@gmail.com>
2021-01-03 17:04:16 +09:00
99fa0e25dc Switch back to FirstOrDefault to allow for weird testing logic to pass 2021-01-03 16:46:24 +09:00
29dbb1cc0d Add internal pathway for ensuring correct application of bindable mods 2021-01-03 15:48:28 +09:00
23e216fa0b Simplify some default value checks (we are sure the return is an IBindable) 2021-01-03 15:47:15 +09:00
1a44338124 Use SingleOrDefault for added safety when looking up mod acronyms 2021-01-03 15:38:30 +09: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
03b78d1c4b Handle SocketExceptions and HttpRequestExceptions more silently
These can occur when a network connection is completely unavailable (ie.
host resolution failures are occurring). Currently these would appear as
important errors which spammed the notification overlay every retry
forever, while no network connection is available.

I also took this opportunity to remove a lot of `bool` passing which was
no longer in use (previously the fail count / retry process was
different to what we have today).
2020-12-29 16:22:11 +09: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
1b7c72f03b Merge branch 'master' into changelog-refactor 2020-12-28 11:00:14 +09:00
3b5260fd67 Merge branch 'master' into fix-gameplay-leaderboard-clickable-avatars 2020-12-27 19:00:38 +09:00
0b42b4b955 Rename {Drawable -> Clickable}Avatar 2020-12-26 14:35:11 +01:00
a1af749b4b Merge branch 'master' into patch/11310 2020-12-26 13:19:13 +01:00
b059b5d616 Merge branch 'master' into fix-ready-button-crash 2020-12-26 12:41:47 +01:00
b9d725ab49 Don't copy spotlight category 2020-12-26 20:13:28 +09: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
e7339d6959 fix(osu.Game): Ensure Category property is copied in Room. 2020-12-25 21:07:33 -05: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
0bd9f68cbd Refactor update stream colour mapping code 2020-12-25 21:06:03 +01:00
83fb7c7a1a Re-namespace all files in OnlinePlay directory 2020-12-25 16:50:09 +01:00
2d7f9bf290 Revert RoomCategory naming change to avoid json deserialization failures 2020-12-25 23:34:29 +09:00
e49dce2c86 Fix some missed renames 2020-12-25 15:34: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
3d28a0ccef Merge pull request #11271 from peppy/dev-server
Prefer connecting to dev server when running in DEBUG
2020-12-24 23:01:19 +09:00
d5c348b568 Remove explicit public access modifier from interface 2020-12-24 13:44:46 +01:00
66a23c22e5 Fix various tests failing due to dependence on specific online data 2020-12-24 21:28:24 +09:00
4fb2610c82 Merge branch 'master' into frame-bundle-accuracy 2020-12-24 11:20:06 +01:00
323da82477 Add website root URL and update most links to use it
For what it's worth, I intentionally didn't include news / changelog /
supporter, because these should never change.
2020-12-24 18:11:42 +09:00
eb795a2127 Move all endpoint information to a configuration class 2020-12-24 17:58:38 +09:00
1f80f01b53 Add accuracy to frame bundle header 2020-12-24 14:46:52 +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
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
e89583d732 Prefer connecting to dev server when running in DEBUG 2020-12-24 01:33:19 +09:00