1
0
mirror of https://github.com/ppy/osu.git synced 2024-11-07 17:27:25 +08:00
Commit Graph

22661 Commits

Author SHA1 Message Date
Dean Herbert
283c69a68f Update enum name in line with changes 2021-01-06 23:12:56 +09:00
Dean Herbert
59025e9d50 Remove related events 2021-01-06 23:09:58 +09:00
Dean Herbert
32accc8eab Remove "osu!direct" button 2021-01-06 22:56:10 +09:00
Bartłomiej Dach
7651d4554a
Merge branch 'master' into fix-transform-carousel 2021-01-06 13:49:05 +01:00
Bartłomiej Dach
43b9fde457 Add some nullability annotations for good measure 2021-01-06 13:15:15 +01:00
Dean Herbert
99701a6d9b Add null check on beatmapContainer for safety 2021-01-06 21:06:33 +09:00
Dean Herbert
ffafdf2209 Merge branch 'master' into fix-transform-carousel 2021-01-06 21:03:22 +09:00
Bartłomiej Dach
25b4628672
Merge branch 'master' into fix-transform-mutation-from-background 2021-01-06 11:04:51 +01:00
Dean Herbert
07cff70387 Add specific messaging for when there's no background stack available 2021-01-06 18:19:03 +09:00
Bartłomiej Dach
6572bb18de
Merge branch 'master' into fix-transform-mutation-display-settings 2021-01-06 10:09:14 +01:00
Dean Herbert
550ef3f133 Aggressively dispose ownedBackground if it was not used, because we can 2021-01-06 15:28:01 +09:00
Dean Herbert
e9d4e4d1d5 Add xmldoc and throw a local exception on null background 2021-01-06 15:26:44 +09:00
Dean Herbert
11a0c637bc Mark background properties as nullable 2021-01-06 15:26:00 +09:00
Dean Herbert
15dd7a87a6 Move gameplay preview event binding to LoadComplete 2021-01-06 15:19:12 +09:00
Bartłomiej Dach
52687fc37c Merge branch 'master' into fix-transform-mutation-loading-layer 2021-01-05 23:10:51 +01:00
Bartłomiej Dach
0880e76da8 Mark background dim layer as possibly-null 2021-01-05 22:56:53 +01:00
Bartłomiej Dach
ac1d6d4444 Make auto-property get-only 2021-01-05 22:56:53 +01:00
Bartłomiej Dach
2b253f6d01 Remove now-unused fields & locals 2021-01-05 22:56:53 +01:00
Bartłomiej Dach
fbbc26d7d8
Merge branch 'master' into fix-carousel-centering-on-window-resize 2021-01-05 21:30:39 +01:00
Bartłomiej Dach
847d2d8deb
Merge branch 'master' into fix-transform-mutation-from-disposal-thread 2021-01-05 19:52:10 +01:00
Dean Herbert
4b539b01c1 Match code between updateSelectedBeatmap/Ruleset 2021-01-05 20:38:58 +09:00
Dean Herbert
83dbba3cbf Fix carousel beatmap set panels applying transforms to difficulties while they are loading 2021-01-05 18:41:45 +09:00
Dean Herbert
d0d2e41b28 Fix display settings binding to configuration bindables in async load 2021-01-05 18:19:28 +09:00
Dean Herbert
0639429a23 Fix test (and remove no longer valid test) 2021-01-05 18:10:39 +09:00
Dean Herbert
3b98782964
Merge pull request #11420 from kyekiller/master
Fix to toolbar tooltips
2021-01-05 17:43:32 +09:00
Dean Herbert
0b1ee2e267 Remove unused dispose logic 2021-01-05 17:42:19 +09:00
Dean Herbert
54982dcdd7 Refactor LoadingLayer to avoid applying effects to external drawables
In theory this seemed like a good idea (and an optimisation in some
cases, due to lower fill rate), but in practice this leads to weird edge
cases.

This aims to do away with the operations on external drawables by
applying a dim to the area behind the `LoadingLayer` when required.
I went over each usage and ensured they look as good or better than
previously.

The specific bad usage here was the restoration of the colour on dispose
(if the `LoadingLayer` was disposed in a still-visible state).

I'm aware that the `BeatmapListingOverlay` will now dim completely during
load. I think this is fine for the time being.
2021-01-05 17:31:45 +09:00
Dean Herbert
5d8c153c1e Move schedule logic to buttons rather than section
It turns out there's some quite convoluted scheduling / order of
execution requirements of ModSelectOverlay and ModSection. Applying
scheduling causes a runaway condition ending in zero frames after many
mod button changes.

