1
0
mirror of https://github.com/ppy/osu.git synced 2024-11-17 03:02:54 +08:00
Commit Graph

850 Commits

Author SHA1 Message Date
Bartłomiej Dach
5b6c3321cf
Merge branch 'master' into multi-spectator-flow-fixes 2023-08-01 19:03:48 +02:00
Bartłomiej Dach
a75f42f5a9
Merge branch 'master' into multi-spectator-extended-results 2023-08-01 18:25:41 +02:00
Dean Herbert
70bd1d3cf4 Fix centred player not animating correctly 2023-08-01 20:18:21 +09:00
Dean Herbert
df504e1fc2 Show extended statistics in multiplayer spectator automatically 2023-08-01 20:02:36 +09:00
Dean Herbert
fe47dc291b Fix onLoadRequested getting early-exited too early in spectator scenarios
In some scenarios, multiplayer spectator would not tick over to the next
beatmap.

Here's an example:

- Room has two items queued
- Local user starts download of both
- First beatmap starts and download is complete
- First beatmap ends (spectating is active)
- Second beatmap starts but download is not complete

In this scenario, the local client will get stuck at the spectator
screen due to the `onLoadRequested`-invoked screen change being early
exited.

It would require manual recovery (clicking back button) to return to a
sane state.
2023-08-01 19:22:41 +09:00
Dean Herbert
9fe9ea2c90 Fix potential crash on multiple StartGameplay calls in multiplayer spectator 2023-08-01 19:22:41 +09:00
Bartłomiej Dach
d3435483eb
Fix multiplayer match screen being exited from when not current
This was supposed to be fixed by #24255, but has popped up as a
regression on Sentry since:

	https://sentry.ppy.sh/organizations/ppy/issues/22749/?project=2&referrer=regression_activity-email

On a fifteen-minute check I cannot figure out how to reproduce, so
rather than spending further brain cycles on this, just apply the same
explicit guard that like fifteen other places do.
2023-07-30 15:50:10 +02:00
Bartłomiej Dach
898913f32a
Merge pull request #24415 from peppy/multi-spectator-improvements
General visual improvements to mutliplayer spectatator screen
2023-07-30 12:43:26 +02:00
Dean Herbert
45ceaba00d Disable multiplayer spectator zoom when there's only one player's screen visible 2023-07-30 14:40:58 +09:00
Dean Herbert
75625f089e Hide toolbar when entering multiplayer spectator 2023-07-30 02:29:14 +09:00
Dean Herbert
38244c081f Further refactorings along with shadow implementation 2023-07-30 02:29:14 +09:00
Dean Herbert
84bc14c1dd Improve animation and sizing of maximised screen display 2023-07-30 02:29:14 +09:00
Dean Herbert
1826819663 Move Facade to nested class 2023-07-30 02:29:14 +09:00
Dean Herbert
5fa0a21b56 Add corner radius around player areas 2023-07-30 02:29:14 +09:00
Dean Herbert
157b1f301b Rename AllowTrackAdjustments to more understandable ApplyModTrackAdjustments 2023-07-25 20:20:53 +09:00
Bartłomiej Dach
764029bde1
Fix nullability inspection 2023-07-19 19:23:08 +02:00
Dean Herbert
18aace177a Fix deadlock when logging out while at the create match screen
Closes https://github.com/ppy/osu/issues/24275.
2023-07-19 19:37:38 +09:00
Bartłomiej Dach
7fbd47e9ee
Fix MultiplayerMatchSubScreen erroneously pushing exit dialog on API failure
If `IAPIProvider.State` changes from `Online` at any point when being on
an `OnlinePlayScreen`, it will be forcefully exited from. However,
`MultiplayerMatchSubScreen` had local logic that suppressed the exit in
order to show a confirmation dialog.

The problem is, that in the suppression logic,
`MultiplayerMatchSubScreen` was checking
`MultiplayerClient.IsConnected`, which is a SignalR flag, and was not
checking `IAPIAccess.State`, which is maintained separately. Due to
differing timeouts and failure thresholds, it is not impossible to have
`MultiplayerClient.IsConnected == true` but `IAPIAccess.State !=
APIState.Online`.

