1
0
mirror of https://github.com/ppy/osu.git synced 2024-12-15 16:25:32 +08:00
Commit Graph

63525 Commits

Author SHA1 Message Date
Bartłomiej Dach
3944b045ed
Add extra test coverage for marking score as failed 2023-10-27 12:17:03 +02:00
Bartłomiej Dach
86a8ab6db6
Fix quick retry immediately after completion marking score as failed
Closes https://github.com/ppy/osu/issues/25247.

The scenario involved here is as follows:

1. User completes beatmap by hitting all notes.
2. `checkScoreCompleted()` determines completion, and calls
   `progressToResults(withDelay: true)`.
3. `progressToResults()` schedules `resultsDisplayDelegate`, which
   includes a call to `prepareAndImportScoreAsync()`, a second in the
   future.
4. User presses quick retry hotkey.
   This calls `Player.Restart(quickRestart: true)`,
   which invokes `Player.RestartRequested`,
   which in turn calls `PlayerLoader.restartRequested(true)`,
   which in turn causes `PlayerLoader` to make itself current,
   which means that `Player.OnExiting()` will get called.
5. `Player.OnExiting()` sees that `prepareScoreForDisplayTask` is null
   (because `prepareAndImportScoreAsync()` - which sets it -
   is scheduled to happen in the future), and as such assumes that
   the score did not complete. Thus, it marks the score as failed.
6. `Player.Restart()` after invoking `RestartRequested` calls
   `PerformExit(false)`, which then will unconditionally call
   `prepareAndImportScoreAsync()`. But the score has already been marked
   as failed.

The flow above can be described as "convoluted", but I'm not sure I have
it in me right now to try and refactor it again. Therefore, to fix,
switch the `prepareScoreForDisplayTask` null check in
`Player.OnExiting()` to check `GameplayState.HasPassed` instead, as it
is not susceptible to the same out-of-order read issue.
2023-10-27 12:17:03 +02:00
Bartłomiej Dach
7140eee870
Add failing test coverage for quick retry after completion not changing rank 2023-10-27 12:17:03 +02:00
Dean Herbert
f931f4c324
Remove reundant interface specification 2023-10-27 18:19:44 +09:00
Dean Herbert
99027485e2
Merge branch 'master' into score-encoding-cleanup 2023-10-27 18:19:28 +09:00
Dean Herbert
24b1d1e955
Fix code quality fail 2023-10-27 18:18:07 +09:00
Dean Herbert
fc25e24397
Merge branch 'master' into score-encoding-cleanup 2023-10-27 18:03:38 +09:00
Dean Herbert
344bb28469
Merge pull request #25253 from bdach/fix-double-adjustment-application
Fix `StopUsingBeatmapClock()` applying adjustments to track it was supposed to stop using
2023-10-27 17:07:50 +09:00
Dean Herbert
f165653e8d
Merge pull request #25233 from Termincc/FreezeFrame-and-Transform-Compatibility
Make FreezeFrame and Transform Incompatible
2023-10-27 16:53:23 +09:00
Dean Herbert
099d5f33fc
Merge pull request #25227 from frenzibyte/fix-tournament-tests
Use current date as default value for tournament date text boxes
2023-10-27 15:57:01 +09:00
Dan Balasescu
9a0882af69
Merge pull request #25218 from peppy/better-slider-judgement-handling
Fix out-of-order judgements when missing a slider head
2023-10-27 15:50:13 +09:00
Bartłomiej Dach
fdb81bfa4c
Rename methods to not mention "source clock" anymore 2023-10-26 19:38:52 +02:00
Bartłomiej Dach
565ae99e0d
Fix StopUsingBeatmapClock() applying adjustments to track it was supposed to stop using
- Closes https://github.com/ppy/osu/issues/25248
- Possibly also closes https://github.com/ppy/osu/issues/20475

Regressed in e33486a766.

