1
0
mirror of https://github.com/ppy/osu.git synced 2025-03-30 04:47:45 +08:00

22908 Commits

Author SHA1 Message Date
Dean Herbert
94fee8c31d Avoid doing a config lookup if initial conditional fails 2021-01-18 16:13:58 +09:00
Dean Herbert
1364de1166
Merge branch 'master' into beatmap-colour-setting 2021-01-18 16:07:46 +09:00
Salman Ahmed
38588ab96b Merge branch 'multiplayer-beatmap-tracker' into ready-button-clean-up 2021-01-18 10:00:31 +03:00
Salman Ahmed
b6a37c1c15 Make TriggerSuccess(filename) protected and expose in test instead 2021-01-17 22:10:30 +03:00
Salman Ahmed
ccef50e2a2 Log important message if user imported bad-checksum beatmap 2021-01-17 22:10:30 +03:00
Salman Ahmed
0425a659a8 Add null-permissive operator to manager back 2021-01-17 21:19:55 +03:00
Salman Ahmed
d93a853dfd Enforce float type in the download progress path instead 2021-01-17 21:16:48 +03:00
Salman Ahmed
585aa87c53 Fix playlist item download button never shown back after hiding 2021-01-17 19:17:14 +03:00
Dean Herbert
5e0fcc4a6c
Merge pull request #11473 from frenzibyte/explicit-search-control
Add "explicit maps" search filter control to beatmap listing
2021-01-17 23:27:15 +09:00
Dean Herbert
5278cad393 Reword setting to make more sense 2021-01-17 22:42:48 +09:00
Dean Herbert
5fd644fc57 Unify variable names 2021-01-17 22:42:48 +09:00
Bartłomiej Dach
eb53e32792 Use task completion source for room join flow
On Android, users were unable to join or create multiplayer rooms. The
root cause of that was that the both the wait and set of the
`ManualResetEvent` in `getRoomUsers` occurred on the same thread, which
created a chicken-and-egg situation - the set could not proceed until
the wait had actually completed.

Resolve by substituting the `ManualResetEvent` for a
`TaskCompletionSource` to achieve a promise-style task, which the
previous code was a crude approximation of anyway.

Closes #11385.
2021-01-17 14:40:22 +01:00
Dean Herbert
addd463d26
Merge branch 'master' into explicit-search-control 2021-01-17 21:44:25 +09:00
Dean Herbert
edb6d3907b
Merge pull request #11472 from frenzibyte/explicit-beatmap-markers
Add explicit content markers to beatmap panels and overlay
2021-01-17 21:44:10 +09:00
Bartłomiej Dach
816cc7a59b Adjust explicit label spacing on beatmap set overlay 2021-01-17 00:35:23 +01:00
Bartłomiej Dach
dee46d7ba2 Use GroupBy() instead 2021-01-16 23:42:28 +01:00
Bartłomiej Dach
bb0d289993 Split variable for readability 2021-01-16 23:24:28 +01:00
Bartłomiej Dach
1d7be6a604 Merge branch 'master' into android-multiple-import-support-suppot 2021-01-16 23:13:11 +01:00
Salman Ahmed
59ae50b0e5 Clean up ready button logic into using MultiplayerBeatmapTracker 2021-01-17 01:11:03 +03:00
Salman Ahmed
adb2605d5d Enforce double type in the download progress path
Wasn't sure where to exactly put this, or whether to split it, but it's very small change to worry about, so I guess it's fine being here
2021-01-17 00:12:14 +03:00
Salman Ahmed
23c7afa573 Expose method for setting progress of archive download request 2021-01-17 00:05:51 +03:00
Salman Ahmed
4778686dc4 Expose method for triggering filename-backed success in APIDownloadRequest
Exactly like in `APIRequest<T>`
2021-01-17 00:01:11 +03:00
Salman Ahmed
96feaa027d Make ArchiveModelManager import method overridable (for testing purposes) 2021-01-17 00:01:11 +03:00
Salman Ahmed
cf23781036 Cache beatmap tracker and bind to selected item in RoomSubScreen 2021-01-17 00:01:11 +03:00
Salman Ahmed
da9c23f347 Add beatmap availability tracker component for multiplayer 2021-01-17 00:01:11 +03:00
Salman Ahmed
7ad8b167cc Add overridable method for checking local availability of current model 2021-01-17 00:01:11 +03:00
Salman Ahmed
04d17aadfa Add overridable method for verifying models in database 2021-01-17 00:01:11 +03:00
Salman Ahmed
d9034eab26 Make model manager in DownloadTrackingComposite protected 2021-01-16 22:54:54 +03:00
Bartłomiej Dach
c80e9c08fd
Merge branch 'master' into net5.0 2021-01-16 16:07:44 +01:00
Mysfit
a3535f4b79 Further simplified beatmap colouring tests. 2021-01-16 02:09:35 -05:00
Mysfit
112967c1e8 Created base class for testing beatmap colours. 2021-01-15 23:46:46 -05:00
Bartłomiej Dach
d9b671667b Merge branch 'master' into fix-judgement-animation-conditional 2021-01-15 22:10:17 +01:00
Bartłomiej Dach
3c1a86d11d Trim braces for consistency 2021-01-15 22:04:45 +01:00
Dean Herbert
d6e6b4bbee Revert forced cloning of ControlPointInfo
This reverts commit 3c3e860dbc34d37855b79786a1abb754af1667e8.