In such a case, the match subscreen would wrongly consider itself to be
still online and due to that, push useless confirmation dialogs, while
being in the process of being forcefully exited. This then caused the
dialog to cause a crash, as it was calling `.Exit()` on the screen which
would already have been exited by that point, by the force-exit flow.
2023-07-16 19:56:22 +02:00
Dean Herbert
3883c28b15 Add visual display in participants list when availability is still being established 2023-06-28 16:02:46 +09:00
Dean Herbert
91354b1570 Avoid performing any actions when BeatmapAvailability is updated to Unknown 2023-06-28 16:01:54 +09:00
Dean Herbert
b240ce295b Rename class and key to better match expectations 2023-06-26 13:38:34 +09:00
Bastian Pedersen
a7153478d6 Use newly create localised strings for buttons 2023-06-25 21:03:07 +02:00
Dean Herbert
df5b389629 Manual fixes to reduce warnings to zero 2023-06-24 01:52:53 +09:00
Dean Herbert
0ab0c52ad5 Automated pass 2023-06-24 01:00:03 +09:00
Dean Herbert
07a00e8afd
Fix typo in comment
Co-authored-by: Bartłomiej Dach <dach.bartlomiej@gmail.com>
2023-06-22 00:02:02 +09:00
Dean Herbert
7b4cbea362
Allow nullable to fix test usages
Co-authored-by: Bartłomiej Dach <dach.bartlomiej@gmail.com>
2023-06-22 00:01:48 +09:00
Dean Herbert
10ed3787a0 Don't show song select screen when local user doesn't have permission to add an item 2023-06-20 18:27:19 +09:00
Dean Herbert
dc1b4a39aa Fix presenting beatmaps while in a multiplayer room not working 2023-06-20 18:23:59 +09:00
Salman Ahmed
62cb6a98ca Remove redundant nullable suppression directives 2023-06-07 08:20:41 +03:00
Joseph Madamba
3e0bbb2432
Fix select beatmap button not highlighting when creating a multiplayer room using keyboard 2023-03-26 16:03:21 -07:00
Dean Herbert
4a7d7c6ed9 Use MaxBy in all locations that can and update inspection level to match dotnet-build 2022-12-19 16:47:10 +09:00
Dean Herbert
27c497145f Fix the MOTHERLOAD of undetected issues that are now visible thanks to net6.0 2022-12-16 18:16:26 +09:00
Dan Balasescu
7b48c91fe2 Only show local results in multi-spectator results screen 2022-12-12 18:56:43 +09:00
Bartłomiej Dach
894ef15e79
Merge branch 'master' into update-framework 2022-11-26 16:19:36 +01:00
Dan Balasescu
7bc8908ca9 Partial everything 2022-11-27 00:00:27 +09:00
Dean Herbert
d0c4637683 Lighten colour of multiplayer create game button 2022-11-25 20:18:21 +09:00
Dean Herbert
6ad432b311 Use RoundedButton in more places 2022-11-24 16:33:01 +09:00
Dean Herbert
53b03df93d Combine TriangleButton and RoundedButton classes 2022-11-24 16:26:57 +09:00
Dean Herbert
bea2acc60e Remove local specifications of triangle colouring 2022-11-24 16:18:15 +09:00
Dan Balasescu
dcb6357964 Add ability to remove the current item in multiplayer 2022-10-14 20:23:55 +09:00
Dan Balasescu
da8d94c4b4 Fix test failures due to scheduled operations 2022-09-27 20:24:44 +09:00
Dean Herbert
20da1051d9 Apply NRT to GameplayLeaderboard hierarchy
Just some cleanup work that I wanted to do as part of my last changes.
2022-09-26 16:21:24 +09:00
Dean Herbert
a65a76f7de Fix off-thread drawable mutation in multiplayer settings overlay when an error occurs
Closes #20413.
2022-09-23 20:05:32 +09:00
Dean Herbert
29c4d06d36 Merge branch 'fix-gameplay-leaderboard-layout' into gameplay-leaderboards 2022-09-21 14:58:58 +09:00
Dean Herbert
0ac28cbecc Fix potential crash from missing DownloadProgress 2022-09-18 23:42:16 +09:00
Dan Balasescu
2dcaf7cfd8 Fix memory leak due to missing event unbind 2022-09-18 14:25:31 +09:00
Dean Herbert
678eec1c67 Move LeaderboardFlow to HUDOverlay to share positioning logic 2022-09-13 18:45:11 +09:00
Dean Herbert
5894d2f0bc Ensure gameplay leaderboard hides with rest of HUD when it should 2022-09-13 18:45:11 +09:00
Dean Herbert
d251c0b2ac Move leaderboard implementation to Player itself 2022-09-13 18:00:21 +09:00
Dean Herbert
ac034bffeb Fix potential crash if multiplayer spectator load is aborted early 2022-09-13 14:21:54 +09:00
Dean Herbert
6945c43e0d
Merge pull request #20178 from smoogipoo/fix-match-creation-beatmap-select
Fix several weird scenarios with online play song selection
2022-09-08 23:07:09 +09:00
Dan Balasescu
9aab502adc
Merge pull request #20157 from peppy/true-gameplay-rate
Refactor `TrueGameplayRate` to account for only gameplay adjustments, no matter what
2022-09-08 19:54:32 +09:00
Dean Herbert
13d9b2188b
Merge pull request #20145 from smoogipoo/multiple-countdowns
Implement support for multiple active countdowns in multiplayer
2022-09-08 19:15:30 +09:00
Dan Balasescu
76eae73fa4 Revert unintended change 2022-09-08 17:41:23 +09:00
Dan Balasescu
c61c596c1f Expose as readonly IAggregateAudioAdjustment 2022-09-08 17:37:02 +09:00
Dan Balasescu
b559d4ecdf Rename GameplayAdjustments -> AdjustmentsFromMods 2022-09-08 17:14:06 +09:00
Dan Balasescu
b0b4da533a Expose gameplay adjustments via MultiSpectatorPlayer instead 2022-09-08 16:59:20 +09:00
Dan Balasescu
208bd0f391 Give OnlinePlaySongSelect a reference PlaylistItem 2022-09-07 21:34:29 +09:00
Dan Balasescu
cb9bae1f5c Enable NRT 2022-09-07 19:54:55 +09:00
Dean Herbert
1be3b74ff3 Fix multiplayer spectator not getting gameplay adjustments applied 2022-09-07 19:12:34 +09:00
Dan Balasescu
2923c10cd8 Rewrite rooms to store multiple active countdowns
Update test to the new structure
2022-09-05 19:03:26 +09:00
Salman Ahmed
e8fa872f61 Fix room status dropdown position inconsistent on online-play screens 2022-09-03 16:14:21 +03:00
Dan Balasescu
c852c54055 Consume auto skip setting during play 2022-08-31 20:24:15 +09:00
Dan Balasescu
b5ec7d06dd Add auto-skip setting
Default to auto skip
2022-08-31 20:24:06 +09:00
Dean Herbert
b9d9bf3004
Merge pull request #19938 from frenzibyte/fix-multi-spectator-results-screen
Fix multi-spectator potentially getting stuck for passed players
2022-08-26 21:53:17 +09:00
Dean Herbert
a546aa2673 Clamp SpectatorPlayerClock's elapsed calculation to avoid player clocks getting too far ahead 2022-08-25 21:33:33 +09:00
Dean Herbert
27b57947e4 Rename PlayerArea.GameplayClock to SpectatorPlayerClock for clarity 2022-08-24 17:13:14 +09:00
Dean Herbert
5f01f461b3 Ensure elapsed time is always non-zero when advancing SpectatorPlayerClock 2022-08-24 17:13:14 +09:00
Dean Herbert
af56cd0126 Fix merge breakage 2022-08-24 16:52:36 +09:00
Dean Herbert
5079e0d83d Merge branch 'master' into no-gameplay-clock-gameplay-offset 2022-08-24 16:52:10 +09:00
Salman Ahmed
8f4a2b4936 Separate passed/failed states from calling EndGameplay 2022-08-24 10:36:13 +03:00
Dean Herbert
7f9246637a Simplify MultiSpectatorScreen hierarchy construction 2022-08-24 16:08:48 +09:00
Dean Herbert
7c1fc4814e Remove unused CreateMasterGameplayClockContainer method 2022-08-24 16:03:38 +09:00
Dean Herbert
871365bbb0 Inline ReadyToStart action binding for added safety 2022-08-24 16:03:38 +09:00
Dean Herbert
6c50f618a3 Don't use bindable flow for masterState 2022-08-24 16:03:38 +09:00
Dean Herbert
683d49c608 Move MasterClockState handling in to SpectatorSyncManager 2022-08-24 16:03:38 +09:00
Dean Herbert
d33d705684 Make WaitingOnFrames non-bindable 2022-08-24 16:03:38 +09:00
Dean Herbert
d05d8aeb22 Simplify interface implementations 2022-08-24 16:03:38 +09:00
Dean Herbert
2f5be6efca Tidy up ProcessFrame and privatise const 2022-08-24 16:03:38 +09:00
Dean Herbert
b564c34dbc Don't process master clock (is a noop) 2022-08-24 16:03:38 +09:00
Dean Herbert
b4eede61fb Use readonly instead of get-only 2022-08-24 15:28:18 +09:00
Dean Herbert
0b271fe4b3 Fix incorrect IsRunning value 2022-08-24 15:27:31 +09:00
Dean Herbert
b6254a1f25 Remove unnecessary casting 2022-08-24 15:23:31 +09:00
Dean Herbert
a86fc6f248 Change running state of SpectatorPlayerClock using IsRunning 2022-08-24 15:17:56 +09:00
Dean Herbert
0c9a4ec13c Don't expose MasterClock in SpectatorClockSyncManager 2022-08-24 15:13:08 +09:00
Dean Herbert
995e6664b6 Rename spectator clock sync classes 2022-08-24 15:13:08 +09:00
Dean Herbert
31f657fe01 Remove ISpectatorPlayerClock interface
Too many levels of redirection.

