1
0
mirror of https://github.com/ppy/osu.git synced 2025-03-07 07:17:18 +08:00

12943 Commits

Author SHA1 Message Date
Bartłomiej Dach
3c0b8af8f1
Allow unsubscribing from solo statistics updates
This is more of a safety item. To avoid potential duplicate key in
dictionary errors (and also avoid being slightly memory-leaky), allow
`SoloStatisticsWatcher` consumers to dispose of the subscriptions they
take out.
2022-12-28 08:07:48 +01:00
Bartłomiej Dach
04f9a354c3
Convert SoloResultsScreen to NRT 2022-12-28 07:54:36 +01:00
Bartłomiej Dach
e90619244d
Fix incorrect accuracy display on overall ranking view 2022-12-27 19:51:51 +01:00
Dean Herbert
df6f2ad0a1
Merge pull request #21804 from bdach/hide-global-rankings-when-presenting-scores
Only show global rankings on solo results screen when progressing from gameplay
2022-12-27 16:39:26 +08:00
integer
a0690e7ffb replay menus remembers expanded state
no messing with readonly fields
2022-12-27 00:13:46 +00:00
Bartłomiej Dach
01cf96e240
Only show global rankings on results screen when progressing from gameplay 2022-12-26 23:35:45 +01:00
Berkan Diler
c7ca4bbba5 Use generic Enum methods 2022-12-26 20:36:39 +01:00
Joseph Madamba
0dba25e0ab Refactor to just exit sub screens until lounge sub screen
Co-Authored-By: Salman Ahmed <frenzibyte@gmail.com>
2022-12-25 21:56:22 -08:00
Joseph Madamba
5232588a1f Use PerformFromScreen to exit sub screens instead 2022-12-24 20:04:45 -08:00
Joseph Madamba
00ed5d6f92 Merge remote-tracking branch 'upstream/master' into fix-op-non-current-onexiting 2022-12-24 14:01:11 -08:00
Bartłomiej Dach
36a6f3685e
Don't show global rankings display when not logged in 2022-12-24 14:35:11 +01:00
Bartłomiej Dach
da519acb20
Add overall ranking display to solo results 2022-12-24 14:35:04 +01:00
Bartłomiej Dach
3abdf557ea
Add protected method for customising statistics panel rows 2022-12-24 14:35:00 +01:00
Bartłomiej Dach
600ada46be
Add protected method for customising statistics panel 2022-12-24 14:34:54 +01:00
Bartłomiej Dach
cf0b3ec879
Merge branch 'master' into score-stats-display 2022-12-24 14:32:08 +01:00
Bartłomiej Dach
83a50816b6
Remove unused constructor param 2022-12-24 10:44:38 +01:00
Bartłomiej Dach
4e5109a649
Use plain bindable flow instead of binding to watcher directly 2022-12-24 10:27:28 +01:00
Bartłomiej Dach
c7f248e13c
Implement overall ranking display for solo results screen 2022-12-24 00:30:38 +01:00
Joseph Madamba
494886ef92 Rename Text to Metadata 2022-12-23 11:11:15 -08:00
ansel
f25439e359 Move track change subscription to LoadComplete 2022-12-23 01:54:49 +03:00
Bartłomiej Dach
676d4a0d6d
Merge branch 'master' into fix-waveform-zoom-reload 2022-12-22 23:48:50 +01:00
Salman Ahmed
0cb9b79834 Fix ZoomableScrollContainer potentially not updating content width on setup 2022-12-23 00:56:38 +03:00
Salman Ahmed
30de9ba795 Dispose previous waveform on track reload 2022-12-23 00:35:59 +03:00
Berkan Diler
08d2fbeb8e Use new ArgumentNullException.ThrowIfNull throw-helper API 2022-12-22 21:27:59 +01:00
ansel
20370bd5ae Invalidate waveform on track load 2022-12-22 20:49:09 +03:00
ansel
d0645ce151 Rewrite waveform invalidation 2022-12-22 15:59:51 +03:00
ansel
f2e8776529 Bind to clock instead of music controller 2022-12-22 15:35:53 +03:00
ansel
a18ece8610 Listen for track reload in timing screen 2022-12-22 01:24:23 +03:00
ansel
7089bb6c23 Listen for track reload in timeline 2022-12-22 01:23:59 +03:00
ansel
66a02374da Clear cached waveform on track change in editor 2022-12-22 01:23:24 +03:00
Bartłomiej Dach
6948035a3c
Ensure score submission attempt completion before notifying spectator server when exiting play early
When a `SubmittingPlayer` gameplay session ends with the successful
completion of a beatmap, `PrepareScoreForResultsAsync()` ensures that
the score submission request is sent to and responded to by osu-web
before calling `ISpectatorClient.EndPlaying()`.

