Dean Herbert
b0d4f7aff6
Add recovery logic after disconnection
2022-07-05 21:32:00 +09:00
Dean Herbert
d217d66852
Add OnlineMetadataClient
2022-07-05 21:32:00 +09:00
Joseph Madamba
df152421a8
Fix personal best score showing delete option on context menu
2022-07-03 10:23:17 -07:00
Dan Balasescu
ccc322e100
Merge pull request #18985 from andy840119/remove-nullable-disable-in-the-replays
...
Remove nullable disable annotation in replays namespace
2022-07-03 21:19:36 +09:00
andy840119
8c2f4b48fc
Use debug.assert for better readable.
2022-07-03 19:27:56 +08:00
Dan Balasescu
1ccfd69690
Merge pull request #18978 from peppy/send-beatmap-hash-to-server
...
Send beatmap hash to server on solo score request
2022-07-03 13:18:17 +09:00
andy840119
0a1543c6e8
Use AsNonNull()
instead.
2022-07-02 19:48:32 +08:00
andy840119
c6d0f0f81b
pretend that the beatmap property will not be null.
...
Not really throw exception will be the better way?
2022-07-02 13:20:46 +08:00
Dean Herbert
634b6cdbbe
Send beatmap has to server on solo score request
...
Right now, the client does nothing to ensure a beatmap is in a valid
state before requesting to submit a score. There is further work to be
done client-side so it is more aware of this state (already handled for
playlists, but not for the solo gameplay loop), but the solution I have
in mind for that is a bit more involved.
This is not used server-side yet, but I want to get this sending so we
can start using it for some very basic validation.
Will resolve the basic portion of #11922 after implemented server-side.
2022-07-02 12:16:17 +09:00
Dan Balasescu
b64c0d011c
Isolate client's Room from TestMultiplayerClient
2022-07-01 19:23:25 +09:00
andy840119
48047f2e58
Move the null check in the outside.
...
AddCursor() should not accept the null value.
2022-06-30 23:29:49 +08:00
Dan Balasescu
c6520de749
Ensure PlaylistItem beatmap is not null
2022-06-30 14:24:49 +09:00
Dan Balasescu
8e4a6c43b5
Merge pull request #18914 from peppy/spectator-playback-test-leniences
...
Increase leniences on `TestSceneSpectatorPlayback.TestWithSendFailure`
2022-06-28 16:15:51 +09:00
Dean Herbert
22b254e5c5
Handle task exception outside of schedule to avoid unobserved exceptions
2022-06-28 15:09:28 +09:00
Dean Herbert
c1075d113f
Add logging around current channel changes and join requests
...
Tracking down a flaky test
(https://teamcity.ppy.sh/buildConfiguration/Osu_Build/553?hideProblemsFromDependencies=false&expandBuildTestsSection=true&hideTestsFromDependencies=false ):
```csharp
TearDown : System.TimeoutException : "PM Channel 1 displayed" timed out
--TearDown
at osu.Framework.Testing.Drawables.Steps.UntilStepButton.<>c__DisplayClass11_0.<.ctor>b__0()
at osu.Framework.Testing.Drawables.Steps.StepButton.PerformStep(Boolean userTriggered)
at osu.Framework.Testing.TestScene.runNextStep(Action onCompletion, Action`1 onError, Func`2 stopCondition)
--- End of stack trace from previous location ---
at osu.Framework.Testing.TestSceneTestRunner.TestRunner.RunTestBlocking(TestScene test)
at osu.Game.Tests.Visual.OsuTestScene.OsuTestSceneTestRunner.RunTestBlocking(TestScene test) in /opt/buildagent/work/ecd860037212ac52/osu.Game/Tests/Visual/OsuTestScene.cs:line 503
at osu.Framework.Testing.TestScene.RunTestsFromNUnit()
------- Stdout: -------
[runtime] 2022-06-27 23:18:55 [verbose]: 💨 Class: TestSceneChatOverlay
[runtime] 2022-06-27 23:18:55 [verbose]: 🔶 Test: TestKeyboardNextChannel
[runtime] 2022-06-27 23:18:55 [verbose]: Chat is now polling every 60000 ms
[runtime] 2022-06-27 23:18:55 [verbose]: 🔸 Step #1 Setup request handler
[runtime] 2022-06-27 23:18:55 [verbose]: 🔸 Step #2 Add test channels
[runtime] 2022-06-27 23:18:55 [verbose]: 🔸 Step #3 Show overlay with channels
[runtime] 2022-06-27 23:18:55 [verbose]: Unhandled Request Type: osu.Game.Online.API.Requests.CreateChannelRequest
[network] 2022-06-27 23:18:55 [verbose]: Failing request osu.Game.Online.API.Requests.CreateChannelRequest (System.InvalidOperationException: DummyAPIAccess cannot process this request.)
[runtime] 2022-06-27 23:18:55 [verbose]: Unhandled Request Type: osu.Game.Online.API.Requests.CreateChannelRequest
[network] 2022-06-27 23:18:55 [verbose]: Failing request osu.Game.Online.API.Requests.CreateChannelRequest (System.InvalidOperationException: DummyAPIAccess cannot process this request.)
[runtime] 2022-06-27 23:18:55 [verbose]: 🔸 Step #4 Select channel 1
[runtime] 2022-06-27 23:18:55 [verbose]: 🔸 Step #5 Channel 1 is visible
[runtime] 2022-06-27 23:18:55 [verbose]: 🔸 Step #6 Press document next keys
[runtime] 2022-06-27 23:18:55 [verbose]: 🔸 Step #7 Channel 2 is visible
[runtime] 2022-06-27 23:18:55 [verbose]: 🔸 Step #8 Press document next keys
[runtime] 2022-06-27 23:18:55 [verbose]: 🔸 Step #9 PM Channel 1 displayed
[network] 2022-06-27 23:18:55 [verbose]: Request to https://a.ppy.sh/587 failed with System.Net.WebException: NotFound.
[network] 2022-06-27 23:18:55 [verbose]: Request to https://a.ppy.sh/503 failed with System.Net.WebException: NotFound.
[runtime] 2022-06-27 23:19:05 [verbose]: 💥 Failed (on attempt 5,550)
[runtime] 2022-06-27 23:19:05 [verbose]: ⏳ Currently loading components (0)
[runtime] 2022-06-27 23:19:05 [verbose]: 🧵 Task schedulers
[runtime] 2022-06-27 23:19:05 [verbose]: LoadComponentsAsync (standard) concurrency:4 running:0 pending:0
[runtime] 2022-06-27 23:19:05 [verbose]: LoadComponentsAsync (long load) concurrency:4 running:0 pending:0
[runtime] 2022-06-27 23:19:05 [verbose]: 🎱 Thread pool
[runtime] 2022-06-27 23:19:05 [verbose]: worker: min 1 max 32,767 available 32,766
[runtime] 2022-06-27 23:19:05 [verbose]: completion: min 1 max 1,000 available 1,000
[runtime] 2022-06-27 23:19:05 [debug]: Focus on "ChatTextBox" no longer valid as a result of unfocusIfNoLongerValid.
[runtime] 2022-06-27 23:19:05 [debug]: Focus changed from ChatTextBox to nothing.
```
This kind of logging should be helpful:
```csharp
[runtime] 2022-06-28 04:59:57 [verbose]: 🔸 Step #5 Channel 1 is visible
[runtime] 2022-06-28 04:59:57 [verbose]: 🔸 Step #6 Press document next keys
[runtime] 2022-06-28 04:59:57 [verbose]: Current channel changed to #channel-2
[runtime] 2022-06-28 04:59:57 [debug]: Pressed (DocumentNext) handled by TestSceneChatOverlay+TestChatOverlay.
[runtime] 2022-06-28 04:59:57 [debug]: KeyDownEvent(PageDown, False) handled by ManualInputManager+LocalPlatformActionContainer.
[runtime] 2022-06-28 04:59:57 [verbose]: 🔸 Step #7 Channel 2 is visible
[runtime] 2022-06-28 04:59:57 [verbose]: 🔸 Step #8 Press document next keys
[runtime] 2022-06-28 04:59:57 [verbose]: Current channel changed to test user 685
[runtime] 2022-06-28 04:59:57 [debug]: Pressed (DocumentNext) handled by TestSceneChatOverlay+TestChatOverlay.
[runtime] 2022-06-28 04:59:57 [debug]: KeyDownEvent(PageDown, False) handled by ManualInputManager+LocalPlatformActionContainer.
[runtime] 2022-06-28 04:59:57 [verbose]: 🔸 Step #9 PM Channel 1 displayed
[runtime] 2022-06-28 04:59:57 [verbose]: 🔸 Step #10 Press document next keys
[runtime] 2022-06-28 04:59:57 [verbose]: Current channel changed to test user 218
```
2022-06-28 14:00:30 +09:00
Dean Herbert
569fde4b47
Add messages to all InvalidOperationException
s
...
Without this, they can be very non-descript and hard to track down
2022-06-28 01:34:25 +09:00
Dan Balasescu
b13fa924fd
Merge pull request #18865 from peppy/fix-flaky-chat-test
...
Fix chat tests failing 1/10000 runs
2022-06-27 18:06:00 +09:00
Dean Herbert
13dcaf82ad
Fix chat tests failing 1/10000 runs
...
31a447fda0/osu.Game/Online/Chat/ChannelManager.cs (L412-L414)
Sigh.
2022-06-27 16:50:10 +09:00
Dan Balasescu
f6a6538e96
Add more properties to IBeatmapOnlineInfo
2022-06-27 16:07:15 +09:00
Dean Herbert
31a447fda0
Update parameter discards
2022-06-24 21:26:19 +09:00
Bartłomiej Dach
26c5b59f6d
Replace usages of string.To{Lower,Upper}()
2022-06-24 11:57:45 +02:00
Bartłomiej Dach
34f1c80b7c
Add and use ILinkHandler
interface
2022-06-20 20:04:21 +02:00
Dan Balasescu
f8830c6850
Automated #nullable processing
2022-06-17 16:37:17 +09:00
Bartłomiej Dach
f88c568c8d
Update flag sizes after switch to twemoji assets
...
The old flags used a size of 150x100, while the new assets based on
twemoji use a size of 150x108. Update existing usages to match this new
aspect ratio better.
2022-06-15 21:45:47 +02:00
Dean Herbert
52c8cea27d
Update spectator/multiplayer endpoint in line with new deployment
2022-06-11 22:31:01 +09:00
Dean Herbert
c661f2b059
Ensure ChannelManager
has access to API from point of construction
...
Closes https://github.com/ppy/osu/issues/18451 .
2022-06-08 19:15:23 +09:00
Dean Herbert
3b46787e06
Merge pull request #18496 from smoogipoo/multiplayer-leaderboard-user-mods-2
...
Support mod/ruleset combinations in multiplayer gameplay leaderboard
2022-06-08 14:58:13 +09:00
Dean Herbert
eee79c9531
Merge pull request #18610 from jai-x/refactor-chat-line
...
Refactor `ChatLine` and fix `DrawableChannel` flow padding
2022-06-08 13:54:53 +09:00
Dean Herbert
cd649f7d97
Merge branch 'master' into multiplayer-leaderboard-user-mods-2
2022-06-08 13:39:42 +09:00
Salman Ahmed
830ff66688
Fix message notifier not handling unresolved PM channels
2022-06-08 04:31:31 +03:00
Jai Sharma
2f635fa854
Refactor ChatLine
and fix DrawableChannel
flow padding
...
Refactors `ChatLine` component to use more sensible override properties
and layout using grid container. Moves creation of username component
into its own method to simplify BDL.
Updates padding of base `DrawableChannel` flow padding.
Removes usage of `ChatOverlayDrawableChannel` since it's overrides are
no longer needed.
Updates usage of `StandAloneChatDisplay` to use new override properties
of `DrawableChannel`.
2022-06-07 22:35:45 +01:00
Dean Herbert
734636299e
Merge pull request #18567 from jai-x/update-dayseparator
...
Update `DaySeparator` to use new design throughout
2022-06-06 19:15:43 +09:00
Dean Herbert
7facbc9b28
Merge branch 'master' into multiplayer-test-clone-room
2022-06-06 13:47:16 +09:00
Jai Sharma
c0aaeff2b3
Update DaySeparator
to use new design throughout
...
Moves `DaySeparator` chat component to it's own file and update it to
match new chat design. Makes use of several virtual attributes that can
be overridden to update spacing and layout in other usage contexts.
Remove redundant usage of `ChatOverlayDaySeparator`, since the new
design is now part of the base class.
Create `StandAloneDaySeparator` to use in `StandAloneChatDisplay` which
overrides attributes to match correct spacing and layout for its design.
Ensure that `DrawableChannel.CreateDaySeparator` returns type of
`DaySeparator` instead of `Drawable`.
2022-06-04 18:02:14 +01:00
Jamie Taylor
365819865e
Remove 'submit' sample usages
2022-06-03 22:31:35 +09:00
Dean Herbert
f68df1518f
Merge branch 'master' into multiplayer-test-clone-room
2022-06-03 22:29:39 +09:00
Dan Balasescu
06ac3c1ad3
Make MultiplayerClient update CurrentPlaylistItem
2022-06-03 21:17:23 +09:00
Dan Balasescu
77289c7224
Fix inability to serialise-then-deserialise playlist items
2022-06-03 20:36:12 +09:00
Dan Balasescu
5245995689
Use IsNotNull() helper
2022-06-03 19:50:21 +09:00
Dan Balasescu
646f5f0f33
Isolate "server-side" multiplayer rooms in testing
2022-06-03 19:17:34 +09:00
Dean Herbert
eb2d822530
Fix web requests potentially being performed after cancelled
...
Closes https://github.com/ppy/osu/issues/18524 .
2022-06-03 16:04:52 +09:00
Bartłomiej Dach
59ffc8b08e
Merge branch 'master' into multiplayer-leaderboard-user-mods-2
2022-06-02 20:45:10 +02:00
Dan Balasescu
4d9a77bdc0
Stop using Drawable.Clock altogether
2022-06-02 15:02:50 +09:00
Dan Balasescu
6fb1fe06a0
Remove unnecessary ApplyBeatmap call
2022-06-02 14:47:04 +09:00
Dan Balasescu
13d85b8cc7
Merge branch 'scoreprocessor-cleanup' into multiplayer-leaderboard-user-mods-2
2022-05-31 19:53:37 +09:00
Dan Balasescu
22d998dc2a
Use new score processor in MultiplayerGameplayLeaderboard
2022-05-30 19:26:26 +09:00
Dan Balasescu
75b50de269
Implement score processor for spectator states
2022-05-30 19:26:26 +09:00
Dan Balasescu
a052e09ac3
Send ScoreProcessor statistics in SpectatorState
2022-05-30 19:26:26 +09:00
Dean Herbert
dcc53fbd47
Merge branch 'rename-chat-overlay' into fix-dummmy-api-request-firing-2
2022-05-30 17:56:12 +09:00
Dean Herbert
f65d2db77f
Remove "V2" suffix from ChatOverlay
components
2022-05-30 17:54:09 +09:00
Dean Herbert
c18dd8c8fb
Ensure Queue
operations on DummyAPIAccess
are performed on the update thread
2022-05-30 16:32:44 +09:00
Dean Herbert
a2a057440e
Fail requests taretting the fake API with a more deliberate exception
...
I think this feels better than relying on some other method to throw an
exception.
2022-05-30 16:31:54 +09:00
Jai Sharma
8f596520f3
Remove old chat overlay components
2022-05-29 20:08:43 +01:00
Dean Herbert
ca9b2648a3
Merge pull request #18421 from peppy/reconnect-on-server-shutdown-exception
...
Handle server shutdown messages in room creation and spectator initialisation
2022-05-28 03:52:24 +09:00
Dean Herbert
ef47b380c6
Add featured artist playlist category
2022-05-27 20:18:46 +09:00
Dean Herbert
b2607196b8
Merge branch 'master' into new-chat-integrate
2022-05-26 18:38:26 +09:00
Dean Herbert
abb69a49b0
Handle server shutdown messages in room creation and spectator initialisation
2022-05-26 18:03:41 +09:00
Dean Herbert
63dd9bd493
Expose Reconnect
logic in HubClientConnector
2022-05-26 18:02:50 +09:00
Dean Herbert
87959a59d9
Add missing "announce" channel type
...
Of note, this doesn't mean the channels will display, but it does fix
parsing errors which cause the whole chat display to fail.
2022-05-25 18:28:33 +09:00
Jai Sharma
d2a49ca266
Use ChatOverlayV2
in message notifier and tests
2022-05-23 21:02:50 +01:00
Dean Herbert
136ecb45e2
Rename dummy channel and move to a nested class inside the ChannelListing
itself
2022-05-19 19:26:14 +09:00
Jai Sharma
dd4b11c593
Re-add exception handling on PM message request failure
2022-05-18 01:47:23 +01:00
Jai Sharma
ae5b6c3e10
Use dummy channel to show selector and remove ChannelListSelector
...
Add dummy channel `DummySelectorChannel` which should be set as the
current channel in the channel manager when the selector in the chat
overlay should be shown.
Refactors the `ChannelListItem` to not show mention pill and close
button when the channel is the dummy selector channel.
Ensure that the `ChannelList` selects the dummy channel on clicking the
selector item.
Removes `ChannelListSelector` as it is no longer needed.
Removes the `setCurrent` parameter from `ChannelManager.JoinChannel`
method as it is no longer needed.
2022-05-15 20:24:49 +01:00
Salman Ahmed
d5027cdfbd
Add FeaturedInSpotlight
property to API beatmapsets
2022-05-14 19:46:13 +03:00
Dean Herbert
a35c57860c
Resolve colour inline
2022-05-12 23:54:43 +09:00
Dean Herbert
8760e5d884
Merge branch 'master' into new-chat-drawable-channel
2022-05-12 22:36:19 +09:00
Jai Sharma
cced8609f6
Add setCurrent
param to ChannelManager.JoinChannel
2022-05-11 22:51:15 +01:00
Jai Sharma
f4acfbd0df
Change return type of CreateDaySeparator
to Drawable
2022-05-07 22:23:46 +01:00
Jai Sharma
bec28c5b28
Remove virtual ColourInfo
properties from DaySeparator
2022-05-07 22:16:11 +01:00
Jai Sharma
9d62206176
Update new chat overlay day separator colours and spacing
...
Updates the `DaySeparator` component to have separately settable colours
for the text and the lines.
Updates existing overrides of the `DaySeparator` to use the new colour
setter.
Create new `ChatOverlayDrawableChannel` with adjusted spacing and new
`DaySeparator` colours.
2022-05-06 23:06:18 +01:00
Dean Herbert
319867f73c
Mark GuestUser
as system user via Id
for now
...
Should resolve https://github.com/ppy/osu/issues/18105 .
Checking through usages, it doesn't immediately look like this will
regress any other scenarios.
2022-05-06 17:37:46 +09:00
Dean Herbert
2f12c7d9e1
Change ChatTextBox
to not handle up/down arrows
2022-05-04 19:09:22 +09:00
Dean Herbert
5c13200c75
Update production endpoint to new version
2022-05-01 13:01:38 +09:00
Dan Balasescu
fe0fcc7e9e
Rename countdown object
2022-04-28 20:00:38 +09:00
Dan Balasescu
b293d3923c
Merge branch 'master' into multiplayer-force-start-2
2022-04-23 01:03:55 +09:00
Salman Ahmed
a9ea0ab91b
Add support for fetching user guest participations
2022-04-22 07:55:39 +03:00
Dan Balasescu
cbb07d4011
Add countdown classes
2022-04-21 23:14:37 +09:00
Dan Balasescu
59622deb1f
Add LoadAborted() event
2022-04-21 22:40:52 +09:00
Dan Balasescu
08d250fe58
Rename MatchStarted() -> GameplayStarted()
2022-04-21 22:39:24 +09:00
Dan Balasescu
8c3b541312
Add state for when user is ready for gameplay
2022-04-21 22:35:52 +09:00
Dean Herbert
e54d3702a6
Specify web proxy in SignalR connection building
...
Might solve https://github.com/ppy/osu/discussions/17897 (depends on how
adeptly signalr falls back to long polling if/when is fails to websocket
via the proxy, or maybe succeed).
As with the framework side change, I've tested this to not break a
zero-proxy flow. Intending to have the user test this after next
release.
Reference:
https://stackoverflow.com/questions/59343807/get-system-default-web-proxy-in-net-core
/
https://stackoverflow.com/questions/13515058/using-signalr-client-through-a-web-proxy
2022-04-21 15:16:41 +09:00
Joseph Madamba
5e5c8e78a6
Use existing web localisation for most hardcoded strings
2022-04-20 16:31:11 -07:00
Bartłomiej Dach
f82d58fa6a
Merge branch 'master' into update-paginated-profile-items-count
2022-04-19 22:17:26 +02:00
Salman Ahmed
c858ec2483
Pagination
-> `PaginationParameters
2022-04-19 02:48:34 +03:00
Salman Ahmed
96d4369cc8
Introduce Pagination
and simplify paginated API requests
2022-04-19 02:04:23 +03:00
Salman Ahmed
9d59cd408f
Add concept of "initial items count" in paginated API requests
2022-04-18 22:59:49 +03:00
Dean Herbert
043599081b
Split out INotificationOverlay
to allow for easier testing
2022-04-18 20:14:01 +09:00
Dean Herbert
e315313266
Split out IDialogOverlay
to allow for easier testing
2022-04-18 18:36:26 +09:00
Dean Herbert
0a7fbcad1e
Merge branch 'master' into match-start-control-test-refactor
2022-04-13 22:26:10 +09:00
Dean Herbert
c0ad91796d
Fix gameplay start flow
2022-04-13 20:57:40 +09:00
Dean Herbert
2bb0d9e6d3
Expose required classes/properties for mocking
2022-04-13 17:02:33 +09:00
Dan Balasescu
59ff9be316
Merge pull request #17788 from peppy/fix-replay-download-button-tests
...
Fix multiple issues in `ReplayDownloadButton` test scene
2022-04-13 16:00:45 +09:00
Dean Herbert
20eca9bf6a
Refactor TestSceneRankRangePill
to not depend on TestMultiplayerClient
2022-04-12 19:39:24 +09:00
Dean Herbert
b51abfc722
Fix ScoreDownloadTracker
matching on empty hash equality
2022-04-12 18:22:23 +09:00
Dean Herbert
09d560c93e
Add test coverage of spectator requests
2022-04-11 19:27:14 +09:00
Dean Herbert
34457b4742
Expose mocked members as virtual
on Multiplayer
and SpectatorClient
2022-04-11 19:04:15 +09:00
Dean Herbert
ae1e126837
Make HighlightMessage
implicitly show chat overlay
2022-04-09 00:30:28 +09:00
Dan Balasescu
9ea6f9b1fe
Remove some incorrectly-firing asserts
2022-04-08 21:44:44 +09:00
Dan Balasescu
62f5409191
Merge pull request #17725 from peppy/multiplayer-hotifx
...
Avoid multiplayer crashes when events arrive in unexpected order
2022-04-08 20:23:37 +09:00
Dean Herbert
5c571996d8
Avoid multiplayer crashes when events arrive in unexpected order
...
Intended to be a temporary fix for
https://github.com/ppy/osu/issues/17713 while a more permanent solution
is established. A proper fix is actually quite simple, but updating the
test to work with it is... *slightly* more complicated.
This hotfix will mean that if a `UserJoined` event arrives during the
unobserved window during room join (of the local user), the local user
still won't see the joining user, but the game won't crash as a result.
2022-04-08 17:55:47 +09:00
Dean Herbert
6bb8243212
Fix potential assert failure due to Room
access from disconnection event
2022-04-08 17:41:03 +09:00
Dean Herbert
933a722cfc
Remove secondary null checks which cannot exist (were on wrong thread)
2022-04-08 14:56:04 +09:00
Dean Herbert
64c63fe93a
Move null check in JoinRoom
on to update thread
2022-04-08 14:52:56 +09:00
Dean Herbert
d50f41225f
Rename scheduleAsync
to runOnUpdateThreadAsync
2022-04-08 14:43:53 +09:00
Dean Herbert
9ba99ed57d
Ensure all access to MultiplayerClient.Room
is on the update thread
...
This was an implicit requirement until now, but not well documented
everywhere. Adding this makes it much easier to understand the
requirement (and probably safer).
2022-04-08 14:42:56 +09:00
Dean Herbert
f795f77cf9
Add missing newline
2022-04-06 14:00:54 +09:00
Dean Herbert
c540810943
Merge branch 'master' into fix-multiplayer-unobserved
2022-04-06 11:33:10 +09:00
Dan Balasescu
6e6271d0c0
Fix "server-side" room playlist not updated
...
Remove unused using
2022-04-01 18:32:10 +09:00
Dan Balasescu
16d4544ff9
Prevent reloads when playlist item order changes
2022-04-01 17:06:37 +09:00
Dean Herbert
5b3eb2d6f4
Add helper class to handle firing async multiplayer methods
2022-03-31 19:27:45 +09:00
Dean Herbert
a0692ce477
Add a const
for system users which should never display a profile
2022-03-28 22:22:56 +09:00
Dean Herbert
f92a31cd39
Merge pull request #17402 from smoogipoo/multiplayer-auto-countdown
...
Add multiplayer auto-start countdown timer
2022-03-25 20:31:14 +09:00
Dean Herbert
792e79265b
Add ignore rule for new helper property
2022-03-25 15:46:27 +09:00
Dean Herbert
b1f0f89fdd
Simplify AutoStart
and Host
checks
2022-03-25 15:41:01 +09:00
Dean Herbert
de4c04ef80
Fix non-matching json propert for AutoStartDuration
2022-03-25 15:34:33 +09:00
Dan Balasescu
0d88af19ae
Fix local setting not being updated
2022-03-24 20:23:58 +09:00
Dan Balasescu
40eca0fbe2
Merge branch 'master' into multiplayer-auto-countdown
2022-03-24 18:11:51 +09:00
Dean Herbert
e889d93441
Add asserts of playlist being non-empty after client operations
2022-03-24 17:52:20 +09:00
Dan Balasescu
a83a90e675
Rename countdown Delay -> Duration
2022-03-23 15:21:16 +09:00
Dan Balasescu
f7c0047206
Send time remaining in countdowns instead
2022-03-23 15:19:43 +09:00
Dan Balasescu
d0fee53e1f
Implement auto countdown timers
...
Change to using TimeSpan
2022-03-22 14:34:06 +09:00
Dan Balasescu
04f4e81852
Rename start countdown request
2022-03-18 21:05:19 +09:00
Dan Balasescu
72843a6797
Add support for starting/stopping countdowns
2022-03-18 14:33:09 +09:00
Dan Balasescu
3b938865a1
Add room structure for countdown timers
2022-03-18 14:31:57 +09:00
Dean Herbert
1814a325d8
Move GetSettingUnderlyingValue
to a SettingSource
extension method
2022-03-15 14:54:00 +09:00
Salman Ahmed
cc87563d57
Merge branch 'master' into chat-mention-highlight
2022-03-11 17:51:22 +03:00
Salman Ahmed
a31611bdec
Improve channel switching flow in HighlightMessage
2022-03-10 23:07:15 +03:00
Salman Ahmed
8086f73451
Revert "Add functionality to switch to successfully joined channel"
...
This reverts commit c72e8a8b5e
.
2022-03-10 23:07:15 +03:00
Salman Ahmed
c72e8a8b5e
Add functionality to switch to successfully joined channel
2022-03-10 21:28:38 +03:00
Dan Balasescu
c61397cc22
Fix whitespace/inspection
2022-03-10 16:22:27 +09:00
Dan Balasescu
13a4058efd
Merge pull request #17191 from peppy/fix-mod-conversion-exceptions
...
Change `ToMod` to return an `UnknownMod` rather than throw if a mod isn't available
2022-03-10 16:20:50 +09:00
Dean Herbert
022dd88aef
Merge branch 'master' into chat-mention-highlight
2022-03-10 14:23:23 +09:00
Dean Herbert
0267aed846
Change ToMod
to return an UnknownMod
rather than throw if a mod isn't available
...
As seen by this kind of crash, having the `.ToMod` method throw can be
very problematic and also hidden (as it is used inside of models in
places where exceptions are not expected to occur).
Given there are tens of usages of this method, returning a placeholder
mod seems like a better idea than outright throwing.
```
An unhandled has occurred.
System.InvalidOperationException:
There is no mod in the ruleset (osu) matching the acronym AS.
at osu.Game.Online.API.APIMod.ToMod(Ruleset ruleset) in /Users/dean/Projects/osu/osu.Game/Online/API/APIMod.cs:line 54
at osu.Game.Scoring.ScoreInfo.<get_Mods>b__117_0(APIMod m) in /Users/dean/Projects/osu/osu.Game/Scoring/ScoreInfo.cs:line 193
at System.Linq.Enumerable.SelectArrayIterator`2.ToArray()
at osu.Game.Scoring.ScoreInfo.get_Mods() in /Users/dean/Projects/osu/osu.Game/Scoring/ScoreInfo.cs:line 193
at osu.Game.Screens.Select.Leaderboards.BeatmapLeaderboard.<>c.<subscribeToLocalScores>b__40_2(ScoreInfo s) in /Users/dean/Projects/osu/osu.Game/Screens/Select/Leaderboards/BeatmapLeaderboard.cs:line 199
at System.Linq.Enumerable.WhereEnumerableIterator`1.MoveNext()
at osu.Game.Database.RealmObjectExtensions.Detach[T](IEnumerable`1 items) in /Users/dean/Projects/osu/osu.Game/Database/RealmObjectExtensions.cs:line 180
at osu.Game.Screens.Select.Leaderboards.BeatmapLeaderboard.<>c__DisplayClass40_0.<subscribeToLocalScores>g__localScoresChanged|1(IRealmCollection`1 sender, ChangeSet changes, Exception exception) in /Users/dean/Projects/osu/osu.Game/Screens/Select/Leaderboards/BeatmapLeaderboard.cs:line
209
at Realms.RealmCollectionBase`1.Realms.INotifiable<Realms.NotifiableObjectHandleBase.CollectionChangeSet>.NotifyCallbacks(Nullable`1 changes, Nullable`1 exception)
at Realms.NotifiableObjectHandleBase.NotifyObjectChanged(IntPtr managedHandle, IntPtr changes, IntPtr exception)
```
2022-03-09 17:57:55 +09:00
Dan Balasescu
b07a1e8d09
Fix unable to copy playlist rooms without first opening
2022-03-09 15:38:00 +09:00
Dean Herbert
512536f5fe
Fix unconditional null in Equals
implementation
2022-03-08 23:25:51 +09:00
Dean Herbert
da7c6f1772
Merge branch 'master' into chat-mention-highlight
2022-03-08 21:15:12 +09:00
Dean Herbert
b0f40d9e45
Remove user
from SubmittableScore
...
This wasn't being used by osu-web, and included far too much unnecessary
data. Of note, `pp` and `ruleset_id` are also not strictly required, but
there's no harm in sending them so I've left them be for now.
2022-03-08 18:38:24 +09:00
Salman Ahmed
f8e5570e41
Fix Message
equality not passing on equal references
2022-03-08 03:20:20 +03:00
Salman Ahmed
7f47be4680
Refactor message highlighting logic to rely on a Channel
data bindable
2022-03-08 03:19:37 +03:00
Salman Ahmed
5764c53c17
OpenChannelNotification -> HighlightMessageNotification
2022-03-08 03:16:07 +03:00
Salman Ahmed
32d242dd62
Hook up message notifications to chat message highlighting logic
2022-03-07 05:10:49 +03:00
Dean Herbert
6673e456c5
Merge pull request #17090 from miniriley2012/wiki-locale-fix
...
Fix wiki links containing locale not loading when opened from chat.
2022-03-04 19:36:14 +09:00
Riley Quinn
8491bab77c
Replace string locale with Language
2022-03-04 00:57:13 -06:00
Dean Herbert
d4a2645510
Add localisation support for leaderboard error text
2022-03-02 14:14:44 +09:00
Dean Herbert
c342030b2c
Add specific placeholder message for custom rulesets rather than showing network error
2022-03-02 14:10:59 +09:00
Dean Herbert
67082b8c5d
Remove verbose logging from SpectatorClient
for now
2022-02-25 22:25:36 +09:00
Dan Balasescu
e947c97e10
Merge branch 'master' into spectator-reliability
2022-02-25 20:20:30 +09:00
Dan Balasescu
8eef1774d5
Use Logger.Log instead of console
2022-02-25 20:18:22 +09:00
Dan Balasescu
80fc13fc1f
Merge pull request #16976 from peppy/dont-expose-mark-as-read-errors-to-user
...
Don't expose "mark as read" errors to the user via notifications
2022-02-24 23:20:34 +09:00
Dan Balasescu
16a3bbbcb4
Merge pull request #16944 from peppy/rooms-request-faster
...
Update playlists/multiplayer to use new compact response
2022-02-24 23:20:07 +09:00
Dean Herbert
35302aa297
Merge pull request #16980 from smoogipoo/fix-union-workaround-resolver
...
Fix SignalR union workaround resolver failing on multiple union'd types
2022-02-24 22:24:48 +09:00
Dan Balasescu
c5b1e5cbf8
Fix union resolver failing on multiple derived types
2022-02-24 20:27:22 +09:00
Dean Herbert
d69446ff6e
Merge pull request #16979 from smoogipoo/fix-playlists-partial-mod
...
Fix playlists not allowing entry with partial mods
2022-02-24 19:37:10 +09:00
Dan Balasescu
2acaffd5e7
Fix APIMod storing bindables instead of value
2022-02-24 17:01:12 +09:00
Dean Herbert
c6d78b9325
Fix several oversights in data linking causing drawable rooms not updating as expected
2022-02-24 16:12:15 +09:00
Dean Herbert
b4a54b38e7
Remove redundant parameter specification
2022-02-24 16:02:16 +09:00
Dean Herbert
3f6bdc5585
Don't expose "mark as read" errors to the user via notifications
...
This can happen if the user leaves the channel before the request is
fired. You can't mark a channel as read when you're not in the channel.
Addresses https://github.com/ppy/osu/discussions/16973 .
2022-02-24 15:40:07 +09:00
Bartłomiej Dach
29d77a29aa
Merge branch 'master' into startup-protocol-handling
2022-02-23 21:10:27 +01:00
Dean Herbert
3f2ef030e4
Group SpectatorClient
private fields together
2022-02-24 02:31:55 +09:00
Dean Herbert
5ffdd57895
Rename weirdly named parameter
2022-02-24 02:28:13 +09:00
Dean Herbert
694c6ad872
Fix frames potentially getting lost due to non-matching Schedule
usage
2022-02-24 02:28:13 +09:00
Dean Herbert
47b84295a6
Fix bundle send logic not correctly waiting for task completion (due to nested schedule)
2022-02-24 02:23:48 +09:00
Dean Herbert
cff6f85472
Add note about reconnection being insufficient currently
2022-02-24 02:23:48 +09:00
Dean Herbert
5ff4d3f8e5
Add support to SpectatorClient
to resend failed frame bundles
2022-02-24 02:21:29 +09:00
Dean Herbert
53bbd00675
Also make APIUser
opt-in and remove the remaining serialization exclusion rule
2022-02-23 17:12:38 +09:00
Dean Herbert
43c83d2de1
Add note about why RoomID
is nulled in DeepClone
2022-02-23 17:10:11 +09:00
Dean Herbert
f14a9af801
Make Room
opt-in rather than opt-out for json serialization
2022-02-23 17:10:10 +09:00
Dean Herbert
28c9c5ab6a
Remove unnecessary ShouldSerialize
rules in Room
2022-02-23 17:10:10 +09:00
Susko3
7bdcb5952e
Fix handling badly-formatted osu:// urls
2022-02-23 00:36:56 +01:00
Bartłomiej Dach
1a358698fb
Merge branch 'master' into startup-protocol-handling
2022-02-22 22:42:16 +01:00
Dean Herbert
ed008267d7
Fix one more case of escaping not being present
...
Co-authored-by: Bartłomiej Dach <dach.bartlomiej@gmail.com>
2022-02-22 16:45:18 +09:00
Dean Herbert
ca0a041153
Fix missing escaping causing test failures
...
Co-authored-by: Bartłomiej Dach <dach.bartlomiej@gmail.com>
2022-02-22 16:45:04 +09:00
Dean Herbert
61b3280de1
Add missing property copies in Room.CopyFrom
implementation
2022-02-22 15:47:00 +09:00
Dean Herbert
71ae425fb2
Merge branch 'master' into rooms-request-faster
2022-02-22 15:45:05 +09:00
Dean Herbert
f12044b03e
Add mention of PlaylistItem.Beatmap
being a placeholder in many cases
2022-02-22 15:31:08 +09:00
Bartłomiej Dach
e3ae52360e
Merge branch 'master' into leaderboard-score-timeref
2022-02-21 20:50:00 +01:00
Dean Herbert
b43008b9f6
Add cover and count handling from newer response version
2022-02-21 19:05:22 +09:00
Dean Herbert
39d64e779c
Handle API returned difficulty range for rooms
2022-02-21 19:05:19 +09:00
Dean Herbert
7f4cc221d2
Add API versioning
2022-02-21 19:02:03 +09:00
Dean Herbert
1737128334
Allow room category to be copied even if Spotlight
...
I remember that this conditional copy was added to support making copies
of spotlight rooms without carrying across the `Spotlight` type, but in
testing this is already handled web side to the point that it's not
required.
The rationale for allowing the copy is that this method is used for
tests, where it was not being copied correctly from the input as
expected (used at
bdc3b76df0/osu.Game/Tests/Visual/OnlinePlay/TestRoomManager.cs (L38)
).
2022-02-21 17:47:56 +09:00
Dean Herbert
fc1877b6fa
Move to extension method and revert logic to match previous implementation
2022-02-21 13:42:26 +09:00
Dean Herbert
79408f6afc
Add xmldoc and clean up ScoreboardTimeUtils
extension methods a touch
2022-02-21 13:30:58 +09:00
Dean Herbert
2ded7d281b
Remove unused using statement
2022-02-21 13:17:19 +09:00
Dean Herbert
abe1a3990a
Merge branch 'master' into leaderboard-score-timeref
2022-02-21 12:11:10 +09:00
dekrain
262751a98a
Revert highlighting recent scores
2022-02-19 21:23:35 +01:00
dekrain
31b7ce053d
Fix CI issues
2022-02-19 21:18:26 +01:00
dekrain
0d83c5a39a
Add colour highlighting recent scores
2022-02-19 20:47:30 +01:00
dekrain
15ed9ec4fa
Merge scoreboard and leaderboard implementations together
2022-02-19 20:47:02 +01:00
Dean Herbert
98aaf83177
Add a centralised constant for the osu URL schema protocol
2022-02-18 15:57:37 +09:00
dekrain
1abbb9ab39
Align the bar to be on baseline of score components
...
Co-authored-by: Bartłomiej Dach <dach.bartlomiej@gmail.com>
2022-02-17 21:26:59 +01:00
Dean Herbert
9d0023c750
Fix incorrect mappings
2022-02-17 21:12:51 +09:00
Dean Herbert
3d5ed24e20
Fix beatmap overlay leaderboards and links not working
...
Completely aware that this isn't how it should be done, but would like
to get this out in a hotfix release today. Maybe changes opinions on
https://github.com/ppy/osu/pull/16890 structure?
2022-02-17 21:05:00 +09:00
dekrain
f4d1e6f600
Add tests for timerefs
2022-02-17 10:38:29 +01:00
dekrain
7bd731ae08
Move the date next to the flag icon
2022-02-17 10:12:35 +01:00
dekrain
333a305af3
Use floor instead of ceiling
2022-02-17 00:09:17 +01:00
dekrain
c124034cf3
Add text displaying recent score time
2022-02-16 23:18:14 +01:00
Dan Balasescu
55d9f0b44b
Store beatmap to a field instead
2022-02-16 16:03:08 +09:00
Dean Herbert
7e24b36f26
Merge branch 'master' into remove-playlistitem-beatmap
2022-02-16 14:24:57 +09:00
Dan Balasescu
5db63a8751
Expose read-only list from request
2022-02-16 11:30:03 +09:00
Dan Balasescu
ea5bb46fb8
Merge branch 'master' into net6
2022-02-16 00:40:04 +09:00
Dan Balasescu
b1dbd4abfe
Fix incorrect playlist item <-> availability tracker logic
...
Results in revert to some prior logic for the tracker implementation.
2022-02-15 23:50:12 +09:00
Dan Balasescu
bdc3b76df0
Remove beatmap bindable from PlaylistItem
2022-02-15 23:50:08 +09:00
Dan Balasescu
94a974e1c9
Make OnlinePlayBeatmapAvailabilityTracker look up the online beatmap
2022-02-15 23:41:50 +09:00
Dan Balasescu
afcb7a4630
Make DrawableRoomPlaylistItem look up the online beatmap
2022-02-15 23:41:50 +09:00
Dan Balasescu
ccd265ebe7
Handle beatmap lookup requests in TestRoomRequestsHandler
2022-02-15 23:41:50 +09:00
Dan Balasescu
efeba30b9f
Remove ruleset and mod bindables from PlaylistItem
2022-02-15 16:28:15 +09:00
Dean Herbert
28b45fa899
Add assertions against null reference for connection usages
2022-02-15 15:19:50 +09:00
Dan Balasescu
8b05b35b8c
Merge pull request #16854 from peppy/combine-score-submission-request-implementation
...
Standardise and combine base implementation of score submission requests
2022-02-11 17:31:55 +09:00
Dean Herbert
28bbf34b14
Remove unnecessary this.
prefix
2022-02-11 16:21:49 +09:00
Dan Balasescu
43f1044987
Merge pull request #16850 from frenzibyte/readonly-pinned-scores
...
Add read-only pinned scores view in user profile overlay
2022-02-11 16:15:46 +09:00
Dean Herbert
beb3731c0b
Standardise and combine base implementation of score submission requests
...
These share too much yet have very different constructor signatures and
property exposure. Just a clean-up pass as I begin to look at replay
submission.
2022-02-11 15:53:47 +09:00
Salman Ahmed
92e22c57a7
Introduce private APIRuleset
for online ID equality comparison
2022-02-11 08:27:01 +03:00
Salman Ahmed
9cd88ec2b8
Update API models with score pinning changes
2022-02-10 21:23:38 +03:00
Dan Balasescu
ffc4c64f7e
Unify namings across the board
2022-02-09 12:10:07 +09:00
Dan Balasescu
886d1d2df6
Refactorings
2022-02-08 21:29:43 +09:00
Dan Balasescu
c1766d8a41
Add paused state
2022-02-08 20:29:53 +09:00
Dan Balasescu
4c76027178
Rename completed state to passed
2022-02-08 20:29:49 +09:00
Dan Balasescu
483977d5c8
Merge branch 'master' into spectator-state-rework
2022-02-03 19:59:07 +09:00
Dean Herbert
a69c7a9de6
Split exceptions back out to give better messaging
2022-02-03 14:09:27 +09:00
Dean Herbert
62fa915193
Standardise exception messages for local-user-logged-out flows
2022-02-03 13:58:55 +09:00
Dan Balasescu
d9a43b4c4c
Fix API requests not completing when offline
2022-02-03 13:16:54 +09:00
Dan Balasescu
81a22dbd29
Add back playing users list
2022-02-02 23:19:43 +09:00
Dan Balasescu
fcbba3d948
Rename PlayingUserStates -> WatchingUserStates
2022-02-02 23:11:29 +09:00
Dan Balasescu
6d3bc005ea
Merge branch 'master' into spectator-state-rework
2022-02-02 18:57:04 +09:00
Dean Herbert
6d962e7925
Merge pull request #16726 from dekrain/leaderboard-score-tooltip
...
Add basic tooltip for leaderboard scores
2022-02-02 13:56:45 +09:00
Dean Herbert
d065e32ca1
Fix crash due to MatchLeaderboardScore
s not having populated rulesets
2022-02-02 13:23:49 +09:00
Dean Herbert
35b7653290
Revert mod flow changes and add visual test coverage showing an overflow case
2022-02-02 09:13:19 +09:00
dekrain
eee020f8e4
Cleanup tooltip layout
...
Co-authored-by: Bartłomiej Dach <dach.bartlomiej@gmail.com>
2022-02-01 20:26:52 +01:00
Dan Balasescu
f4210f7a30
Rework spectator components to use new user state
2022-02-01 21:53:25 +09:00
Dan Balasescu
41007169f7
Give SpectatorState a user state
2022-02-01 21:51:05 +09:00
Dean Herbert
f87920cd83
Remove unnecessary GridContainer
and list mods verticall to give more space
2022-02-01 16:43:26 +09:00
Dean Herbert
8eace12fe3
Synchronise (roughly) backgrounds of all custom tooltips
2022-02-01 16:35:25 +09:00
Dean Herbert
fdb52a8fd7
Remove gap in tooltip display between statistics
2022-02-01 16:35:25 +09:00
Dean Herbert
855135c51e
Fix potential nullref during display due to incorrect equality check
2022-02-01 16:13:27 +09:00
Dean Herbert
e1b57c4bf6
Fix inspections
2022-02-01 16:07:57 +09:00
dekrain
d7b939277e
Code quality improvements
2022-02-01 07:10:00 +01:00
dekrain
fd287e06f2
Add missing license header
2022-02-01 06:51:00 +01:00
dekrain
c2b775c0a3
Minor alignment adjustments
2022-02-01 06:45:59 +01:00
Dan Balasescu
502e6af008
Remove PlayingUsers list from SpectatorClient
2022-02-01 14:42:30 +09:00
dekrain
db973fb348
Add basic tooltip for leaderboard scores
2022-02-01 06:28:18 +01:00
Dan Balasescu
4727aeda01
Give last bundled replay frame the frame header
2022-01-31 18:53:47 +09:00
Dean Herbert
c8c0ae5658
Merge branch 'master' into flush-frames-end-play
2022-01-31 15:12:41 +09:00
Dean Herbert
610eb9f6a4
Remove unnecessary container level
2022-01-31 13:45:49 +09:00
Dean Herbert
f8939af5e6
Track loading via state as well
2022-01-31 01:12:03 +09:00
Dean Herbert
1cec76df74
Fix weird reading xmldoc
...
Co-authored-by: Bartłomiej Dach <dach.bartlomiej@gmail.com>
2022-01-30 23:18:40 +09:00
Dean Herbert
04dbb5d3c6
Disallow setting "NoScores" externally as it is handled internally
2022-01-30 16:18:19 +09:00
Dean Herbert
acc1199add
Consolidate flows of Set
operations, either result or error
2022-01-30 16:16:00 +09:00
Dean Herbert
c401629dd8
Also refactor placeholder
logic to make more sense
2022-01-30 10:50:32 +09:00
Dean Herbert
b434e29a7c
Move loading hide operation inside early return to ensure not hidden too early
...
It should only be hidden after the async load completes.
2022-01-30 03:10:15 +09:00
Dean Herbert
dad9cc9315
Ensure Reset
/Scores_Set
run inline where possible
2022-01-30 03:06:29 +09:00