Dean Herbert
3d8ae0465f
Reword comment slightly
2022-04-05 15:51:04 +09:00
Dean Herbert
8e543204cd
Remove debounce logic (not required after switching to Update
clock time)
2022-04-05 15:49:47 +09:00
Dean Herbert
5f415cbe53
Full potential null reference and add better commentary on countdown scheduling
2022-04-05 15:48:18 +09:00
Dean Herbert
d0f83885ce
Appease the CI
2022-04-05 13:20:34 +09:00
Dean Herbert
31bf0c4a9b
Disable "final" sample in countdown for the time being
2022-04-05 13:16:06 +09:00
Dean Herbert
174dc1641c
Fix multiple issues with timekeeping
...
- Using realtime (`DateTimeOffset.Now`) meant that values would be
changing in the same frame, causing misfirings or incorrect displays
- No debounce on sample playback meant that scheduling edge cases could
potentially cause samples to be played more than once.
2022-04-05 11:49:58 +09:00
Dean Herbert
64ba24c4f7
Merge branch 'master' into mp-countdown-sfx
2022-04-05 01:04:57 +09:00
Dan Balasescu
cbcbcd1a4a
Merge pull request #17643 from peppy/stable-countdown
...
Stabilise countdown updates to be based on when whole seconds change
2022-04-04 22:19:06 +09:00
Dean Herbert
0abebe4d23
Stabilise countdown updates to be based on when whole seconds change
2022-04-04 14:41:32 +09:00
Jamie Taylor
0f4b75ab15
Add multiplayer lobby countdown SFX
2022-04-01 21:33:57 +09:00
Dan Balasescu
16d4544ff9
Prevent reloads when playlist item order changes
2022-04-01 17:06:37 +09:00
Dean Herbert
0b6db31511
Guard other multiplayer client calls with exception handling
2022-03-31 19:45:38 +09:00
Dean Herbert
e0c125a628
Replace existing usage with helper method
2022-03-31 19:27:45 +09:00
Dean Herbert
ef5e37c47a
Fix multiplayer sounds playing too much after gameplay
...
Regressed in https://github.com/ppy/osu/pull/15936 .
Closes #17295 .
2022-03-31 16:18:28 +09:00
Salman Ahmed
0f144f6801
Merge branch 'master' into fix-countdown-refresh
2022-03-30 16:26:12 +03:00
Dean Herbert
671386ba6c
Fix MultiplayerMatchSongSelect
potentially attempting to exit when not the current screen
2022-03-30 20:36:12 +09:00
Dan Balasescu
375a752e24
Fix countdown timer not refreshing on new countdown
2022-03-29 11:27:26 +09:00
Dean Herbert
5725cc36ff
Add animation to countdown button when countdown is active
2022-03-26 14:29:53 +09:00
Dean Herbert
03f24c8b58
Merge branch 'master' into countdown-button-ux
2022-03-26 10:34:51 +09:00
Dean Herbert
a30d6256f4
Merge pull request #17447 from peppy/countdown-button-icon
...
Use more appropriate icon on countdown button (and give tooltip)
2022-03-26 10:20:07 +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
Dan Balasescu
11ee78b395
Merge branch 'master' into countdown-button-icon
2022-03-25 19:40:25 +09:00
Dan Balasescu
3986dfd160
Merge pull request #17444 from peppy/fix-countdown-counting
...
Update multiplayer countdown button text more often
2022-03-25 19:40:04 +09:00
Dan Balasescu
9963efce51
Improve ready/countdown button UX
2022-03-25 18:40:32 +09:00
Dean Herbert
b13408aed0
Add back "room visibility" control commented out for now
2022-03-25 18:37:20 +09:00
Dan Balasescu
3ad092d808
Always show the countdown button when host
2022-03-25 18:29:00 +09:00
Dean Herbert
463091bde2
Use more appropriate icon on countdown button (and give tooltip)
2022-03-25 18:25:48 +09:00
Dean Herbert
aa9e642e40
Merge branch 'master' into pin-multiplayer-host
2022-03-25 16:49:35 +09:00
Dean Herbert
4a30b6ef56
Update multiplayer countdown button text more often
...
At once a second, it regularly skips whole seconds (because scheduler
isn't guaranteed to run exactly as often as specified). 10 updates a
second seems amicable and less noticeable to my eye.
2022-03-25 16:25:20 +09:00
Dean Herbert
b1f0f89fdd
Simplify AutoStart
and Host
checks
2022-03-25 15:41:01 +09:00
Bartłomiej Dach
878e8d21a3
Remove assertion to fix "expression always true" inspection
2022-03-24 21:51:10 +01:00
Dan Balasescu
1abf3f7bf4
Fix cancel tooltip showing for autostart countdowns
2022-03-24 20:25:17 +09:00
Dan Balasescu
40eca0fbe2
Merge branch 'master' into multiplayer-auto-countdown
2022-03-24 18:11:51 +09:00
Dean Herbert
2d58feebb1
Guard against potential null CurrentItem
in ParticipantPanel
2022-03-24 17:54:21 +09:00
Dan Balasescu
528ffea38d
Fix incorrect event binding
2022-03-24 17:11:08 +09:00
Dan Balasescu
96a447f68b
Rename Multiplayer prefix to button classes
2022-03-24 14:28:38 +09:00
Dan Balasescu
90c7945bca
Re-remove PopoverButton class with better test fix
2022-03-24 14:26:31 +09:00
Dean Herbert
6f529cf7a4
Merge branch 'master' into fix-spectator-seeks
2022-03-24 14:24:20 +09:00
Dan Balasescu
547418e47e
Revert "Remove PopoverButton class"
...
This reverts commit 6b712be97d
.
2022-03-24 11:15:51 +09:00
Dan Balasescu
34a367b369
Merge branch 'master' into multiplayer-countdown-timers-2
2022-03-23 15:40:50 +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
d4ad4ac9db
Limit countdown updates to once per second
2022-03-23 10:50:05 +09:00
Dan Balasescu
6b712be97d
Remove PopoverButton class
2022-03-23 10:40:38 +09:00
Dan Balasescu
9138aaf780
Split MultiplayerReadyButton
2022-03-23 10:38:56 +09:00
Dan Balasescu
23be0f1be9
Remove availability picker for now
2022-03-22 14:34:06 +09:00
Dan Balasescu
d0fee53e1f
Implement auto countdown timers
...
Change to using TimeSpan
2022-03-22 14:34:06 +09:00
Dan Balasescu
4630aa15cc
Apply refactorings according to reviews
2022-03-22 12:54:19 +09:00
Salman Ahmed
add9f3ec91
Rename multiplayer mod usages to make more sense
2022-03-20 13:12:24 +03:00
Salman Ahmed
e1d22e58bf
Simplify queue count text logic
2022-03-20 06:25:14 +03:00
Salman Ahmed
7529d6fc00
Bind queue items during playlist initialization
...
Along with where the other bindables are bound together (only bind, not
listening).
2022-03-20 06:23:44 +03:00
hwabis
ef823d58a7
address frenzibyte review (refactor bindable flow, clean up CI stuff)
2022-03-19 13:05:35 -04:00
Salman Ahmed
9afe82a0d5
Fix potentially null drawable call to SetLayoutPosition
2022-03-19 14:54:58 +03:00
hwabis
5d16519a82
make code prettier
2022-03-18 23:41:55 -04:00
Salman Ahmed
0adad3a599
Handle potential null room hosts
2022-03-19 04:01:35 +03:00
hwabis
5a5629eb5a
(works now) use BindValueChanged to set the Queue text
2022-03-18 20:47:45 -04:00
hwabis
5e5fbc496e
(still not working) try bindables instead of int
2022-03-18 20:32:37 -04:00
hwabis
d9b2a29c6d
(not working yet) add MultiplayerPlaylistTabControl, "Queue ({count})"
2022-03-18 20:02:26 -04:00
hwabis
faa36c78e5
put count and tabs into new fillflowcontainer
2022-03-18 12:55:00 -04:00
Dan Balasescu
04f4e81852
Rename start countdown request
2022-03-18 21:05:19 +09:00
Dean Herbert
611562c650
Add more comments around catch up logic
2022-03-18 16:21:14 +09:00
Dean Herbert
f09a946722
Start GameplayClockContainer
paused for better state control
2022-03-18 15:28:22 +09:00
Dean Herbert
59aef88504
Simplify clock reset/start flow in MultiSpectatorScreen
2022-03-18 15:07:57 +09:00
hwabis
c2e7ff7e3e
display count of listQueue
2022-03-18 01:37:53 -04:00
Dan Balasescu
72843a6797
Add support for starting/stopping countdowns
2022-03-18 14:33:09 +09:00
Dan Balasescu
efce471f0b
Add countdown button + popover
2022-03-18 14:31:57 +09:00
Dan Balasescu
b76a87e6f8
Split ready button visual logic into button itself
2022-03-18 14:31:57 +09:00
Salman Ahmed
1bd08b4a4b
Remove kick button fading as well to not look jarring
2022-03-18 08:09:15 +03:00
Salman Ahmed
98b420ee6f
Remove no longer correct crown fade animation
...
Since the host is pinned to the top without any animation, it would look
jarring for the crown to fade away from the old panel (and at a 50ms
duration).
2022-03-18 07:25:12 +03:00
Salman Ahmed
1c899d00b9
Pin multiplayer host panel to the top of the list
2022-03-18 07:25:03 +03:00
Salman Ahmed
f2248ecc08
Update usages to use IsPlayable
instead
2022-03-18 02:11:18 +03:00
Dan Balasescu
da0ffab14e
Integrate ready button implementation
2022-03-17 18:43:04 +09:00
Dan Balasescu
461d41529b
Integrate spectate button implementation
2022-03-17 18:36:33 +09:00
Salman Ahmed
187059a37f
Replace hardcoded overrides with the newly introduced Mod
properties
2022-03-17 03:51:27 +03:00
Salman Ahmed
1025e1939b
Disable "Adaptive Speed" mod in multiplayer
2022-03-16 11:54:18 +03:00
Dan Balasescu
885cb3ce5b
Add current screen checks for added safety
2022-03-10 20:03:02 +09:00
Dean Herbert
2d135e5be6
Explain purpose of Schedule
call in MultiplayerPlayer.onResultsReady
2022-03-10 19:56:13 +09:00
Dan Balasescu
45d537ef72
Fix potential multiplayer crash with async disposal
2022-03-10 18:50:53 +09:00
Dan Balasescu
f1c40bd9ed
Rework GetScore() method signatures + implementations
...
Rename legacy-facing overload to mention as much
2022-03-08 22:30:44 +09:00
Dan Balasescu
387ae59bc4
Fix nullref in tests
2022-02-25 16:12:25 +09:00
Dan Balasescu
48ed9c6144
Enable high chat polling rate
2022-02-25 16:03:56 +09:00
Dan Balasescu
f9d9ad388b
Add chat display to multiplayer spectator screen
2022-02-25 16:03:28 +09:00
Dean Herbert
bb1aa032bd
Combine SelectedItem
and CurrentPlaylistItem
into same storage
2022-02-24 16:21:20 +09:00
Dan Balasescu
bdc3b76df0
Remove beatmap bindable from PlaylistItem
2022-02-15 23:50:08 +09:00
Dan Balasescu
efeba30b9f
Remove ruleset and mod bindables from PlaylistItem
2022-02-15 16:28:15 +09:00
Dan Balasescu
18251c9285
Clean up SpectatorScreen based on suggestions
2022-02-09 12:20:07 +09: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
4c76027178
Rename completed state to passed
2022-02-08 20:29:49 +09:00
Dan Balasescu
45b3f472ab
Merge branch 'master' into spectator-state-rework
2022-02-08 19:51:50 +09:00
Dan Balasescu
c2416c490e
Fix crash on disconnection during multi-spectate
2022-02-08 11:29:39 +09:00
Dan Balasescu
d5269ba05b
Merge branch 'fix-spectator-restart-crash' into spectator-state-rework
2022-02-04 17:59:18 +09:00
Dan Balasescu
0473c6c52f
Also handle null SelectedItem for safety
2022-02-04 17:53:51 +09:00
Dan Balasescu
b41655d5b9
Fix crash when gameplay starts while in multi-spectator screen
2022-02-04 17:47:41 +09:00
Dan Balasescu
f285060148
Fix MultiSpectatorScreen not continuing to results
2022-02-03 21:50:19 +09:00
Dan Balasescu
483977d5c8
Merge branch 'master' into spectator-state-rework
2022-02-03 19:59:07 +09:00
Dan Balasescu
b5fb3b7dae
Fix crash when selecting swap mod as freemod
2022-02-02 18:42:22 +09:00
Dan Balasescu
781cb9f18d
Move HasPassed/HasFailed into GameplayState
2022-02-01 14:46:24 +09:00
Dan Balasescu
a49a9ed0a0
Fix incorrect invoke
2022-01-31 17:19:04 +09:00
Salman Ahmed
3ec193d47e
Fix spectator clock container incorrectly starting catch-up clock
2022-01-30 01:46:10 +03:00
Salman Ahmed
4f4f60248f
Add failing test case
2022-01-30 01:46:10 +03:00
Jamie Taylor
493a970ed5
Remove unused AudioManager
2022-01-19 14:08:21 +09:00
Dean Herbert
671a3d47b8
Move bindable binding to LoadComplete
and remove unnecessary unbind
2022-01-15 21:20:27 +09:00
Dean Herbert
ea8e49c543
Reorder private/protected methods
2022-01-15 21:19:02 +09:00
Jamie Taylor
7e9b5dd150
Add audio feedback for host change in multiplayer
2022-01-14 18:11:00 +09:00
Dean Herbert
675bdd3213
Fix MultiplayerMatchSubScreen
mutating mods outside of bindable lease
...
As seen at https://github.com/peppy/osu/runs/4674501626?check_suite_focus=true .
2022-01-01 12:13:59 +09:00
Joseph Madamba
7de43e3aba
Fix most open compound words in identifiers being closed
2021-12-27 20:26:28 -08:00
Dan Balasescu
a43cc20ae2
Apply changes to GameplayCompleted from reviews
2021-12-24 21:58:20 +09:00
Dan Balasescu
c6854b37c8
Unbind event on disposal
2021-12-24 21:58:09 +09:00
Dan Balasescu
727335dcad
Improve reliability of exiting gameplay
2021-12-24 14:23:09 +09:00
Dan Balasescu
4ce61d4260
Directly bind to room updates
...
Currently doesn't really cause any difference, however it may in the
future if we decide the queueing algorithm shouldn't update PlaylistOrder
when an item has been played.
2021-12-21 18:40:29 +09:00
Dan Balasescu
a34d24fb20
Disallow expired items from showing delete button
...
This isn't possible in practice since expired items are removed from the
queue list, but this helps out in tests.
2021-12-21 18:37:42 +09:00
Dan Balasescu
51b7e920c0
Fix delete button being able to show on current item
2021-12-21 16:57:58 +09:00
Dean Herbert
d08b66a5ff
Also add logging to OnlinePlayScreen
2021-12-21 15:07:06 +09:00
Dean Herbert
ddadf3c4b5
Add logging of MultiplayerMatchSubScreen
exiting from room loss
2021-12-21 14:53:24 +09:00
Dean Herbert
6907a9a3cc
Name some screen stacks for better logging context
2021-12-20 18:24:14 +09:00
Dean Herbert
cd8dfac625
Merge pull request #16097 from smoogipoo/forego-resetting-spectate-state
...
Don't reset spectating state if spectator exited after gameplay finishes
2021-12-15 22:30:41 +09:00
Dean Herbert
33cf4ba7f6
Merge pull request #16075 from smoogipoo/prevent-idle-transition-during-load
...
Add AbortGameplay() to fix state transition race conditions during multiplayer load
2021-12-15 19:59:19 +09:00
Dean Herbert
9e82a3e79a
Merge branch 'master' into forego-resetting-spectate-state
2021-12-15 18:05:06 +09:00
Dan Balasescu
18d7b79207
Don't reset spectating state if gameplay is finished
2021-12-15 17:40:30 +09:00
Dan Balasescu
740a6f16c7
Fix exception when updating the room's visual playlist
2021-12-15 16:53:25 +09:00
Dan Balasescu
9ade8069a1
Rename to AbortGameplay() and handle additional states
2021-12-15 06:40:28 +09:00
Dan Balasescu
2f1dc91211
Add AbortLoad() method to abort gameplay loads
2021-12-14 11:30:42 +09:00
Dan Balasescu
70045494ba
Re-simplify code by removing BeatmapManager event instead
2021-12-13 16:09:54 +09:00
Dan Balasescu
a6e77f172d
Add some comments
2021-12-12 16:30:37 +09:00
Dan Balasescu
d6c08fae48
Fix incorrect global beatmap with availability changes
2021-12-11 23:08:21 +09:00
Dan Balasescu
25b274c323
Fix starting gameplay too early after import
2021-12-11 22:47:50 +09:00
Dan Balasescu
6057037e35
Move playlist item beatmap population to MatchSubScreen
2021-12-10 20:08:59 +09:00
Dan Balasescu
de0f37b08d
Separate editing and adding playlist items
2021-12-10 15:26:48 +09:00
Dean Herbert
88670c3b01
Document OpenSongSelection
and mark null param
2021-12-10 14:14:22 +09:00
Dan Balasescu
671582a925
Allow host to enqeue items and items to be edited
2021-12-10 01:15:19 +09:00
Dan Balasescu
1a0945daba
Siplify condition, allow host to always remove items
2021-12-09 14:33:50 +09:00
Dan Balasescu
8398f86440
Don't consider expired items in visibility check
2021-12-09 04:02:16 +09:00
Dan Balasescu
c34c580ad4
Add client-side + interface implementation
2021-12-09 03:08:59 +09:00
Dan Balasescu
273042aa16
Add virtual method for creating different DrawablePlaylistItem types
2021-12-09 01:49:34 +09:00
Dan Balasescu
3be4d8b68d
Remove ctor params from DrawableRoomPlaylist/DrawablePlaylistItem
2021-12-09 01:04:56 +09:00
Dean Herbert
dea7f2308c
Fix participant panels potentially keeping a reference to an old user
...
If a user leave and then rejoins a multiplayer match while another user
is not at the lobby screen, there is a potential the `ParticipantPanel`
tracking the user will not correctly be recreated to reference the new
instance of the `MultiplayerUser`.
This happens because the `OnRoomUpdated` call is scheduled, which means
it is not running in the background, coupled with the local logic that
relies on `IEquatable(MultiplayerRoomUser)` (which in turn falls back to
a UserID comparison).
Changing this to a reference comparison is the easiest way to resolve
this. Whether we change the `IEquatable` implementation is up for
discussion.
Closes https://github.com/ppy/osu/issues/15970 .
2021-12-07 17:24:04 +09:00
Dean Herbert
a76cfbea21
Add test coverage of incorrect beatmap being used in multiplayer when match started from song select
2021-12-06 14:03:33 +09:00
Dean Herbert
e1897f9998
Don't debounce MultiplayerRoomComposite
events
...
This avoids accidental usage which could result in data being lost or
ignored (as only the last `user` in a single frame would arrive).
This was added specifically to debounce sample playback, but given that
it's only debouncing on a single frame (hardly noticeable) I'm not going
to add back support for that yet. It should be handled by sample
playback concurrency or something more local to the usage.
2021-12-05 01:38:39 +09:00
Bartłomiej Dach
38702beabf
Merge branch 'master' into i-ruleset-store
2021-12-04 15:05:39 +01:00
Bartłomiej Dach
53a6ef22ce
Add null check to resolve inspection
2021-12-04 14:55:35 +01:00
Dean Herbert
517a344bcc
Merge branch 'master' into new-multiplayer-playlist
2021-12-04 13:16:09 +09:00
Dan Balasescu
d5803e541b
Give playlist items a PlayedAt date
2021-12-03 20:25:51 +09:00
Dean Herbert
1eed2436e6
Clean up unused resolved properties
2021-12-03 18:49:49 +09:00
Dean Herbert
e75e209053
Cache and consume IRulesetStore
where feasible
2021-12-03 18:16:01 +09:00
Dan Balasescu
487a71312e
Split out code so base methods aren't called
2021-12-03 16:40:20 +09:00
Dan Balasescu
0a1304b92a
Remove gameplay_order, use existing playlist_order
2021-12-03 15:45:13 +09:00
Dan Balasescu
b75a5b778e
Update history list to also sort by gameplay order
2021-12-03 15:05:56 +09:00
Dan Balasescu
933fd49cff
Fix missed callbacks due to AddOnce() schedules
2021-12-02 22:33:14 +09:00
Dan Balasescu
9760a2b087
Update MultiplayerQueueList to take advantage of GameplayOrder
2021-12-02 22:33:14 +09:00