While previously this was mostly an implementation detail, this becomes
important when considering that more and more server-side flows (replay
upload, notifying about score processing completion) hook into
`EndPlaying()`, and assume that by the point that message arrives at
osu-spectator-server, the score has already been submitted and has been
assigned a score ID that corresponds to the score submission token.

As it turns out, in the early-exit path (when the user exits the play
midway through, retries, or just fails), the same ordering guarantees
were not provided. The score's submission ran concurrently to the
spectator client `EndPlaying()` call, therefore creating a network
race. osu-server-spectator components that implciitly relied on the
ordering provided by the happy path, could therefore fail to unmap the
score submission token to a score ID.

Note that as written, the osu-server-spectator replay upload flow is
not really affected by this, as it self-corrects by essentially polling
the database and trying to unmap the score submission token to a score
ID for up to 30 seconds. However, this change would have the benefit of
reducing the polls required in such cases to just one DB retrieval.
2022-12-21 22:23:26 +01:00
Joseph Madamba
1d39e8d0ce Refactor MetadataSection to use generics and inheritance 2022-12-21 10:18:47 -08:00
mk56-spn
626f4b0dfd fix test failures, improve button logic 2022-12-19 16:35:20 +01:00
MK56
878e2f24c4
Merge branch 'master' into footer_V2_implementation 2022-12-19 13:19:23 +01:00
mk56-spn
407b0a0ad3 Address issues from Joehuu review 2022-12-19 11:30:23 +01: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
b64a5cbda6 Merge branch 'master' into guard-url-protocols 2022-12-19 15:46:45 +09:00
Bartłomiej Dach
fea0895f16
Call spectator EndPlaying() immediately after score submission
As it turns out, in current `master`, if a gameplay session ends
normally (i.e. by the player completing the beatmap in full), then
the spectator server `EndPlaying()` method will not be called until
`SubmittingPlayer.OnExiting()`, which in practice turns out to be
the moment where the user exits from the post-gameplay results screen
back to song select.

There is seemingly no reasonable cause for not calling this earlier. In
fact the solo spectator flow looks more broken without this call than
with, because without it the spectator view just hangs until the
spectated player exits gameplay, and *only then* shows results, rather
than do it upon normal gameplay completion.
2022-12-17 21:35:43 +01:00
mk56-spn
f3873b73e3 Clean up syntax for readability 2022-12-16 20:56:34 +01:00
Dean Herbert
ba54551313 Merge branch 'master' into guard-url-protocols 2022-12-16 18:23:16 +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
Jamie Taylor
d5b2c7dfe9
Clamp SFX panning on results screen 2022-12-16 17:19:07 +09:00
Dan Balasescu
cbee72897a
Merge pull request #21654 from Susko3/use-localisable-strings-for-dates-and-times
Use `LocalisableString`s for date and time formats
2022-12-16 16:17:14 +09:00
Dean Herbert
232f590ba3
Merge pull request #21628 from peppy/go-hard-file-writes
Use hard links on windows when importing beatmaps from a legacy osu! install
2022-12-16 14:52:57 +09:00
cdwcgt
a4d28aff6d
fix typo 2022-12-16 10:48:56 +09:00
cdwcgt
79e27c2d9d
PreviewTimePart will not show if preview time is -1 2022-12-16 10:44:07 +09:00
cdwcgt
f0246df1a9
only get; 2022-12-16 09:58:58 +09:00
Susko3
0f34d908c7 Use LocalisableStrings for date and time formats 2022-12-16 00:05:47 +01:00
cdwcgt
c164744064
Add ability to set preview time 2022-12-16 01:03:30 +09:00
mk56-spn
0c177aa7de Improve tests, simplify "updateDisplay" method 2022-12-15 16:12:34 +01:00