Closes https://github.com/ppy/osu/issues/11491.
2021-01-15 17:34:59 +09:00
Dean Herbert
8a6857f151 Add support for playing a SkinnableSample without restarting it 2021-01-15 17:16:12 +09:00
Dean Herbert
b5e784ed42 Fix possibility of crash when selecting a random skin during skin import 2021-01-15 16:34:28 +09:00
Dean Herbert
831c06a3c7 Expose and consume boolean covering whether an ongoing smooth seek is running 2021-01-15 16:14:38 +09:00
Dean Herbert
04fa32bc34 Rename and add xmldoc for smooth seeking method 2021-01-15 16:14:21 +09:00
Dean Herbert
ed78be825f Fix editor timeline not snapping on non-precise wheel scroll
For wheel input with precision, we still prefer exact tracking for now.
May change this in the future based on feedback from mappers, but it
makes little sense to do non-snapped scrolling when input is coming from
a non-precise source.
2021-01-15 15:47:42 +09:00
Dean Herbert
c3049f431a
Merge branch 'master' into net5.0 2021-01-15 15:23:41 +09:00
Dean Herbert
2b578e97e5 Fix deadlock scenario when calculating fallback difficulty
The previous code would run a calcaulation for the beatmap's own ruleset
if the current one failed. While this does make sense, with the current
way we use this component (and the implementation flow) it is quite unsafe.

The to the call on `.Result` in the `catch` block, this would 100%
deadlock due to the thread concurrency of the `ThreadedTaskScheduler`
being 1. Even if the nested run could be run inline (it should be), the
task scheduler won't even get to the point of checking whether this is
feasible due to it being saturated by the already running task.

I'm not sure if we still need this fallback lookup logic. After removing
it, it's feasible that 0 stars will be returned during the scenario that
previously caused a deadlock, but I don't necessarily think this is
incorrect. There may be another reason for this needing to exist which
I'm not aware of (diffcalc?) but if that's the case we may want to move
the try-catch handling to the point of usage.

To reproduce the deadlock scenario with 100% success (the repro
instructions in the linked issue aren't that simple and require some
patience and good timing), the main portion of the lookup can be changed
to randomly trigger a nested lookup:

```
if (RNG.NextSingle() > 0.5f)
    return GetAsync(new
DifficultyCacheLookup(key.Beatmap, key.Beatmap.Ruleset,
key.OrderedMods)).Result;
else
    return new StarDifficulty(attributes);
```

After switching beatmap once or twice, pausing debug and viewing the
state of threads should show exactly what is going on.
2021-01-15 15:19:12 +09:00
Dean Herbert
ede5abdba4 Fix unstable multiplayer room ordering when selection is made 2021-01-15 15:19:12 +09:00
Dean Herbert
b8c85ef017 Revert polling changes to fix participant list display
It turns out this polling was necessary to get extra data that isn't
included in the main listing request. It was removed deemed useless, and
in order to fix the order of rooms changing when selecting a room.
Weirdly, I can't reproduce this happening any more, and on close
inspection of the code can't see how it could happen in the first place.

For now, let's revert this change and iterate from there, if/when the
same issue arises again.

I've discussed avoiding this second poll by potentially including more
data (just `user_id`s?) in the main listing request, but not 100% sure
on this - even if the returned data is minimal it's an extra join
server-side, which could cause performance issues for large numbers of
rooms.
2021-01-15 15:19:12 +09:00
Dean Herbert
e0a4a666c8 Remove unnecessary workaround (mentioned package is pinned by SignalR to a working version) 2021-01-15 15:01:16 +09:00
Dean Herbert
f42a6270bb Update framework (again) for native libs fix 2021-01-15 14:57:01 +09:00
Dean Herbert
86f66727de Update KeyBinding usages in line with interface changes 2021-01-15 14:57:01 +09:00
Dean Herbert
ebbc32adfa Change conditional used to decide legacy judgement animation to match stable
In stable, the type of legacy judgement to show is based on the presence
of particle textures in the skin. We were using the skin version
instead, which turns out to be incorrect and not what some user skins
expect.

Closes #11078.
2021-01-15 14:51:27 +09:00
Dan Balasescu
40f020c683
Merge pull request #11494 from peppy/fix-beatmap-carousel-incorrect-sample
Fix the beatmap carousel playing the difficulty change sample on beatmap change
2021-01-15 14:47:00 +09:00
Dean Herbert
0a65ae8f1e Fix the beatmap carousel playing the difficulty change sample on beatmap change 2021-01-15 14:07:24 +09:00
Mysfit
0c01a3a685 Found a better solution than TValue type checking for additional beatmap colour settings. Added unit tests for Catch Beatmap Skin settings. 2021-01-14 23:30:24 -05:00