`StopUsingBeatmapClock()` intends to, as the name says, stop operating
on the working beatmap clock to yield its usage to other components on
exit. As part of that it tries to unapply audio adjustments so that
other screens can apply theirs freely instead.

However, the aforementioned commit introduced a bug in this. Previously
to it, `track` was an alias for the `SourceClock`, which could be
mutated in an indirect way via `ChangeSource()` calls. The
aforementioned commit made `track` a `readonly` field, initialised in
constructor, which would _never_ change value. In particular, it would
_always_ be the beatmap track, which meant that
`StopUsingBeatmapClock()` would remove the adjustments from the beatmap
track, but then at the end of the method, _apply them onto that same
track again_.

This was only saved by the fact that clock adjustments are removed again
on disposal of the `MasterGameplayClockContainer()`. This - due to async
disposal pressure - could explain infrequently reported cases wherein
the track would just continue to speed up ad infinitum.

To fix, fully substitute the beatmap track for a virtual track at the
point of calling `StopUsingBeatmapClock()`.
2023-10-26 19:38:52 +02:00
Bartłomiej Dach
0482c05d7c
Add failing test case 2023-10-26 19:38:52 +02:00
Salman Ahmed
c3e87c506b
Merge pull request #25240 from bdach/fix-catch-distance-snap-grid
Fix various catch distance snap grid breakage
2023-10-26 19:27:14 +03:00
Bartłomiej Dach
7779554360
Merge branch 'master' into fix-catch-distance-snap-grid 2023-10-26 17:50:15 +02:00
Dean Herbert
a463c37320
Merge pull request #25243 from bdach/song-select-volume-scroll-blocked
Fix left side of carousel blocking volume adjust hotkeys
2023-10-27 00:23:47 +09:00
Salman Ahmed
c51513705a
Merge branch 'master' into fix-catch-distance-snap-grid 2023-10-26 17:44:33 +03:00
Salman Ahmed
3930e41759
Merge pull request #25230 from bdach/double-click-disabled-slider
Do not revert to default value when double-clicking disabled slider
2023-10-26 17:43:47 +03:00
Bartłomiej Dach
2fa2217381
Fix left side of carousel blocking volume adjust hotkeys
Closes https://github.com/ppy/osu/issues/25234.

A little ad-hoc, but probably fine...?
2023-10-26 16:26:35 +02:00
Bartłomiej Dach
5d6a58d443
Add failing test scene for scroll handling in song select 2023-10-26 16:24:16 +02:00
Salman Ahmed
54b69333f0
Merge branch 'master' into double-click-disabled-slider 2023-10-26 17:01:46 +03:00
Bartłomiej Dach
79910df959
Fix catch distance snap provider not hiding slider properly
Regressed in https://github.com/ppy/osu/pull/25171.

The old code was kinda dependent on correct order of setting `Disabled`.
`CatchHitObjectComposer` would disable distance spacing in its BDL, and
then via the base `DistancedHitObjectComposer.LoadComplete()`, the
slider would be faded out. The switch to composition broke that
ordering.

To fix, stop relying on ordering and just respond to changes as they
come. That's what bindables are for.
2023-10-26 15:46:32 +02:00
Bartłomiej Dach
359ae31204
Fix catch distance snap grid not moving
Regressed in https://github.com/ppy/osu/pull/25154.
Specifically, in 013b5fa916
and 74b86349d5.