One interface with one implementation is not useful, IMO.
2022-08-24 15:12:57 +09:00
Dean Herbert
882dd93942 Remove ISyncManager interface
Too many levels of redirection.

One interface with one implementation is not useful, IMO.
2022-08-24 15:12:57 +09:00
Dean Herbert
22963ab951 Fix multiplayer spectator getting stuck 2022-08-24 15:12:57 +09:00
Dean Herbert
ec31f37ff7 Accept MasterGameplayClockContainer rather than generic clock 2022-08-24 14:51:14 +09:00
Dean Herbert
85fbe7abca Fix multiplayer spectator getting stuck 2022-08-24 13:11:53 +09:00
Dean Herbert
ec61a94dc9 Merge branch 'master' into no-gameplay-clock-gameplay-offset 2022-08-23 17:36:06 +09:00
Dean Herbert
553897f2f0 Remove AddClock method to CreateManagedClock 2022-08-23 13:52:43 +09:00
Dean Herbert
1191b6c080 Remove unused Source_Set implementation on ISpectatorPlayerClock 2022-08-23 13:44:41 +09:00
Dan Balasescu
c59298f0ce Enable NRT 2022-08-22 21:55:04 +09:00
Dan Balasescu
5d3d8681d4 Invert creation of clocks in multi spectator 2022-08-22 19:14:06 +09:00
Dean Herbert
af2e82d7d5 Move operation of setting GameplayClockContainer.StartTime to Reset call 2022-08-22 14:11:06 +09:00
Dean Herbert
0e228791c0 Remove unnecessary Reset call in MultiSpectatorScreen 2022-08-19 01:39:01 +09:00
Dean Herbert
6d78218142 Update usages of GameplayClockContainer.GameplayClock to access properties directly 2022-08-15 18:08:49 +09:00
Dean Herbert
224f3eaa84 Make GameplayClockContainer non-abstract and use in MultiSpectatorPlayer 2022-08-15 18:08:49 +09:00