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

63408 Commits

Author SHA1 Message Date
Dean Herbert
bb2da97096
Merge pull request #25279 from frenzibyte/tournament-date-text-box-invariant-culture
Change tournament date text box parsing to use invariant culture info
2023-10-29 00:03:00 +09:00
Salman Ahmed
c38c8e933a Change tournament date text box parsing to use invariant culture info 2023-10-28 16:52:34 +03:00
Susko3
366e41f111 Use local workaround instead of disabling clipboard entirely 2023-10-28 12:23:23 +02:00
Susko3
cfc0520481 Add failing test 2023-10-28 12:13:13 +02:00
Salman Ahmed
e76a5f9419 Fix failing tests 2023-10-28 10:18:15 +03:00
Salman Ahmed
7083c04c59 Refactor logic slightly to display team seed everywhere
This change makes the team seed display in "team intro" screen as well.
2023-10-28 09:27:15 +03:00
Salman Ahmed
81c1634d44 Display team seeds in map pool screen as well 2023-10-28 08:42:40 +03:00
Salman Ahmed
4371a1ab57 Move team seed setting from gameplay screen 2023-10-28 08:42:29 +03:00
Salman Ahmed
832e30c31a Adjust horizontal padding in tournament sprite text 2023-10-28 08:30:59 +03:00
Salman Ahmed
e2788a22b1 Add setting to configure team seed display 2023-10-28 08:30:33 +03:00
Salman Ahmed
28e331deed Support displaying team seed in TeamDisplay 2023-10-28 08:30:24 +03:00
Salman Ahmed
c5ff708c6f
Merge pull request #25267 from bdach/legacy-font-fixed-width
Fix legacy sprite texts not matching stable with respect to fixed width
2023-10-28 07:32:15 +03:00
Salman Ahmed
a53c0adae0 Remove unused using directive 2023-10-28 06:56:12 +03:00
Salman Ahmed
51b7c97cab Fix TestScenePlayerMaxDimensions bottlenecking CI 2023-10-28 06:07:49 +03:00
Salman Ahmed
6526955b09
Merge branch 'master' into legacy-font-fixed-width 2023-10-28 04:46:30 +03:00
Salman Ahmed
4bdd7b2fb8
Merge pull request #25269 from bdach/multiple-skips
Exclude video events from being accounted for when calculating storyboard time bounds
2023-10-28 04:16:36 +03:00
Salman Ahmed
bac306879a Minor reword on documentation 2023-10-28 03:18:13 +03:00
Salman Ahmed
dca5716709
Merge branch 'master' into legacy-font-fixed-width 2023-10-28 02:45:23 +03:00
Bartłomiej Dach
9ce2c1f49c
Exclude video events from being accounted for when calculating storyboard time bounds
Closes https://github.com/ppy/osu/issues/25263.

In some circumstances, stable allows skipping twice if a particularly
long storyboarded intro is being displayed:

    https://github.com/peppy/osu-stable-reference/blob/master/osu!/GameModes/Play/Player.cs#L1728-L1736

`AllowDoubleSkip` is calculated thus:

    3ea48705eb/osu!/GameModes/Play/Player.cs#L1761-L1770

and `leadInTime` is calculated thus:

    3ea48705eb/osu!/GameModes/Play/Player.cs#L1342-L1351

The key to watch out for here is `{first,last}EventTime`. `EventManager`
will calculate it on-the-fly as it adds storyboard elements:

    3ea48705eb/osu!/GameplayElements/Events/EventManager.cs#L253-L256

However, this pathway is only used for sprite, animation, sample,
and break events. Video and background events use the following pathway:

    https://github.com/peppy/osu-stable-reference/blob/master/osu!/GameplayElements/Events/EventManager.cs#L368

Note that this particular overload does not mutate either bound.
Which means that for the purposes of determining where a storyboard
starts and ends temporally, a video event's start time is essentially
ignored.

To reflect that, add a clause that excludes video events from
calculations of `{Earliest,Latest}EventTime`.
2023-10-27 22:24:17 +02:00
Bartłomiej Dach
2f9b50172e
Add failing test coverage for video events affecting storyboard time bounds 2023-10-27 22:09:33 +02:00
Bartłomiej Dach
99e590c8dd
Fix legacy sprite texts not matching stable with respect to fixed width
stable's `pSpriteText` has a `TextConstantSpacing` flag, that is
selectively enabled for some usages. In particular, these are:

- mania combo counter (not yet implemented)
- taiko combo counter (not yet implemented)
- score counter
- accuracy counter
- scoreboard entries (not yet implemented)

Everything else uses non-fixed-width fonts.

Hilariously, `LegacySpinner` _tried_ to account for this by changing
`Font` to have `fixedWidth: false` specified, only to fail to notice
that `LegacySpriteText` changes `Font` in its BDL, making the property
set do precisely nothing. For this reason, attempting to set `Font`
on a `LegacySpriteText` will now throw.
2023-10-27 20:14:39 +02:00
Bartłomiej Dach
c9cb0561f7
Move maxSizePerGlyph optional ctor param to init-only property
I'm doing this as I'm about to add more similar properties to
`LegacySpriteText` and I don't want to create a twenty-argument
constructor monstrosity.
2023-10-27 19:48:10 +02:00
Bartłomiej Dach
7a5f3b856f
Add visual test coverage for displaying hitcircles with high combo index 2023-10-27 19:43:49 +02:00
Dean Herbert
5a9d4170e8
Merge pull request #24794 from bdach/score-encoding-cleanup
Correctly handle multiple online score ID types
2023-10-28 02:29:56 +09:00
Dean Herbert
4ed30342db
Merge pull request #25264 from bdach/quick-retry-f-rank
Fix quick retry immediately after completion marking score as failed
2023-10-28 02:29:21 +09:00
Dean Herbert
e6445343b0
Merge pull request #25265 from bdach/skin-editor-freeze
Fix skin editor freezing game if opened during active gameplay
2023-10-28 02:28:54 +09:00
Bartłomiej Dach
35f30d6135
Scale back debug assertion
The import preparation task can actually be non-null when exiting even
if the player hasn't passed:

- fail beatmap
- click import button to import the failed replay
2023-10-27 14:39:58 +02:00
Bartłomiej Dach
5ad962070c
Fix skin editor freezing game if opened during active gameplay 2023-10-27 14:34:30 +02:00
Bartłomiej Dach
b5cb538004
Add failing test case for skin editor freeze 2023-10-27 14:23:41 +02:00
Bartłomiej Dach
6789a522d6
Rename test to distinguish it from test-to-come 2023-10-27 14:15:30 +02:00
Bartłomiej Dach
dc7f5cd6ed
Add preventive assertions concerning submission flow state 2023-10-27 13:30:51 +02:00
Bartłomiej Dach
2d5b1711f6
Share !HasPassed condition 2023-10-27 13:27:48 +02:00
Bartłomiej Dach
32fc19ea0d
Fix results screen test failure 2023-10-27 13:22:17 +02:00
Bartłomiej Dach
96d784e06b
Delete ScoreInfo.HasReplay as no longer needed 2023-10-27 12:39:54 +02:00
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