A simple case of too-much-code-deleted-itis.
2023-10-26 15:42:50 +02:00
Bartłomiej Dach
b078748724
Merge pull request #25235 from peppy/add-ctrl-r-quick-retr
Add ability to quick retry using Ctrl-R
2023-10-26 15:27:04 +02:00
Bartłomiej Dach
cbb2a0dd70
Use both score ID types to deduplicate score on solo results screen 2023-10-26 15:09:59 +02:00
Bartłomiej Dach
c3e9f5184f
Fix SoloScoreInfo not copying over legacy score ID when converting to ScoreInfo 2023-10-26 15:09:34 +02:00
Bartłomiej Dach
900530080f
Make SoloScoreInfo implement IScoreInfo 2023-10-26 14:58:35 +02:00
Bartłomiej Dach
526ee6e140
Remove IScoreInfo : IHasNamedFiles inheritance 2023-10-26 14:58:33 +02:00
Bartłomiej Dach
66055aa08c
Merge pull request #25236 from peppy/hold-back-sharp-compress
Fix iOS AOT compilation failure due to SharpCompress library upgrade
2023-10-26 14:31:45 +02:00
Dean Herbert
238e8175ae
Add ability to quick retry using Ctrl-R
Matches osu!stable
2023-10-26 21:26:26 +09:00
Termincc
8b9b085ef5
Address mod incompatibilities
Makes FreezeFrame and Transform mods incompatible.
2023-10-26 22:15:10 +10:00
Bartłomiej Dach
dbb69419e6
Add test coverage for parsing new online ID 2023-10-26 12:39:07 +02:00
Bartłomiej Dach
3b9c4c9d53
Do not revert to default value when double-clicking disabled slider
Closes https://github.com/ppy/osu/issues/25228.
2023-10-26 12:11:26 +02:00
Bartłomiej Dach
89fec95b01
Fix cross-test data dependency by recreating slider every time 2023-10-26 12:11:26 +02:00
Bartłomiej Dach
96437c4518
Fix tests specifying float precision for double bindable
Would cause assignments to `.Value` to become imprecise even if the
underlying bindable could represent the value 100% accurately.
2023-10-26 12:06:03 +02:00
Bartłomiej Dach
910d74fdda
Add failing test coverage for double-click on disabled sliders 2023-10-26 11:59:38 +02:00
Dean Herbert
4cca70ee19
Fix iOS AOT compilation failure due to SharpCompress library upgrade 2023-10-26 17:42:28 +09:00
Salman Ahmed
84102cd51e Use current date as default value for tournament date text box 2023-10-26 10:46:04 +03:00
Salman Ahmed
e949b1f613 Fix failing tests 2023-10-26 10:36:57 +03:00
Bartłomiej Dach
2ba02416c2
Revert test changes fully to clean up diff 2023-10-26 09:14:59 +02:00
Bartłomiej Dach
ca4b09f8ef
Merge branch 'master' into score-encoding-cleanup 2023-10-26 09:04:05 +02:00
Bartłomiej Dach
5e059a362f
Merge pull request #25223 from peppy/prompt-before-save-for-export
Fix editor not prompting before saving beatmap for export
2023-10-25 12:03:26 +02:00
Bartłomiej Dach
4c80413551
Merge pull request #25222 from peppy/update-taiko-argon-barlines
Apply same changes to "argon" osu!taiko barline design that were applies to osu!mania
2023-10-25 11:56:52 +02:00
Bartłomiej Dach
9c9000027a
Merge pull request #25221 from peppy/fix-repeat-dim
Fix repeat circles on sliders not correctly getting dimmed
2023-10-25 11:43:46 +02:00
Dean Herbert
7dd11fc5bf
Fix null check 2023-10-25 17:55:55 +09:00
Dean Herbert
2f95e7a284
Add note about implementation being shared 2023-10-25 15:44:51 +09:00
Dean Herbert
6eafb66fdf
Fix DrawableSliderTail potentially forcing miss on head too early 2023-10-25 15:44:42 +09:00
Bartłomiej Dach
2a075065d8
Merge pull request #25217 from peppy/update-country-codes
Update country code names to match database
2023-10-25 08:31:28 +02:00
Dean Herbert
a648b32519
Merge pull request #25191 from frenzibyte/velocity-based-ball-animation
Apply velocity into legacy slider ball animation rate
2023-10-25 14:45:24 +09:00