Commit Graph

36031 Commits

Author SHA1 Message Date
0425a659a8 Add null-permissive operator to manager back 2021-01-17 21:19:55 +03:00
d93a853dfd Enforce float type in the download progress path instead 2021-01-17 21:16:48 +03:00
172552d551 Use TaskCompletionSource for better awaiting 2021-01-17 21:02:33 +03:00
80f7db8db3 Add test coverage for the new multiplayer beatmap tracker 2021-01-17 00:12:14 +03:00
f0602243bf Add beatmapset file containing the eaxct beatmap in TestBeatmap solely 2021-01-17 00:12:14 +03:00
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
23c7afa573 Expose method for setting progress of archive download request 2021-01-17 00:05:51 +03:00
4778686dc4 Expose method for triggering filename-backed success in APIDownloadRequest
Exactly like in `APIRequest<T>`
2021-01-17 00:01:11 +03:00
96feaa027d Make ArchiveModelManager import method overridable (for testing purposes) 2021-01-17 00:01:11 +03:00
cf23781036 Cache beatmap tracker and bind to selected item in RoomSubScreen 2021-01-17 00:01:11 +03:00
da9c23f347 Add beatmap availability tracker component for multiplayer 2021-01-17 00:01:11 +03:00
7ad8b167cc Add overridable method for checking local availability of current model 2021-01-17 00:01:11 +03:00
04d17aadfa Add overridable method for verifying models in database 2021-01-17 00:01:11 +03:00
d9034eab26 Make model manager in DownloadTrackingComposite protected 2021-01-16 22:54:54 +03:00
eb40d3a5ba Merge pull request #11501 from peppy/fix-spinner-test-not-playing-samples 2021-01-15 20:25:57 +01:00
27db01b533 Merge branch 'master' into fix-spinner-test-not-playing-samples 2021-01-15 19:52:54 +01:00
778efc5108 Merge pull request #11498 from peppy/fix-editor-timeline-scroll-snapping
Fix editor timeline not snapping on non-precise wheel scroll
2021-01-15 18:16:04 +09:00
6adb6b6700 Fix spinner tests not playing spinning sound due to empty hitsamples 2021-01-15 17:13:52 +09:00
88a27124c0 Make long spinner test longer and fix step name 2021-01-15 17:13:27 +09:00
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
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
9f77bb07c3 Merge pull request #11464 from peppy/fix-is-connected-thread-safety
Fix non-threadsafe usage of MultiplayerClient.IsConnected
2021-01-15 14:10:02 +09:00
0a65ae8f1e Fix the beatmap carousel playing the difficulty change sample on beatmap change 2021-01-15 14:07:24 +09:00
67b5ebadf5 Merge branch 'master' into fix-is-connected-thread-safety 2021-01-15 12:56:21 +09:00
abfc5f24a3 Merge pull request #11462 from peppy/fix-participants-list
Revert polling changes to fix participant list display
2021-01-14 22:07:03 +09:00
3e8732a59f Merge branch 'master' into fix-participants-list 2021-01-14 21:30:53 +09:00
ef6245813b Merge pull request #11483 from peppy/fix-difficulty-calculation-deadlock
Fix deadlock scenario when calculating fallback difficulty
2021-01-14 21:30:25 +09:00
063acefd5c Merge branch 'master' into fix-difficulty-calculation-deadlock 2021-01-14 20:32:43 +09:00
862cb1412c Merge pull request #11410 from frenzibyte/user-beatmap-downloading-states
Add change state methods for multiplayer user beatmap availability
2021-01-14 18:42:26 +09:00
8a0b975d71 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-14 18:25:34 +09:00
6eca8eac65 Merge pull request #11479 from smoogipoo/fix-judgement-1-frame-issue
Fix default judgement text mispositioned for one frame
2021-01-14 13:14:50 +09:00
d5878db615 Fix default judgement text mispositioned for one frame 2021-01-14 12:33:33 +09:00
98858d2a9a Merge pull request #11476 from bdach/revert-low-ar-buff
Revert overlooked AR<8 speed buff
2021-01-14 11:13:37 +09:00
95acc457aa Fix stupid mistake
fuck.
2021-01-13 22:35:21 +03:00
560b1e970c Merge branch 'master' into user-beatmap-downloading-states 2021-01-13 22:31:31 +03:00
398f8762b1 Merge pull request #11474 from frenzibyte/rename-downloaded-state
Rename download state `Downloaded` to `Importing`
2021-01-13 20:31:03 +01:00
1ba586a683 Revert overlooked AR<8 speed buff
Pull request #11107 introduced changes in osu! performance calculation,
related to a scaling coefficient applied to the speed and aim skills.
The coefficient in question was dependent on the approach rate of
a map. During a post-merge review of that PR, it was spotted that
the scaling coefficient for speed also had a 10x buff applied for AR<8,
which could reach magnitudes as large as 80% on AR0, which seems quite
exorbitant. This change was not discussed or mentioned anywhere in the
review process.

Revert back to the old multiplier of 0.01 rather than 0.1 for AR<8. The
negative slope through AR0 to 8 is retained in its previous form.
2021-01-13 17:59:29 +01:00
1f12b2bd09 Rename download state Downloaded to Importing 2021-01-13 18:04:53 +03:00
10fd4cf7c9 Merge pull request #11467 from bdach/fix-multiplayer-non-host-crash
Fix non-hosts crashing on load requested
2021-01-13 11:38:59 +09:00
2d3cacca11 Fix non-hosts crashing on load requested
`onLoadRequested()` always released the `readyClickOperation` ongoing
operation, without checking whether it actually needs to/should (it
should only do so if the action initiating the operation was starting
the game by the host). This would crash all other consumers, who already
released the operation when their ready-up operation completed server
side.

To resolve, relax the constraint such that the operation can be ended
multiple times in any order. At the end of the day the thing that
matters is that the operation is done and the ready button is unblocked.
2021-01-13 00:58:53 +01:00
becd52b5d2 Merge pull request #11465 from smoogipoo/fix-taiko-conversion-2 2021-01-12 20:43:37 +01:00
7298adc9d9 Fix non-threadsafe usage of MultiplayerClient.IsConnected 2021-01-12 19:04:16 +09:00
b51b07c3a9 Fix unstable multiplayer room ordering when selection is made 2021-01-12 18:05:29 +09:00
9a22df2b88 Fix BPM multiplier not working in all cases 2021-01-12 17:50:22 +09:00
22a0f99f35 Add failing test 2021-01-12 17:49:21 +09:00
422260797b 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-12 17:26:00 +09:00
0d5fbb15ac Fix up code comments
Default value restated in xmldoc was snipped because it's made redundant
by the initialiser and possibly bound to be outdated at some point.
2021-01-11 20:31:52 +01:00
90fb67b377 Update code in-line with decided direction 2021-01-11 20:52:24 +03:00
dd809df076 Merge pull request #11118 from MiraiSubject/tourney-switching-ui
Add the ability to switch tournaments to the SetupScreen
2021-01-11 16:36:45 +09:00
f65042cf44 Add missing licence headers 2021-01-11 15:47:27 +09:00