I wanted to avoid rewriting the whole component, so have just moved the
schedule to guard against the part where drawables are actually changed.
2021-01-05 16:41:05 +09:00
Dean Herbert
4d6c13f169 Privatise ModSelectOverlay methods that may be unsafe to be called externally 2021-01-05 16:18:13 +09:00
Dean Herbert
9bac791a57 Fix deselection of autoplay mod failing 2021-01-05 16:17:58 +09:00
Dean Herbert
57a8cd7461 Schedule deselection operations for safety 2021-01-05 16:17:58 +09:00
Dean Herbert
60fc60fa00
Merge pull request #11415 from frenzibyte/fix-ready-button-crash
Fix multiplayer ready button crashing when deleting selected beatmap set
2021-01-05 15:58:09 +09:00
Dean Herbert
b3f08b29ca Ensure that all changes to screen backgrounds are on the correct thread 2021-01-05 15:22:50 +09:00
Dean Herbert
a3e4e2f6c3 Switch ResultsScreen and SongSelect inheritance and remove local implementation 2021-01-05 15:22:50 +09:00
Dean Herbert
962c95dc01 Fix ModSelection making unsafe advances of ModSection 2021-01-05 15:19:37 +09:00
Dean Herbert
ed6ffe2ef1 Remove hacky code 2021-01-05 14:54:59 +09:00
Dean Herbert
31a6e9b860 Remove unused using 2021-01-05 14:24:49 +09:00
Dean Herbert
afab35a31a Fix missing copy implementation in LegacySampleControlPiont 2021-01-05 13:41:31 +09:00
Dean Herbert
6b8e1913ee Fix dependency not always available due to nested LoadComponentAsync call 2021-01-05 13:27:45 +09:00
Dean Herbert
caa88c6100 Use CreateCopy instead of Clone interface
I was going for conformity by using the IClonable interface, but it
doesn't look like we use it anywhere else in the project.
2021-01-05 13:13:52 +09:00
KyeKiller
77e660e426 Should pass all checks again now. 2021-01-04 22:11:52 +00:00
KyeKiller
1234d0fa04 Applied all tooltips to the right 2021-01-04 22:01:12 +00:00
kyekiller
254698d9a2
Merge branch 'master' into master 2021-01-04 21:07:12 +00:00
KyeKiller
0e42d415c1 Hit another oopie 2021-01-04 21:05:28 +00:00
KyeKiller
3468df840b Moved tooltip to the left to stop the overflow 2021-01-04 21:04:30 +00:00
KyeKiller
73f5e5aaf9 Moved "ToolbarSocialButton" back 2021-01-04 21:03:51 +00:00
KyeKiller
2e2b3ab5d4 Should remove codeFactor error 2021-01-04 17:26:42 +00:00
KyeKiller
2d1b52be0d Moved "ToolbarSocialButton"
This will remove it from coming off the screen.
2021-01-04 17:21:31 +00:00
Dean Herbert
deb1ad7bca
Merge branch 'master' into disable-repeat-multi-actions 2021-01-04 23:38:29 +09:00
Dean Herbert
3b08faa0ea Fix RemoveBlockingOverlay causing transform mutation from disposal threads 2021-01-04 17:49:11 +09:00
Dean Herbert
b7dd54847f Move resolved usage of WorkingBeatmap in editor components as local as possible to avoid misuse 2021-01-04 16:56:37 +09:00
Dean Herbert
7fdf876b4c Fix editor timing screen mutating the WorkingBeatmap instead of EditorBeatmap 2021-01-04 16:38:15 +09:00
Dean Herbert
b4a779108e Ensure working beatmap is reloaded on exiting the editor 2021-01-04 16:37:49 +09:00
Dean Herbert
ba4e411422 Clone and copy ControlPointInfo when retrieving a playable beatmap 2021-01-04 16:37:07 +09:00
Salman Ahmed
485a57776b Fix hasBeatmap potentially checking on outdated DeletePending value 2021-01-04 10:28:41 +03:00
Salman Ahmed
ea38b00b29 Schedule all calls to updateBeatmapState() 2021-01-04 10:27:08 +03:00
Dean Herbert
9e0c490141 Remove unused using 2021-01-04 15:40:22 +09:00
Dean Herbert
20d04d6933 Fix Storyboard's FirstEventTime not finding the true earliest event 2021-01-04 15:16:01 +09:00
Salman Ahmed
445a4bd01c Re-query beatmap info on database changes 2021-01-04 09:00:16 +03:00
Salman Ahmed
ca5f2bcd4c Revert database-side changes 2021-01-04 08:50:30 +03:00
Salman Ahmed
1463ff2886 Remove unnecessary using directive 2021-01-04 08:12:31 +03:00
Salman Ahmed
738c94d193 Update soft-deletion logic to use model store's consumable items instead 2021-01-04 07:47:08 +03:00
Salman Ahmed
839f5a7570 Ensure clients don't blow up when given user isn't in room 2021-01-03 18:36:37 +03:00
Salman Ahmed
c8423d1c46 Make constructors design more pleasent to eyes 2021-01-03 18:36:05 +03:00
Salman Ahmed
152e9ecccf Make BeatmapAvailability class in-line with other online data structures 2021-01-03 18:36:05 +03:00
Dean Herbert
53e6a349bb Fix incorrect initial conditional
Turns out this wasn't actually required.
2021-01-03 22:44:32 +09:00
Dean Herbert
efb71713ef Fix null condition inhibiting deselection events 2021-01-03 22:43:02 +09:00
Bartłomiej Dach
9e4a925ab1 Clarify & cleanup comments some 2021-01-03 13:44:29 +01:00
Bartłomiej Dach
a3e29b9154 Rename parameters for readability 2021-01-03 13:25:44 +01:00
Dean Herbert
2501707d7d Copy values using Bind to also copy defaults 2021-01-03 20:45:03 +09:00
LavaDesu
7c9f345cd2
Use better naming for DiscordRichPresenceMode 2021-01-03 16:46:25 +07:00
Dean Herbert
6ad1b7767e
Update osu.Game/Online/API/APIMod.cs
Co-authored-by: Salman Ahmed <slmanarendo1950@gmail.com>
2021-01-03 17:04:16 +09:00
Dean Herbert
99fa0e25dc Switch back to FirstOrDefault to allow for weird testing logic to pass 2021-01-03 16:46:24 +09:00
Dean Herbert
29dbb1cc0d Add internal pathway for ensuring correct application of bindable mods 2021-01-03 15:48:28 +09:00
Dean Herbert
23e216fa0b Simplify some default value checks (we are sure the return is an IBindable) 2021-01-03 15:47:15 +09:00
Dean Herbert
1a44338124 Use SingleOrDefault for added safety when looking up mod acronyms 2021-01-03 15:38:30 +09:00
Dean Herbert
a6d4992997 Ensure SelectionChanged events are only sent once when selection is null 2021-01-03 12:53:25 +09:00
LavaDesu
2e5c67be3f
Add ability to toggle discord rich presence
There are 3 modes: enabled, limited, and disabled.

