1
0
mirror of https://github.com/ppy/osu.git synced 2024-12-15 05:02:55 +08:00
Commit Graph

13661 Commits

Author SHA1 Message Date
Bartłomiej Dach
2d5b1711f6
Share !HasPassed condition 2023-10-27 13:27:48 +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
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
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
Dean Herbert
6934e045df
Fix editor not prompting before saving beatmap for export 2023-10-25 14:39:46 +09:00
Dean Herbert
34505b3933
Merge pull request #25185 from bdach/minimum-sample-volume 2023-10-24 22:04:43 +09:00
Bartłomiej Dach
19be0055d5
Merge pull request #24921 from Pasi4K5/diff-name-search
Add ability to search for difficulty names using square brackets
2023-10-24 12:07:02 +02:00
Dean Herbert
c9161a7bfc
Remove incorrect copy paste fail 2023-10-24 17:32:01 +09:00
Bartłomiej Dach
abfe2ce0fe
Fix comment 2023-10-24 10:05:20 +02:00
Dean Herbert
fcb366af4d
Add diff= support for more advanced usages 2023-10-24 16:09:05 +09:00
Dean Herbert
6865d8894d
Simplify implementation and remove unsupported test coverage 2023-10-24 16:01:32 +09:00
Bartłomiej Dach
05d7516479
Merge pull request #25182 from peppy/song-select-scroll-improvemets
Improve mouse interactions at song select
2023-10-24 08:26:20 +02:00
Dean Herbert
1274829193
Block scroll and click operations on the left side of song select 2023-10-24 14:51:40 +09:00
Pasi4K5
c5339f440e Apply code review suggestions 2023-10-23 23:30:54 +02:00
Bartłomiej Dach
12282fff5c
Disallow setting sample volume lower than 5% in editor 2023-10-20 15:50:21 +02:00
Dean Herbert
0ae0b0c353
Fix carousel "reset position" marging not scaling with UI scale correctly 2023-10-20 20:04:26 +09:00
Dean Herbert
137a1d948d
Allow interacting with the carousel anywhere in empty space at song select 2023-10-20 20:04:11 +09:00
Susko3
5bbbca3e44 Also support D for those with muscle memory from stable 2023-10-20 12:22:00 +02:00
Susko3
4a3a4ee17f Change beatmap listing key to B to match Ctrl-B shortcut 2023-10-20 11:47:00 +02:00
Dean Herbert
52c2eb93de
Merge branch 'master' into taiko-beat-snap-grid 2023-10-19 23:53:01 +09:00
Dean Herbert
e081fa48a2
Fix various other inspections 2023-10-17 17:48:51 +09:00
Dean Herbert
5341a335a6
Bypass Parent nullability checks for now 2023-10-17 17:48:45 +09:00
Dean Herbert
2a89a25790
Add beat snap grid to osu!taiko editor
Addresses https://github.com/ppy/osu/discussions/25150.
2023-10-17 16:59:56 +09:00
Dean Herbert
1b9acdf55c
Abstract out common implementation of BeatSnapGrid 2023-10-17 16:42:52 +09:00
Bartłomiej Dach
9cd33d9bb2
Merge pull request #25139 from peppy/collection-ordering-fix
Fix collections not being sorted alphabetically in context menus
2023-10-16 10:53:43 +02:00
Dean Herbert
7139592e43
Fix collections not being sorted correctly in context menus 2023-10-16 16:03:12 +09:00
Dean Herbert
48832c64ac
Fix health bar animating when it shouldn't be
It wasn't correctly checking the current underlying health, which could
be zero in usages of `AccumulatingHealthProcessor`, for instance.

Closes #25046.
2023-10-16 13:12:04 +09:00
Jamie Taylor
d97b618d02
Use new generic-error sample in appropriate places 2023-10-13 21:06:50 +09:00
Bartłomiej Dach
5f51b8a7c9
Merge pull request #25097 from peppy/results-screen-progress-fast
Show results immediately if user hits "back" key after finishing gameplay
2023-10-13 11:54:34 +02:00
Bartłomiej Dach
79cec7707d
Privatise setter 2023-10-13 09:56:46 +02:00
Bartłomiej Dach
6c8490bc7e
Revert changes to LoungeSubScreen.Join()
- `virtual` modifier was used in mocking.
- The spacing change revert is just mostly to keep it out of the final
  diff.
2023-10-12 20:39:40 +02:00
Dean Herbert
fa47309eef
Fix exit key during storyboard outro not progressing to results 2023-10-12 19:31:54 +09:00
Dean Herbert
d174a6ce61
Remove dead code which was only there for the exit-specific scenario 2023-10-12 19:27:35 +09:00
Dean Herbert
32eda99c3a
Add missing xmldoc returns 2023-10-12 19:06:34 +09:00
Dean Herbert
56e27f1c27
Merge branch 'master' into multiplayer-invites 2023-10-12 18:17:15 +09:00
Dean Herbert
94d7a65e40
Schedule Join operations rather than using OnLoadComplete for added safety 2023-10-12 17:42:02 +09:00
Dean Herbert
242a41371c
Fix HotkeyOverlay fade out occurring when exit is blocked 2023-10-12 15:42:54 +09:00
Dean Herbert
7c0d496730
Show results immediately if user hits "back" key after finishing gameplay
I've gone ahead and matched the osu!stable behaviour for this, as it
seems like it's what people are used to and they will settle for no
less.

Closes https://github.com/ppy/osu/issues/18089.
2023-10-12 15:42:23 +09:00
Dean Herbert
b9dbc8139b
Merge branch 'master' into fix-argon-health-bar-flash 2023-10-11 00:20:08 +09:00
Bartłomiej Dach
d701e88a08
Merge pull request #25076 from peppy/fix-argon-health-bar-perf
Ensure health displays don't pile up transforms when off-screen
2023-10-10 16:33:32 +02:00
Dean Herbert
b9dadc52b7
Adjust comment to match current behaviour
Co-authored-by: Bartłomiej Dach <dach.bartlomiej@gmail.com>
2023-10-10 22:54:19 +09:00
Dean Herbert
e2e28ef0ca
Remove comment regarding inlined delegate 2023-10-10 22:12:20 +09:00
Dean Herbert
682aa06acf
Remove JudgementResult from Miss/Flash as it is not used 2023-10-10 22:10:44 +09:00
Dean Herbert
f0bd975393
Change GameplayClockContainer.Reset to directly call GameplayClock.Stop
The reasoning is explained in the inline comment, but basically this was
getting blocked by `isPaused` being in an initial `true` state (as it is
on construction), while the source clock was still `IsRunning`.

There's no real guarantee of sync between the source and the `isPaused`
bindable right now. Maybe there should be in the future, but to restore
sanity, let's ensure that a call to `Reset` can at least stop the track
as we expect.
2023-10-10 18:16:14 +09:00
Dean Herbert
100c0cf533
Fix MultiplayerPlayer never calling Reset on GameplayClockContainer
This call is responsible for ensuring the clock is in a stopped state.
2023-10-10 17:58:37 +09:00
Dean Herbert
eee7dc02da
Reduce severity of clock running check to avoid production crashes 2023-10-10 17:58:11 +09:00
Dean Herbert
4674f63655
Fix Scheduler.AddOnce not working in one location 2023-10-10 16:17:34 +09:00
Dean Herbert
7e68b64526
Avoid running finishInitialAnimation when already finished 2023-10-10 15:59:48 +09:00