Commit Graph

86 Commits

Author SHA1 Message Date
Dean Herbert 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
Dean Herbert 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
Dean Herbert eb795a2127 Move all endpoint information to a configuration class 2020-12-24 17:58:38 +09:00
Dean Herbert 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
Dean Herbert 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
Bartłomiej Dach 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
Dean Herbert e89583d732 Prefer connecting to dev server when running in DEBUG 2020-12-24 01:33:19 +09:00
Bartłomiej Dach 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
Dean Herbert 4296f61d6c Tidy up event flow of change settings call 2020-12-23 22:39:14 +09:00
Bartłomiej Dach 94e4928c4b Bring back accidentally-removed license header 2020-12-23 11:27:15 +01:00
Dean Herbert 0ddcab574f Rename method to avoid weird code analysis rule 2020-12-23 17:14:58 +09:00
Dean Herbert 7cc38f03d1 Use extension method in all call sites of fire-and-forget async usage 2020-12-23 17:10:34 +09:00
Dean Herbert 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
Dean Herbert 00d50150de Ensure the current room is left at a mutliplayer client level on client disconnection 2020-12-23 16:35:39 +09:00
Dean Herbert 12876d7fb6 Add very basic error handling on ChangeSettings calls 2020-12-22 16:50:30 +09:00
Dean Herbert 3f966386ed Fix compile time failure due to potentially null connection 2020-12-22 15:15:32 +09:00
smoogipoo b31f4e9e85 Merge branch 'stateful-multiplayer-client' into realtime-multiplayer-2 2020-12-21 00:41:42 +09:00
smoogipoo a893360c0e Reword comment 2020-12-21 00:41:14 +09:00
smoogipoo 1d7d8bd6fc Hook up a realtime multiplayer client 2020-12-20 23:26:31 +09:00
smoogipoo fdfe3c2b36 Merge branch 'realtime-ready-button' into realtime-multiplayer-2 2020-12-20 23:11:06 +09:00
smoogipoo 9d13a5b06a Fix potential cross-thread list access 2020-12-20 22:53:07 +09:00
smoogipoo f876a329b1 Fire-and-forget leave-room request 2020-12-20 22:51:33 +09:00
smoogipoo 0cf078562d Split method up and remove nested scheduling 2020-12-20 18:30:00 +09:00
smoogipoo 508f73d949 Fix up comment 2020-12-20 18:25:54 +09:00
smoogipoo 8b1f5ff492 Only instantiate ruleset once 2020-12-20 18:25:23 +09:00
smoogipoo 724e4b83fe Fix nullability and remove early check 2020-12-20 18:21:03 +09:00
smoogipoo 9ceb090f04 Fix ambiguous reference 2020-12-19 00:53:06 +09:00
smoogipoo ab9158c306 Add a stateful multiplayer client 2020-12-19 00:53:06 +09:00
Dean Herbert bb586f3175
Merge pull request #11193 from smoogipoo/add-multiplayer-beatmap-checksum
Add beatmap checksum to MultiplayerRoomSettings
2020-12-17 23:55:38 +09:00
smoogipoo c15bb6b928 Add beatmap hash to MultiplayerRoomSettings 2020-12-17 22:04:24 +09:00
smoogipoo 9571157841 Use ints for userid parameters 2020-12-16 20:04:36 +09:00
smoogipoo 31fe28b8b3 Remove IStatefulMultiplayerClient 2020-12-16 12:32:53 +09:00
smoogipoo 4cd290af11 Split server interfaces 2020-12-16 12:31:11 +09:00
Dean Herbert aedb18b9f2 Make RulesetID non-nullable 2020-12-11 18:14:33 +09:00
Dean Herbert d3b2e2b36e Change locking method to better allow cross-thread locking 2020-12-11 14:43:39 +09:00
Dean Herbert 719b08b22f Make room setting's BeatmapID non-nullable 2020-12-11 14:11:42 +09:00
Dean Herbert 3fb41a20b5 Add room name to settings 2020-12-11 13:27:52 +09:00
Dean Herbert c8e3c7e77b Add stateful client interface 2020-12-09 17:45:07 +09:00
Dean Herbert bb97eae8b1 Update outdated exception references in xmldoc 2020-12-09 16:02:37 +09:00
Dean Herbert 1e08b298b8 Remove unnecessary exception type 2020-12-09 16:01:09 +09:00
Dean Herbert 578e5cb92e Also make InvalidStateException serializable 2020-12-09 15:59:13 +09:00
Dean Herbert ab00a15555 Add JsonConstructor specs to allow for correct deserialization of readonly fields 2020-12-09 15:05:57 +09:00
Dean Herbert bef52af1da Move client state class to server implementation
Never used by client.
2020-12-09 15:05:33 +09:00
Dean Herbert e09715d71e Add ToString implementation to MultiplayerRoom for easier debug 2020-12-09 14:47:26 +09:00
Dean Herbert c92c2cbfc0 Change exceptions which should be returned to the user to HubException type
See
https://docs.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.signalr.hubexception?view=aspnetcore-5.0.
2020-12-09 14:46:44 +09:00
Dean Herbert 48129c52d6 Change get-only property for now 2020-12-09 12:38:24 +09:00
Dean Herbert 427d41bab5 Add missing licence headers 2020-12-09 12:17:37 +09:00
Dean Herbert 0eb5b16454 Remove Empty() implementation for RoomSettings until otherwise necessary 2020-12-09 12:12:03 +09:00
Dean Herbert 1013749a83 Change user id type to int 2020-12-09 12:10:47 +09:00
Dean Herbert fd4fa963ac Standardise exception naming 2020-12-09 12:07:19 +09:00