The limited mode hides identifiable information such as username, rank, and
(if participating in one) multiplayer lobby name.
2021-01-03 10:37:28 +07:00
Dean Herbert
caa5109e3a Add precautionary null checks to update methods in SongSelect 2021-01-03 12:18:35 +09:00
Salman Ahmed
dfa8be9173 Add beatmap availability change state & event methods 2021-01-03 05:48:49 +03:00
Salman Ahmed
09e5e2629a Add user beatmap availability property 2021-01-03 05:48:49 +03:00
Salman Ahmed
8bb84570df Introduce beatmap availability structure 2021-01-03 05:48:49 +03:00
Lucas A
324f80d994 Fix merge conflicts. 2021-01-02 19:14:10 +01:00
Dean Herbert
8511112e28
Merge pull request #11380 from bdach/unobserved-exceptions-pt-2
Catch multiplayer client-related unobserved exceptions better
2021-01-02 23:36:49 +09:00
Dean Herbert
e2de5bb8f9 Fix the beatmap carousel not returning to centre correctly after resizing window 2021-01-02 22:05:41 +09:00
Bartłomiej Dach
9ab1091281
Merge branch 'master' into fix-signalr-reconnect 2021-01-02 13:18:02 +01:00
Dean Herbert
72a6ca7755 Allow signalr to retry connecting when connection is closed without an exception 2021-01-02 16:47:00 +09:00
Bartłomiej Dach
30cebe7579 Merge branch 'dependabot/nuget/Microsoft.AspNetCore.SignalR.Client-3.1.10' into dependency-updates 2021-01-01 21:25:10 +01:00
dependabot-preview[bot]
652b0ccd8f
Bump Microsoft.AspNetCore.SignalR.Client from 3.1.9 to 3.1.10
Bumps [Microsoft.AspNetCore.SignalR.Client](https://github.com/aspnet/AspNetCore) from 3.1.9 to 3.1.10.
- [Release notes](https://github.com/aspnet/AspNetCore/releases)
- [Commits](https://github.com/aspnet/AspNetCore/compare/v3.1.9...v3.1.10)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-01-01 17:54:11 +00:00
dependabot-preview[bot]
7441cfd94e
Bump Microsoft.AspNetCore.SignalR.Protocols.NewtonsoftJson
Bumps [Microsoft.AspNetCore.SignalR.Protocols.NewtonsoftJson](https://github.com/aspnet/AspNetCore) from 3.1.9 to 3.1.10.
- [Release notes](https://github.com/aspnet/AspNetCore/releases)
- [Commits](https://github.com/aspnet/AspNetCore/compare/v3.1.9...v3.1.10)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-01-01 17:53:29 +00:00
Salman Ahmed
988f9b98a1 Split button mods updating to private method 2021-01-01 16:16:00 +03:00
Salman Ahmed
c1a1e3acc5 Revert drive-by changes 2021-01-01 15:40:40 +03:00
Salman Ahmed
a031c8e0b6
Apply documentation suggestions
Co-authored-by: Bartłomiej Dach <dach.bartlomiej@gmail.com>
2021-01-01 15:34:09 +03:00
Salman Ahmed
2ce9599957 Copy selected mods properties into overlay's buttons 2021-01-01 03:47:13 +03:00
Salman Ahmed
b4df2d6d43 Add method for copying properties from another mod 2021-01-01 03:46:09 +03:00
Bartłomiej Dach
1e02f450a6
Merge branch 'master' into move-health-meter 2020-12-31 13:59:37 +01:00
mcendu
17abe90c27 move SkinnableHealthDisplay
Similar components are in osu.Game.Screens.Play.HUD while this is not
2020-12-31 20:23:13 +08:00
Bartłomiej Dach
7d9a61fbc1 Handle unobserved exceptions from ready button properly 2020-12-31 11:57:13 +01:00
Bartłomiej Dach
2d279350ad Catch multiplayer client-related unobserved exceptions better
Silencing an exception from a task continuation requires accessing
`task.Exception` in any way, which was not done previously if
`logOnError` was false.

To resolve without having to worry whether the compiler will optimise
away a useless access or now, just always log, but switch the logging
level. The unimportant errors will be logged as debug and therefore
essentially silenced on release builds (but could still be potentially
useful in debugging).
2020-12-31 11:39:42 +01:00
Bartłomiej Dach
1b1447eb35 Merge branch 'master' into fix-perform-from-menu-nullref 2020-12-31 10:33:05 +01:00
Bartłomiej Dach
00c6703c51 Inline complete method as well
For better guarantees that `finalAction` is actually called on the same
screen that `checkCanComplete()` was (uses result of one
`getCurrentScreen()` call throughout instead of calling multiple times).
2020-12-31 10:27:42 +01:00
Dean Herbert
f9196ae976 Fix PerformFromMenuRunner failing if CurrentScreen is null 2020-12-31 16:36:20 +09:00
Dean Herbert
6ebb267c66
Merge pull request #11346 from bdach/fix-changelog-regression
Fix changelog header staying dimmed after build show
2020-12-31 16:15:25 +09:00
Bartłomiej Dach
f800448c87 Move game start logic to a higher level 2020-12-30 18:15:48 +01:00
Bartłomiej Dach
d34609b98e Rename On{ToggleReady -> ReadyClick} 2020-12-30 16:29:36 +01:00
Bartłomiej Dach
dd87478690 Add helper IsHost property to Client 2020-12-30 16:29:19 +01:00
Bartłomiej Dach
59f2017a13 Move BindValueChanged subscriptions to LoadComplete 2020-12-30 16:22:11 +01:00
Dean Herbert
497d644a19 Move thread safety / locking logic from MultiplayerRoom 2020-12-30 20:24:50 +09:00
Dean Herbert
6596e3c5e8
Merge branch 'master' into fix-changelog-regression 2020-12-30 01:34:18 +09:00
Dean Herbert
3920dac8af Merge branch 'master' into fix-error-spam-on-disconnection 2020-12-30 00:55:37 +09:00
Dean Herbert
3552034ffe Update framework 2020-12-30 00:55:27 +09:00
Bartłomiej Dach
05f212eb3c Merge branch 'master' into remove-multiplayer-selection-poller 2020-12-29 12:51:33 +01:00
Bartłomiej Dach
4a85ee1374 Merge branch 'master' into improve-failing-api-ux 2020-12-29 11:01:36 +01:00
Bartłomiej Dach
361d215ab4 Reword notification messages to match new logic 2020-12-29 10:56:59 +01:00
Bartłomiej Dach
5d23199233 Trim redundant IsLoggedIn checks 2020-12-29 10:56:29 +01:00
Bartłomiej Dach
cafa241ef3 Fix ready-up button getting stuck if server operation fails 2020-12-29 09:44:30 +01:00
Dean Herbert
6bbd0ecfac Remove unused lock object 2020-12-29 17:39:00 +09:00
Bartłomiej Dach
e9b0652359 Move ready-up operation logic again to client
To salvage ready up button tests.
2020-12-29 09:16:02 +01:00
Dean Herbert
906a9b79b5 Show an error when forcefully exiting online play due to API failure 2020-12-29 16:47:36 +09:00
Dean Herbert
4d04e0dee7 Disallow entering the playlists/multiplayer screens if API is failing 2020-12-29 16:25:51 +09:00
Dean Herbert
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
Bartłomiej Dach
db52255bbe Adjust tracker usages to match new API 2020-12-29 08:20:43 +01:00
Bartłomiej Dach
f59ba799d3 Adjust operation tracker implementation 2020-12-29 07:54:27 +01:00
Bartłomiej Dach
9ff2140232 Move ready-up logic to match sub-screen 2020-12-29 07:52:15 +01:00
Bartłomiej Dach
903dca875e Make localUser a client property 2020-12-29 07:46:22 +01:00
Bartłomiej Dach
f68e4fc88f Merge branch 'master' into disable-repeat-multi-actions 2020-12-29 07:42:20 +01:00
Dean Herbert
2cb84c5111 Fix error message being shown to user on multiplayer disconnection when not in room 2020-12-29 15:19:52 +09:00
Dean Herbert
45c578b857 Remove selection polling from multiplayer
Looks like this was just copy-paste without any thought into whether it
should exist. It really shouldn't exist.

This is a thing for the playlists system because the *whole system*
there relies on polling the web API to get updated information. In the
case of mutliplayer, we hand off all communications to the realtime
server at the point of joining the rooms.

The argument that this was there to do faster polling on the selection
isn't valid since the polling times were the same for both cases.

Closes #11348.
2020-12-29 15:10:09 +09:00
Dean Herbert
f31a0e455a Minor xmldoc rewording 2020-12-29 14:29:40 +09:00
Dean Herbert
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
Dean Herbert
6aeb7ece66 Tidy up update state code, naming, xmldoc 2020-12-29 14:25:08 +09:00
Bartłomiej Dach
540dec2e7c Allow null tracker in lounge screen for tests 2020-12-28 22:54:52 +01:00
Bartłomiej Dach
6dc0f6af50 Disable setting apply button for duration of operation 2020-12-28 22:48:03 +01:00
Bartłomiej Dach
af66e45311 Disable create room button after triggering join 2020-12-28 22:48:03 +01:00
Bartłomiej Dach
47ab7c9fd6 Disable ready button after host click 2020-12-28 22:48:03 +01:00
Bartłomiej Dach
9e6994166c Add helper to track ongoing operations in UI 2020-12-28 22:48:03 +01:00
Bartłomiej Dach
a014d0ec18 Use PlayingUsers when constructing player directly 2020-12-28 19:27:56 +01:00
Bartłomiej Dach
1d311a6680 Change PlayingUsers population logic to match expectations 2020-12-28 19:27:56 +01:00
Bartłomiej Dach
d2301068b6 Fix changelog header staying dimmed after build show 2020-12-28 16:35:33 +01:00
Dean Herbert
9155671557
Merge pull request #11341 from peppy/fix-leaderboard-user-handling
Fix incorrect null handling in GameplayLeaderboard
2020-12-28 22:44:55 +09:00
Dean Herbert
2e88036f39
Merge pull request #11342 from bdach/fix-beatmap-not-reverting
Fix user changes in multi song select not reverting on exit without confirmation
2020-12-28 21:56:07 +09:00
Bartłomiej Dach
a376a23ed7
Merge branch 'master' into fix-leaderboard-user-handling 2020-12-28 13:43:53 +01:00
Bartłomiej Dach
a9822800fc Add more null hinting in GameplayLeaderboard 2020-12-28 13:00:05 +01:00
Bartłomiej Dach
f16b516e58 Revert user changes if no selection was made 2020-12-28 12:35:17 +01:00
Dean Herbert
447a55ce11 Fix incorrect null handling in GameplayLeaderboard 2020-12-28 20:16:53 +09:00
Bartłomiej Dach
20ae84a466
Merge branch 'master' into fix-user-lookup-failure-crashes 2020-12-28 12:15:06 +01:00
Dean Herbert
545dcac4ec Add null hinting on UserLookupCache query method 2020-12-28 20:13:24 +09:00
Dean Herbert
5ca9a6a980 Add xmldoc on UserLookupCache's lookup method 2020-12-28 20:05:48 +09:00
Dean Herbert
2e3537e966 Update framework 2020-12-28 16:52:54 +09:00
Dean Herbert
046a76cb1d Allow null users to still be displayed in the participant list
The fix here is correcting the access of `user.Country`. The deicision
to have null users display is because this is the best we can do (if
osu-web could not resolve the user). We still want the users in the
lobby to be aware of this user's presence, rather than hiding them from
view.

osu-stable does a similar thing, showing these users as `[Loading]`. I
decided to go with blank names instead because having *any* text there
causes confusion. We can iterate on this in future design updates.
2020-12-28 15:03:44 +09:00
Dean Herbert
4d61c143db Fix lookup cache throwing a null reference if no matches were successful 2020-12-28 15:03:44 +09:00
Dean Herbert
69fab7de77
Merge pull request #11307 from bdach/fix-account-creation-overlay-after-logout
Fix account creation overlay not showing up the first time after a log-out
2020-12-28 11:52:48 +09:00
Dean Herbert
1b7c72f03b
Merge branch 'master' into changelog-refactor 2020-12-28 11:00:14 +09:00
Lucas A
7ae4979882 Fix merge conflicts. 2020-12-27 13:52:45 +01:00
Bartłomiej Dach
2ff49f4758 Merge branch 'master' into fix-quit-user-showing-in-leaderboard 2020-12-27 13:02:40 +01:00
Bartłomiej Dach
f75dccc9e4 Explicitly use discard in value changed callback 2020-12-27 13:00:27 +01:00
Bartłomiej Dach
6b6b1514e2 Rename method to be less misleading
As it doesn't only change colour, but also width.
2020-12-27 12:58:37 +01:00
Dean Herbert
3b5260fd67
Merge branch 'master' into fix-gameplay-leaderboard-clickable-avatars 2020-12-27 19:00:38 +09:00
Dean Herbert
1b34f2115f Remove dignostics using 2020-12-27 16:57:23 +09:00
Dean Herbert
d14a8d24b5 Remove assert for now 2020-12-27 16:42:20 +09:00
Dean Herbert
fa0576f47f Move quit colour change implementation to updateColour for better coverage 2020-12-27 13:40:02 +09:00
Shivam
a933483848 Merge branch 'master' into tourney-switching-ui 2020-12-26 15:45:29 +01:00
Shivam
9e15dccc56 Move graceful exit to OsuGameBase 2020-12-26 15:36:21 +01:00
Bartłomiej Dach
15948de2f0 Fix gameplay leaderboard avatars being clickable 2020-12-26 14:35:14 +01:00
Bartłomiej Dach
8ec7970b6a Move load-complete fade specification inside 2020-12-26 14:35:14 +01:00
Bartłomiej Dach
e8f96b2401 Bring back DrawableAvatar as a simple sprite 2020-12-26 14:35:14 +01:00
Bartłomiej Dach
0b42b4b955 Rename {Drawable -> Clickable}Avatar 2020-12-26 14:35:11 +01:00
Bartłomiej Dach
a1af749b4b
Merge branch 'master' into patch/11310 2020-12-26 13:19:13 +01:00
Bartłomiej Dach
b059b5d616 Merge branch 'master' into fix-ready-button-crash 2020-12-26 12:41:47 +01:00
Dean Herbert
b9d725ab49 Don't copy spotlight category 2020-12-26 20:13:28 +09:00
Bartłomiej Dach
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
Bartłomiej Dach
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
Dean Herbert
71dcbeaf7c Mark user as quit visually on the leaderboard 2020-12-26 12:11:09 +09:00
Dean Herbert
116acc2b5e Add flow for marking user as quit for further handling 2020-12-26 11:35:51 +09:00
Dean Herbert
ff57562956 Fix multiplayer leaderboard not unsubscribing from quit users 2020-12-26 11:35:31 +09:00
Neuheit
e7339d6959 fix(osu.Game): Ensure Category property is copied in Room. 2020-12-25 21:07:33 -05:00
Dean Herbert
fe1bbb1cac Don't fail if the local user is not present in room users when updating ready button state 2020-12-26 10:49:22 +09:00
Dean Herbert
f9900720d5 Rename OnRoomChanged to OnRoomUpdated to avoid confusion 2020-12-26 10:49:02 +09:00
Dean Herbert
5ce5b6cec0 Fix non-safe thread access to room users on room join 2020-12-26 10:25:16 +09:00
Dean Herbert
e0198c36ae Fix user population happening in single file 2020-12-26 09:48:13 +09:00
Bartłomiej Dach
0aedc720f2 Extract changelog entry component 2020-12-25 21:06:03 +01:00
Bartłomiej Dach
3ac618778f Handle all changelog entry types correctly 2020-12-25 21:06:03 +01:00
Bartłomiej Dach
5f43299d37 Fix tests failing due to base logic firing
It turns out that the changelog code was semi-intentionally relying on
the request to get release streams to be slow to initially show the
listing of all streams.

Locally suppress the base tab control logic to fix this.
2020-12-25 21:06:03 +01:00
Bartłomiej Dach
0bd9f68cbd Refactor update stream colour mapping code 2020-12-25 21:06:03 +01:00
Bartłomiej Dach
2e4b1b95c2 Rename {Multiplayer -> OnlinePlay}BackgroundSprite 2020-12-25 18:07:34 +01:00
Bartłomiej Dach
ed4b8482b6 Rename {Multiplayer -> OnlinePlay}Composite 2020-12-25 18:07:34 +01:00
Bartłomiej Dach
4c43a67b68 Rename I{Multiplayer -> OnlinePlay}SubScreen 2020-12-25 18:07:34 +01:00
Bartłomiej Dach
e5064ee930 Rename {Multiplayer -> OnlinePlay}SubScreen 2020-12-25 17:02:35 +01:00
Bartłomiej Dach
eb0f125fef Rename {Multiplayer -> OnlinePlay}SubScreenStack 2020-12-25 17:00:31 +01:00
Bartłomiej Dach
4caf75850b Rename {Multiplayer -> OnlinePlay}Screen 2020-12-25 17:00:00 +01:00
Bartłomiej Dach
83fb7c7a1a Re-namespace all files in OnlinePlay directory 2020-12-25 16:50:09 +01:00
Bartłomiej Dach
e797e5ce7a Rename Multi directory to OnlinePlay 2020-12-25 16:50:02 +01:00
Dean Herbert
9de1a67e03 Move PlaylistsResultsScreen to correct namespace 2020-12-25 23:47:32 +09:00
Dean Herbert
836d1491d0 PlaylistsMultiplayer -> Playlists 2020-12-25 23:47:18 +09:00
Dean Herbert
8a36eab060 Move missed file from Play namespace 2020-12-25 23:42:02 +09:00
Bartłomiej Dach
0d8fb83d0a Ensure account creation overlay is shown after logout
Scheduling the entire API state change callback caused the scheduled
hide to fire the first time the user attempted to display the account
creation overlay after a logout, because the drawable wasn't present
before that (so its scheduler wasn't running).

It is not theoretically safe to run `Hide()` unscheduled at its present
call site (as the value change callbacks are fired on the background
API thread). This could also be fixed by setting `AlwaysPresent = true`,
but that's a pretty ugly and unperformant change to make in general.
2020-12-25 15:40:39 +01:00
Dean Herbert
e421b6d34e Update some missed variables 2020-12-25 23:36:09 +09:00
Dean Herbert
2d7f9bf290 Revert RoomCategory naming change to avoid json deserialization failures 2020-12-25 23:34:29 +09:00
Dean Herbert
e49dce2c86 Fix some missed renames 2020-12-25 15:34:13 +09:00
Dean Herbert
5d4b73baa5 RealtimeMultiplayer -> Multiplayer 2020-12-25 14:10:59 +09:00
Dean Herbert
a1384942b1 Timeshift -> Playlists at a code level 2020-12-25 13:11:21 +09:00
Dean Herbert
4e21bd0108
Merge pull request #11286 from peppy/rename-timeshift
Rename "timeshift" to "playlists"
2020-12-25 00:45:06 +09:00
Dean Herbert
60c7c8b63b
Pluralise playlists in tip 2020-12-25 00:44:42 +09:00
Bartłomiej Dach
6ec045f235 Distinguish primary multi screen titles in header 2020-12-24 16:18:35 +01:00
Bartłomiej Dach
db1c11073f Rename back to "room" for "realtime" multiplayer 2020-12-24 16:10:29 +01:00
Bartłomiej Dach
7f0f6d86b0 Rename {room -> playlist} on playlist room screen 2020-12-24 16:08:45 +01:00
Dean Herbert
fa14438671
Merge pull request #11285 from peppy/resort-leaderboard-less
Re-sort the leaderboard order a maximum of once a second
2020-12-25 00:05:13 +09:00
Dean Herbert
61be6197e7
Merge pull request #11290 from bdach/looping-mp-at-end-of-game
Fix multiplayer gameplay potentially looping audio after reaching end
2020-12-25 00:04:56 +09:00
Dean Herbert
1a3ef9da6d
Merge pull request #11288 from bdach/token-failure-crash-pt2
Always create realtime-specific player elements regardless of token
2020-12-24 23:09:35 +09:00
Bartłomiej Dach
a97681a5da Proxy screen transition events to subscreens in multiplayer 2020-12-24 15:07:03 +01:00
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
Bartłomiej Dach
76a7aabfe8 Always create realtime-specific player elements regardless of token 2020-12-24 14:32:30 +01:00
Dean Herbert
3a46e210d4 Change low-hanging references of "room" to "playlist" 2020-12-24 21:59:10 +09:00
Dean Herbert
aec25e2d73 Rename "timeshift" to "playlists"
This only covers the user-facing instances. Code and class name changes
will happen once things have calmed down.
2020-12-24 21:53:20 +09:00
Dean Herbert
f991448a3e Re-sort the leaderboard order a maximum of once a second 2020-12-24 21:49:38 +09:00
Bartłomiej Dach
d5c348b568 Remove explicit public access modifier from interface 2020-12-24 13:44:46 +01:00
Bartłomiej Dach
4270c29f60 Trim stray newline 2020-12-24 13:42:08 +01:00
Dean Herbert
21a4e6a3f9
Merge pull request #11282 from peppy/disallow-skipping
Disallow skipping in multiplayer
2020-12-24 21:31:02 +09:00
Dean Herbert
647cb8310a
Merge pull request #11281 from peppy/fix-ruleset-pollution
Schedule UpdateFilter calls to avoid operations occuring while at a sub screen
2020-12-24 21:30:47 +09:00
Dean Herbert
9b654c741b
Merge pull request #11283 from peppy/add-match-start-sound
Play a sound when starting a timeshift or multiplayer room
2020-12-24 21:30:24 +09:00
Dean Herbert
25ff32cdf8
Merge pull request #11284 from peppy/add-ready-changed-sound
Add sound when players change ready state
2020-12-24 21:30:06 +09:00
Dean Herbert
66a23c22e5 Fix various tests failing due to dependence on specific online data 2020-12-24 21:28:24 +09:00
Bartłomiej Dach
49103a4421
Merge branch 'master' into add-match-start-sound 2020-12-24 13:22:06 +01:00
Bartłomiej Dach
40b9d1bc5e Invert if & early-return to reduce nesting 2020-12-24 12:45:01 +01:00
Bartłomiej Dach
d5fc517fab
Merge branch 'master' into disallow-skipping 2020-12-24 12:35:22 +01:00
Bartłomiej Dach
ee5a6ff9fa Merge branch 'master' into improved-loading-experience 2020-12-24 11:59:46 +01:00
Bartłomiej Dach
261c250b46 Update outdated comment 2020-12-24 11:33:49 +01:00
Bartłomiej Dach
4fb2610c82
Merge branch 'master' into frame-bundle-accuracy 2020-12-24 11:20:06 +01: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
Bartłomiej Dach
6750f1574f
Merge branch 'master' into disallow-multiplayer-restart-retry 2020-12-24 09:45:50 +01:00
Dean Herbert
c35454081c Add sound when players change ready state 2020-12-24 17:17:45 +09:00
Dean Herbert
3148c04fb8 Play a sound when starting a timeshift or multiplayer room 2020-12-24 16:53:25 +09:00
Dean Herbert
6bd6888a93 Disallow skipping in multiplayer for now 2020-12-24 16:29:51 +09:00
Dean Herbert
5457e4598b Schedule UpdateFilter calls to avoid operations occuring while at a sub screen 2020-12-24 16:20:38 +09:00
Dean Herbert
e86e9bfae6 Don't begin gameplay until all users are in a completely prepared state 2020-12-24 15:32:55 +09:00
Dean Herbert
d66e218318 Source display accuracy from header and remove from ScoreProcessor function 2020-12-24 14:57:23 +09:00
Dean Herbert
1f80f01b53 Add accuracy to frame bundle header 2020-12-24 14:46:52 +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
61a5d3ef4a Remove double handling of restart allowance on results screen (already handled locally) 2020-12-24 13:32:35 +09:00
Dean Herbert
76935b93b6 Merge branch 'master' into disallow-multiplayer-restart-retry 2020-12-24 13:31:54 +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
Dean Herbert
15cef44351
Merge pull request #11275 from peppy/safer-user-ids
Send multiplayer user IDs via ctor for better thread safety
2020-12-24 12:20:48 +09:00
Dean Herbert
1ac93d4eeb
Merge pull request #11268 from bdach/fix-room-song-select-stuck
Fix realtime multiplayer song select getting stuck after selecting invalid beatmap
2020-12-24 11:26:07 +09:00
Dean Herbert
d6dadd12fa Send multiplayer user IDs via ctor for better thread safety 2020-12-24 10:39:15 +09:00
Bartłomiej Dach
414f886b02 Split timeshift & multiplayer "create" buttons
Multiplayer button gets new, different "Create match" text, and disable
logic in case of a dropped connection to the multiplayer server.
2020-12-23 22:03:57 +01:00
Bartłomiej Dach
c13acb609a Move out sizing logic to multiplayer screen 2020-12-23 22:03:30 +01:00
Bartłomiej Dach
05d9f23762 Move out create room button to separate class 2020-12-23 22:03:30 +01: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
Bartłomiej Dach
47020c8887 Add failing test cases 2020-12-23 21:00:47 +01:00