Dean Herbert
6455c0583b
Update usage of CircularProgress.Current
2024-03-06 12:13:10 +08:00
Dean Herbert
57daaa7fed
Add logging for GameplayClockContainer
starting or stopping
2024-03-06 04:37:11 +08:00
Bartłomiej Dach
e6f1a722cb
Remove unused field and commented-out code
2024-03-05 18:49:19 +01:00
Salman Ahmed
49b3e81e8a
Migrate DefaultPerformancePointsCounter
and rename it
2024-03-05 04:35:39 +03:00
Salman Ahmed
d7f1e50d66
Add "Argon" performance points counter
2024-03-05 03:34:29 +03:00
Salman Ahmed
3ee57cdfba
Refactor performance points test scene to support skinning
2024-03-05 03:34:25 +03:00
Salman Ahmed
92f455f199
Abstractify performance points calculation to a base class
2024-03-05 03:33:48 +03:00
Dan Balasescu
6635d9be04
Add countdown display
2024-03-04 16:50:24 +09:00
Dan Balasescu
bce3bd55e5
Fix catch by moving cursor-specific handling local
2024-03-04 16:08:17 +09:00
cdwcgt
4ad8bbb9e2
remove useless DrawablePool
2024-03-01 13:20:37 +09:00
Bartłomiej Dach
ee2dac35e0
Merge branch 'master' into taiko-slider-storyboard
2024-02-29 08:50:58 +01:00
Dean Herbert
f44aadaaa8
Merge pull request #27331 from bdach/statistics-updates-in-multi
...
Show user statistics updates on multiplayer and playlists results screens
2024-02-29 12:26:48 +08:00
Salman Ahmed
7f5f3804f1
Expose beatmap storyboard as part of GameplayState
2024-02-29 05:39:36 +03:00
Salman Ahmed
a7a758400c
Merge branch 'master' into fix-wireframe
2024-02-29 01:56:50 +03:00
Salman Ahmed
8f97f0503f
Move away from Solo
namespace
2024-02-29 01:21:17 +03:00
Salman Ahmed
c3a7e99849
Remove unnecessary max operation
2024-02-29 01:01:55 +03:00
Joseph Madamba
5ca6e8c68a
Fix some NRT changes
2024-02-28 11:03:09 -08:00
Bartłomiej Dach
ce994a7a73
Fix wireframe misalignment in argon accuracy counter
...
- Closes https://github.com/ppy/osu/issues/27385 .
- Supersedes / closes https://github.com/ppy/osu/pull/27392 .
2024-02-28 13:42:45 +01:00
Joseph Madamba
6e03384c6b
Apply NRT to SoloSpectatorPlayer
2024-02-28 00:01:16 -08:00
Joseph Madamba
8e462fbb38
Apply NRT to touched files
2024-02-27 23:58:28 -08:00
Joseph Madamba
dee57c7e72
Refactor test to only allow init of actions
2024-02-27 23:24:16 -08:00
Joseph Madamba
351160f94e
Move back/quit button from bottom left to fail overlay when spectating
2024-02-27 23:24:16 -08:00
Sheepposu
7687ab63ed
fix code formatting
2024-02-27 22:03:45 -05:00
Bartłomiej Dach
2889cf39d7
Merge pull request #27391 from smoogipoo/high-performance-session-redux
...
Use high performance session during gameplay
2024-02-27 16:28:04 +01:00
Dan Balasescu
069b400dd0
Move manager to desktop game
2024-02-27 19:36:03 +09:00
Dan Balasescu
bfb5098238
Use high performance session during gameplay
2024-02-26 22:32:48 +09:00
Dean Herbert
c686dfd361
Apply safeties for AudioFilter
usage around drawables which go non-present
2024-02-26 21:22:25 +08:00
Dean Herbert
4421ff975b
Add local function to perform iteration to better explain the "why"
2024-02-26 09:04:39 +08:00
Andrei Zavatski
f948f8ee5c
Fix HUDOverlay allocations
2024-02-25 17:59:20 +03:00
Sheepposu
4d669c56a2
implement pooling
...
Uses pooling for all analysis objects and creates the lifetime entries from replay data when the analysis container is constructed.
2024-02-23 23:32:35 -05:00
Sheepposu
45444b39d4
fix formatting issues
2024-02-22 19:01:52 -05:00
Bartłomiej Dach
eac4c5f69d
Rename {Solo -> User}StatisticsWatcher
et al.
...
The "solo" prefix is a bit unbecoming now. The updates are not only
for solo.
2024-02-22 20:36:24 +01:00
Bartłomiej Dach
0074bdc5a1
Change ResultsScreen
constructor boolean params to init-only properties
2024-02-22 20:15:03 +01:00
Bartłomiej Dach
f9e92c69a8
Merge branch 'master' into fix-skin-editor-init-fail
2024-02-22 14:08:38 +01:00
Dean Herbert
c87bc8b597
Merge pull request #27180 from bdach/better-submission-failure-messaging
...
Add better submission failure messaging
2024-02-19 21:38:23 +08:00
Bartłomiej Dach
ec26ab51d1
Use different wording
2024-02-19 13:56:21 +01:00
Salman Ahmed
583e71634f
Always bring master/music volume to 50%
2024-02-16 11:20:07 +03:00
Salman Ahmed
952c5b0d18
Use Precision.AlmostBigger
2024-02-16 11:13:41 +03:00
Salman Ahmed
9f53185fa9
Revert changes to muted notification action
2024-02-16 10:47:56 +03:00
Salman Ahmed
df40f55c07
Merge branch 'master' into mute_detection
2024-02-16 01:35:02 +03:00
Salman Ahmed
7530b1f362
Adjust comment again
2024-02-16 01:31:52 +03:00
Salman Ahmed
5431781f80
Bring back target volume to 50%
2024-02-16 01:23:26 +03:00
Salman Ahmed
d81b148b09
Remove mention of decibel units in comment
...
Decibels are irrelevant in the volume bindables, as mentioned in PR already.
2024-02-16 01:23:18 +03:00
Salman Ahmed
a9eac5924d
Remove seemingly unnecessary float casts
2024-02-16 01:18:13 +03:00
Bartłomiej Dach
898d5ce88b
Show selected submission failure messages even in solo
...
Previously, if a `SubmittingPlayer` instance deemed it okay to proceed
with gameplay despite submission failure, it would silently log all
errors and proceed, but the score would still not be submitted. This
feels a bit anti-user in the cases wherein something is genuinely wrong
with either the client or web, so things like token verification
failures or API failures are now shown as notifications to give the user
an indication that something went wrong at all.
Selected cases (non-user-playable mod, logged out, beatmap is not
online) are still logged silently because those are either known and
expected, or someone is messing with things.
2024-02-15 10:55:08 +01:00
Bartłomiej Dach
95e745c6fb
Use better messaging for selected submission failure reasons
...
These have been cropping up rather often lately, mostly courtesy of
linux users, but not only:
https://github.com/ppy/osu/issues/26840
https://github.com/ppy/osu/issues/27008
https://github.com/ppy/osu/discussions/26962
so this is a proposal for slightly improved messaging for such cases to
hopefully get users on the right track.
The original error is still logged to network log, so there's no
information loss.
2024-02-15 10:51:27 +01:00
Bartłomiej Dach
21b9fb95e2
Move SoloStatisticsWatcher
to OsuGame
...
Doesn't feel like it needs to be in base, and it being in base was
causing problems elsewhere before.
2024-02-13 14:28:24 +01:00
Bartłomiej Dach
da4ebd0681
Refactor SoloStatisticsWatcher
to no longer require explicit subscription callbacks
2024-02-13 13:49:01 +01:00
Dan Balasescu
bfeb90c1b6
Add additional gameplay metadata to room score request
2024-02-10 17:20:17 +09:00
Dan Balasescu
dcb195f3c8
Add delayed resume for taiko/catch/mania
2024-02-08 02:16:08 +09:00
Sheppsu
d255976279
Merge branch 'ppy:master' into replay-analysis-settings
2024-02-06 03:13:09 -05:00
Bartłomiej Dach
f65449375e
Merge branch 'master' into scrolling-alloc
2024-02-05 19:59:47 +01:00
Andrei Zavatski
e2e3c61c9c
Use AliveEntries where we don't need startTime order
2024-02-03 19:54:08 +03:00
Mike Will
9a5348598a
Replace aggregate rounding method with a float cast
2024-02-02 14:22:24 -05:00
Mike Will
2ab967f783
Increase precision of aggregate volume rounding
...
It should be large enough to account for true accuracy
but small enough to disregard any hair-thin inaccuracy found
at the very end of the float value.
2024-02-02 13:27:26 -05:00
Dan Balasescu
b44f77cee1
Update R# + fix inspections
2024-02-02 21:00:28 +09:00
Mike Will
29a2890582
fix code quality error #2
2024-02-02 03:47:19 -05:00
Mike Will
c60e110976
Try to fix code quality issues raised by workflow
2024-02-02 03:09:19 -05:00
Mike Will
f4a2d5f3f4
Round off inaccuracies in the aggregate volume before evaluating
2024-02-02 02:41:58 -05:00
Mike Will
3122211268
Change silence threshold and target restore volume level
2024-02-02 02:12:46 -05:00
Mike Will
dfd966e039
Improve silence detection in MutedNotification
...
Instead of checking the master and music volumes separately to
see if they're <= 1%, check the aggregate of the two volumes to
see if it's <= -60 dB.
When muted notification is activated, restore the aggregate volume
level to -30 dB.
2024-02-02 00:48:42 -05:00
Salman Ahmed
0502997ae9
Stop blocking player loader when hovering over osu! logo
2024-02-02 01:26:04 +03:00
Sheepposu
b5dbf24d27
early replay analysis settings version
...
committing early version for others in the discussion to do their own testing with it
2024-02-01 10:19:09 -05:00
Dean Herbert
a7f9f50ce5
Show a better message when score submission fails due to system clock being set wrong
2024-01-31 16:52:50 +09:00
Dean Herbert
fb24c66342
Mark ResultsScreen.Score
as nullable
...
Is nullable in playlist results at very least.
2024-01-29 16:43:26 +09:00
Dean Herbert
462dab3c90
Remove unnecessary bindable
2024-01-29 02:13:39 +09:00
Dean Herbert
f4dd84fa77
Fix various inconsistencies and document better
2024-01-29 02:10:33 +09:00
Dean Herbert
23f12e1ea3
Should not be a container
2024-01-29 01:50:27 +09:00
Andrei Zavatski
b48f99ba4b
Stop using SliderBar as a base
2024-01-28 18:06:09 +03:00
Andrei Zavatski
ed9e0fe1db
Merge branch 'master' into progress-bar-improvements
2024-01-28 17:59:29 +03:00
Andrei Zavatski
3387565ba9
Fix song progress value may go beyond 1
2024-01-27 03:11:12 +03:00
Andrei Zavatski
567d2bedbf
Refactor ArgonSongProgress for same CurrentTime meaning
2024-01-27 03:03:01 +03:00
Dean Herbert
6e3eb674f6
Move cast to local function and make direct cast
2024-01-26 12:55:36 +09:00
Andrei Zavatski
9b5b313193
Move common logic into own SongProgressBar class
2024-01-26 05:03:40 +03:00
Andrei Zavatski
d2af05b30e
Remove useless bindable from ArgonSongProgressBar
2024-01-26 04:09:00 +03:00
Andrei Zavatski
542f571dee
Remove LINQ cast in HUDOverlay
2024-01-26 01:03:22 +03:00
Andrei Zavatski
7811968582
Fix ArgonScoreCounter is still using localisation
2024-01-25 03:28:02 +03:00
Dean Herbert
02bb506cce
Avoid using .Children
for enumeration in other locations
2024-01-23 05:32:11 +09:00
Dean Herbert
069af13aaf
Reduce enumerator overhead in GameplayLeaderboard
2024-01-23 05:31:53 +09:00
Bartłomiej Dach
49c117793c
Merge pull request #26609 from peppy/fix-per-ruleset-hud-positioning
...
Fix gameplay elements not correctly offsetting to avoid per-ruleset skin layout
2024-01-22 15:00:03 +01:00
Bartłomiej Dach
95435ecd13
Merge pull request #26591 from peppy/offset-awareness
...
Show offset explanation tooltip on settings offset adjust slider bar
2024-01-22 14:59:31 +01:00
Bartłomiej Dach
b8dd78eec8
Merge branch 'master' into fix-per-ruleset-hud-positioning
2024-01-22 13:55:56 +01:00
Dean Herbert
15df6b1da1
Revert keyboard seek speed change
2024-01-22 21:47:38 +09:00
Bartłomiej Dach
99d3fcc326
Fix crash if ruleset components container is not present
2024-01-22 13:45:55 +01:00
Bartłomiej Dach
0d6c681275
Merge pull request #26649 from peppy/fix-more-allocations
...
Remove `FillFlow` overhead of argon counters
2024-01-22 12:57:16 +01:00
Bartłomiej Dach
b7f0102461
Merge pull request #26662 from peppy/fix-player-crash
...
Fix potential null reference in player screen transition handling
2024-01-22 11:07:16 +01:00
Bartłomiej Dach
1ac682e2c9
Merge branch 'master' into replay-seek-single-frame
2024-01-22 09:36:15 +01:00
Bartłomiej Dach
493d495992
Merge pull request #26605 from peppy/simplify-gameplay-pause
...
Simplify gameplay pause sequence
2024-01-22 08:49:08 +01:00
Dean Herbert
3e5fe66e58
Fix potential null reference in player screen transition handling
...
See https://github.com/ppy/osu/actions/runs/7607677219/job/20715418536?pr=26660 .
2024-01-22 16:37:56 +09:00
Dean Herbert
02369139b3
Remove FillFlow
overhead of argon counters
2024-01-21 13:22:58 +09:00
Dean Herbert
c50534c819
Move seek/step logic into ReplayPlayer
2024-01-18 20:38:15 +09:00
Dean Herbert
8c4af58109
Keep replay controls expanded by default
2024-01-18 20:13:32 +09:00
Dean Herbert
60e972cd15
Add ability to step forward/backwards single frames
2024-01-18 20:13:32 +09:00
Dean Herbert
dafff26d0e
Tidy up implementation of PlaybackSettings
2024-01-18 20:13:32 +09:00
Dean Herbert
c4e9bcd140
Remove test guarantee of audio time not advancing
2024-01-18 20:06:53 +09:00
Bartłomiej Dach
2be989b9f5
Merge pull request #26542 from peppy/non-touch-fade-button
...
Fade hold-for-menu button out completely on non-touch devices
2024-01-18 11:27:50 +01:00
Dean Herbert
ee3de9c522
Fix gameplay elements not correcly offsetting to avoid per-ruleset skin layout
...
Closes https://github.com/ppy/osu/issues/26601 .
2024-01-18 15:44:27 +09:00
Dean Herbert
8ab8c90e33
Remove "pause rate adjust" flow
2024-01-18 14:21:02 +09:00
Dean Herbert
799c74cfe5
Simplify gameplay pause sequence
2024-01-18 14:17:19 +09:00
Bartłomiej Dach
b718897b30
Merge pull request #26593 from peppy/rolling-counter-unstick
...
Change rolling counters to use quicker easing types
2024-01-17 14:37:52 +01:00
Bartłomiej Dach
5cb17bcacf
Merge pull request #26502 from frenzibyte/prevent-submission-with-invalid-mods
...
Add guard against submitting score with invalid mod instances
2024-01-17 11:39:32 +01:00
Dean Herbert
456a8e6e82
Merge pull request #26549 from bdach/hit-error-meter-pooling-bad
...
Fix `ColourHitErrorMeter` not loading pooled drawables ahead of time
2024-01-17 18:43:47 +09:00
Dean Herbert
a66ddc7813
Change rolling counters to use quicker easing types
2024-01-17 18:18:53 +09:00
Dean Herbert
cc7be137bc
Show tooltip on global offset adjust slider bar
2024-01-17 17:57:49 +09:00
Dean Herbert
123e36a999
Change display text for beatmap audio offset adjust to make more sense
2024-01-17 17:51:46 +09:00
Dean Herbert
c1c2e61723
Merge pull request #26446 from LeNitrous/add/replay-playback-controls
...
Add replay playback controls
2024-01-17 17:06:15 +09:00
Dean Herbert
e97b31d82e
Fix test failures
2024-01-17 16:40:45 +09:00
Dean Herbert
e7732caaf7
Make PlayerSettingsOverlay
's api more stringent
2024-01-17 15:13:59 +09:00
Dean Herbert
2788bd912e
Add tooltips and localisation
2024-01-17 15:12:33 +09:00
Dean Herbert
e53989faeb
Change replay playback adjustment to skew frequency, not tempo
2024-01-17 15:02:42 +09:00
Dean Herbert
042e852a3e
Adjust playback speed range to allow slower minimum speed
2024-01-17 15:02:42 +09:00
Dean Herbert
42f64c2c44
Move load procedure to async method and simplify code
2024-01-17 15:02:42 +09:00
Bartłomiej Dach
a9d086c119
Fix touch device not always activating when it should
...
See https://github.com/ppy/osu/discussions/26574
2024-01-16 17:12:40 +01:00
Dean Herbert
2be8d66d4c
Fix argon health bar showing "miss" bar for bananas
2024-01-16 15:52:18 +09:00
Dean Herbert
34905b2052
Apply NRT to new classes
2024-01-16 14:17:21 +09:00
Dean Herbert
1fd85b79db
Merge branch 'master' into argon-health-rework
2024-01-16 13:35:29 +09:00
Bartłomiej Dach
97e08f5071
Fix ColourHitErrorMeter
not loading pooled drawables ahead of time
2024-01-15 21:40:07 +01:00
Bartłomiej Dach
c5a276a7de
Merge pull request #26543 from peppy/offset-toast-limit
...
Only display offset toast when in local gameplay
2024-01-15 19:19:21 +01:00
Andrei Zavatski
8661edfc2f
Organize consts better
2024-01-15 21:07:12 +03:00
Andrei Zavatski
c406135487
Merge branch 'master' into argon-health-rework
2024-01-15 20:40:19 +03:00
Bartłomiej Dach
64e94a8b6c
Merge pull request #26544 from peppy/fix-background-dim-failure
...
Fix background dim occasionally getting in a bad state when exiting gameplay
2024-01-15 15:16:37 +01:00
Bartłomiej Dach
c5351bd14d
Fix back-to-front set
2024-01-15 14:20:07 +01:00
Bartłomiej Dach
d206acac63
Merge pull request #26540 from peppy/fix-double-counters
...
De-dupe displayed hits in judgement counter
2024-01-15 14:02:11 +01:00
Salman Ahmed
1d7b63e204
Move checking logic inside ModUtils
and somewhat optimise
2024-01-15 14:58:59 +03:00
Dean Herbert
8e32780888
Fix background dim occasionally getting in a bad state when exiting gameplay
2024-01-15 19:21:19 +09:00
Dean Herbert
2a2a4c416e
Only display offset toast when in local gameplay
2024-01-15 18:17:49 +09:00
Dean Herbert
52f8348ee3
Fade hold-for-menu button out completely on non-touch devices
2024-01-15 17:55:37 +09:00
Dean Herbert
e6453853c2
De-dupe displayed hits in judgement counter
2024-01-15 16:02:59 +09:00
Dean Herbert
0b5cc8fb10
Fix gameplay counter textures not being cached ahead of time
...
Part of https://github.com/ppy/osu/issues/26535 .
2024-01-15 14:01:21 +09:00
Salman Ahmed
0c02062780
Add guard against starting gameplay with invalid mod instances
...
Move guard to `Player` instead
2024-01-13 16:25:02 +03:00
Bartłomiej Dach
6572fa4378
Only validate playback rate when in submission context
...
Temporary workaround for https://github.com/ppy/osu/issues/26404 .
It appears that some audio files do not behave well with BASS, leading
BASS to report a contradictory state of affairs (i.e. a track that is
in playing state but also not progressing). This appears to be related
to seeking specifically, therefore only enable the validation of
playback rate in the most sensitive contexts, namely when any sort of
score submission is involved.
2024-01-12 14:59:15 +01:00
Andrei Zavatski
c1e4e51a5f
Add comment explaining negative container padding
2024-01-12 15:34:07 +03:00
Andrei Zavatski
8d4ba6d466
Remove PathPadding property
2024-01-12 15:30:19 +03:00
Nitrous
ccbba8a00b
Avoid NRE due to a beatmap loading with no hit objects.
2024-01-12 17:19:59 +08:00
Nitrous
c545a9c242
remove extra new line
2024-01-12 15:13:38 +08:00
Nitrous
c404628113
move creation of PlaybackSettings
to ReplayPlayer
2024-01-12 15:12:02 +08:00
Andrei Zavatski
e861661037
Remove invalidations in update
...
oops
2024-01-12 03:03:41 +03:00
Andrei Zavatski
101a26a53e
Update start and end progress in one go
2024-01-12 02:54:07 +03:00
Andrei Zavatski
bbb36da323
Don't pass start and end progress to the background
2024-01-11 18:58:40 +03:00
Andrei Zavatski
d75bf55c58
CI fixes
2024-01-11 18:28:00 +03:00
Andrei Zavatski
f1db7db259
Implement ArgonHealthDisplayBar
2024-01-11 17:52:34 +03:00
Andrei Zavatski
90ab306a96
Implement ArgonHealthDisplayBackground
2024-01-11 17:52:33 +03:00
Dean Herbert
5d6f767dbd
Reduce excessive Color4
allocations during path colour updates
2024-01-11 00:31:39 +09:00
Dean Herbert
49d13cda6b
Fix failing test by setting health on source of truth
2024-01-10 23:09:43 +09:00
Dean Herbert
f912a1ba31
Merge branch 'master' into health-less-value-changed
2024-01-10 18:03:34 +09:00
Nitrous
484e9e8ee6
Fix binding order of IsPaused
bindable and disable playback controls in spectator mode.
2024-01-09 22:09:20 +08:00
Bartłomiej Dach
92ba770314
Fix missing wireframe behind percent sign on accuracy counter
2024-01-09 14:00:58 +01:00
Bartłomiej Dach
77bf6e3244
Fix missing wireframe behind "x" sign on combo counter display
2024-01-09 13:59:27 +01:00
Dean Herbert
4110adc4c0
Fix missing wireframe on argon combo counter
2024-01-09 20:16:28 +09:00
Dean Herbert
9c7e555237
Fix initial animation not playing correctly
2024-01-09 18:27:37 +09:00
Dean Herbert
80892f3167
Fix misses not displaying properly
2024-01-09 18:18:11 +09:00
Dean Herbert
b6505ba063
Reduce colour tween overhead and mark other calls of concern
2024-01-09 18:16:54 +09:00
Dean Herbert
12a59eb34c
Remove vertex update overheads
2024-01-09 17:35:01 +09:00
Nitrous
c081ca2145
Make field to a local.
2024-01-09 16:30:48 +08:00
Dean Herbert
b3533d270c
Remove delegate overhead of HealthBarValue
/GlowBarValue
2024-01-09 17:20:49 +09:00
Nitrous
63961ea276
use RepeatingButtonBehavior
for seek buttons
2024-01-09 16:08:29 +08:00
Dean Herbert
d83b8dbdaf
Refactor ArgonHealthDisplay
to user interpolation and less bindable events
2024-01-09 16:50:27 +09:00
Dean Herbert
1837b31f9b
Remove usage of HealthDisplay.BindValueChanged
...
Health updates very often when using HP drain. Let's avoid bindable overheads.
2024-01-09 16:38:05 +09:00
Nitrous
bdecac6d79
Inverse check.
2024-01-09 15:19:54 +08:00
Nitrous
99c7685495
use GameplayClock.IsPaused
bindable instead of polling in Update
2024-01-09 15:18:21 +08:00
Dean Herbert
765d41faa9
Change second occurrence of debug.assert with early return for fallback safety
2024-01-09 14:07:48 +09:00
Dean Herbert
3f5899dae0
Fix incorrect implementation of wireframe digits
2024-01-09 14:07:48 +09:00
Nitrous
afa808695b
Make resolved properties nullable.
2024-01-09 12:48:11 +08:00
Nitrous
2e041823a1
Perform null check on gameplay state.
2024-01-09 12:24:09 +08:00
Nitrous
bb2b7d3c31
Add playback controls.
2024-01-09 12:23:01 +08:00
Dean Herbert
16ea7f9b77
Avoid completely unnecessary string allocations in ArgonCounterTextComponent
2024-01-07 14:31:22 +09:00
Dean Herbert
b809d4c068
Remove delegate overhead from argon health display's animation updates
2024-01-07 14:31:22 +09:00
Dean Herbert
91bb3f6c57
Cache argon character glyph lookups to reduce string allocations
2024-01-05 01:24:00 +09:00
Dean Herbert
705f25e4b9
Make ScoreProcessor.Rank
read-only
2024-01-04 17:13:24 +09:00
Dean Herbert
0bbc27e380
Add a gameplay configuration flag to disable fail animation
2024-01-04 17:13:24 +09:00
Bartłomiej Dach
04147eb689
Fix lack of correct default value spec
2024-01-03 11:46:28 +01:00
Bartłomiej Dach
e686a6a1dd
Fix player submission test intermittent failures due to audio playback discrepancy logic kicking in
...
See https://github.com/ppy/osu/actions/runs/7384457927/job/20087439457#step:5:133 .
2024-01-03 09:17:01 +01:00
Bartłomiej Dach
3c5e9ac9a9
Fix possible double score submission when auto-retrying via perfect mod
...
Closes https://github.com/ppy/osu/issues/26035 .
`submitOnFailOrQuit()`, as the name suggests, can be called both when
the player has failed, or when the player screen is being exited from.
Notably, when perfect mod with auto-retry is active, the two happen
almost simultaneously.
This double call exposes a data race in `submitScore()` concerning the
handling of `scoreSubmissionSource`. The race could be experimentally
confirmed by applying the following patch:
diff --git a/osu.Game/Screens/Play/SubmittingPlayer.cs b/osu.Game/Screens/Play/SubmittingPlayer.cs
index 83adf1f960..76dd29bbdb 100644
--- a/osu.Game/Screens/Play/SubmittingPlayer.cs
+++ b/osu.Game/Screens/Play/SubmittingPlayer.cs
@@ -228,6 +228,7 @@ private Task submitScore(Score score)
return Task.CompletedTask;
}
+ Logger.Log($"{nameof(scoreSubmissionSource)} is {(scoreSubmissionSource == null ? "null" : "not null")}");
if (scoreSubmissionSource != null)
return scoreSubmissionSource.Task;
@@ -237,6 +238,7 @@ private Task submitScore(Score score)
Logger.Log($"Beginning score submission (token:{token.Value})...");
+ Logger.Log($"creating new {nameof(scoreSubmissionSource)}");
scoreSubmissionSource = new TaskCompletionSource<bool>();
var request = CreateSubmissionRequest(score, token.Value);
which would result in the following log output:
[runtime] 2024-01-02 09:54:13 [verbose]: scoreSubmissionSource is null
[runtime] 2024-01-02 09:54:13 [verbose]: scoreSubmissionSource is null
[runtime] 2024-01-02 09:54:13 [verbose]: Beginning score submission (token:36780)...
[runtime] 2024-01-02 09:54:13 [verbose]: creating new scoreSubmissionSource
[runtime] 2024-01-02 09:54:13 [verbose]: Beginning score submission (token:36780)...
[runtime] 2024-01-02 09:54:13 [verbose]: creating new scoreSubmissionSource
[network] 2024-01-02 09:54:13 [verbose]: Performing request osu.Game.Online.Solo.SubmitSoloScoreRequest
[network] 2024-01-02 09:54:14 [verbose]: Request to https://dev.ppy.sh/api/v2/beatmaps/869310/solo/scores/36780 successfully completed!
[network] 2024-01-02 09:54:14 [verbose]: SubmitSoloScoreRequest finished with response size of 639 bytes
[network] 2024-01-02 09:54:14 [verbose]: Performing request osu.Game.Online.Solo.SubmitSoloScoreRequest
[runtime] 2024-01-02 09:54:14 [verbose]: Score submission completed! (token:36780 id:20247)
[network] 2024-01-02 09:54:14 [verbose]: Request to https://dev.ppy.sh/api/v2/beatmaps/869310/solo/scores/36780 successfully completed!
[network] 2024-01-02 09:54:14 [verbose]: SubmitSoloScoreRequest finished with response size of 639 bytes
[runtime] 2024-01-02 09:54:14 [error]: An unhandled error has occurred.
[runtime] 2024-01-02 09:54:14 [error]: System.InvalidOperationException: An attempt was made to transition a task to a final state when it had already completed.
[runtime] 2024-01-02 09:54:14 [error]: at osu.Game.Screens.Play.SubmittingPlayer.<>c__DisplayClass30_0.<submitScore>b__0(MultiplayerScore s) in /home/dachb/Documents/opensource/osu/osu.Game/Screens/Play/SubmittingPlayer.cs:line 250
The intention of the submission logic was to only ever create one
`scoreSubmissionSource`, and then reuse this one if a redundant
submission request was made. However, because of the temporal proximity
of fail and quit in this particular case, combined with the fact that
the calls to `submitScore()` are taking place on TPL threads, means that
there is a read-write data race on `scoreSubmissionSource`, wherein the
source can be actually created twice.
This leads to two concurrent score submission requests, which, upon
completion, attempt to transition only _the second_
`scoreSubmissionSource` to a final state (this is because the API
success/failure request callbacks capture `this`, i.e. the entire
`SubmittingPlayer` instance, rather than the `scoreSubmissionSource`
reference specifically).
To fix, ensure correct synchronisation on the read-write critical
section, which should prevent the `scoreSubmissionSource` from being
created multiple times.
2024-01-02 10:55:52 +01:00
Salman Ahmed
02f5ea200e
Fix failing tests
2023-12-30 07:41:55 +03:00
Bartłomiej Dach
6d124513e7
Fix test failures due to player bailing early after failing to load beatmap
2023-12-28 14:15:15 +01:00
Bartłomiej Dach
619b0cc69b
Fix code quality inspection
2023-12-28 14:12:28 +01:00
Bartłomiej Dach
24a80da83f
Merge branch 'master' into universal-offset-from-session-plays
2023-12-28 14:07:46 +01:00
Dean Herbert
e1a376c0a7
Fix using "Back" binding at spectator fail screen not working
2023-12-28 20:14:18 +09:00
Dean Herbert
b7f3c83514
Expose the ability to update global offset from the player loader screen
2023-12-28 20:01:34 +09:00
Bartłomiej Dach
1b7af989ec
Migrate BeatmapOffsetControl
to use session static directly
2023-12-27 19:19:27 +01:00
Bartłomiej Dach
d4423d4933
Store last set score to a SessionStatic
2023-12-27 19:13:42 +01:00
rushiiMachine
1d4db3b7a9
Fix SkinEditorOverlay
freezing when ReplayPlayer
screen exits early
...
Originally when popping in, the ReplayPlayer was loaded first (if previous screen was MainMenu), and afterwards the SkinEditor component was loaded asynchronously. However, if the ReplayPlayer screen exits quickly (like in the event the beatmap has no objects), the skin editor component has not finished initializing (this is before it was even added to the component tree, so it's still not marked `Visible`), then the screen exiting will cause `OsuGame` to call SetTarget(newScreen) -> setTarget(...) which sees that the cached `skinEditor` is not visible yet, and hides/nulls the field. This is the point where LoadComponentAsync(editor, ...) finishes, and the callback sees that the cached skinEditor field is now different (null) than the one that was loaded, and never adds it to the component tree. This occurrence is unhandled and as such the SkinEditorOverlay never hides itself, consuming all input infinitely.
This PR changes the loading to start loading the ReplayPlayer *after* the SkinEditor has been loaded and added to the component tree.
Additionally, this lowers the exit delay for ReplayPlayer and changes the "no hit objects" notification to not be an error since it's a controlled exit.
2023-12-26 12:22:00 -08:00
Dean Herbert
d70fddb6fd
Fix elapsed time being counted twice on first frame
2023-12-27 00:11:22 +09:00
Dean Herbert
225528d519
Bail from score submission if audio playback rate is too far from reality
...
Closes https://github.com/ppy/osu/issues/23149 .
2023-12-26 19:20:58 +09:00
Dean Herbert
686b2a4394
Disable positional interaction for now
2023-12-24 03:00:51 +09:00
Dean Herbert
72bec527fd
Add conditions to match stable offset adjust limitations
2023-12-24 02:36:27 +09:00
Dean Herbert
92b490f2e7
Don't bother with alt support for now
2023-12-24 01:59:48 +09:00
Dean Herbert
6f11885d4b
Add control to allow changing offset from gameplay
2023-12-23 20:51:30 +09:00
Dean Herbert
7e9522a722
Allow external use of offset text explanation
2023-12-23 20:46:12 +09:00
Dean Herbert
27a9dcc5a1
Add basic hotkey offset adjust support (via existing offset control)
2023-12-23 19:55:05 +09:00
Bartłomiej Dach
81bbdccee7
Rename ScoreInfo.{ -> Client}Version
2023-12-21 12:56:43 +01:00
Dean Herbert
a4baa0a716
Add versioning of local scores
...
For any potential future usage
2023-12-21 18:37:15 +09:00
rushiiMachine
ebbc8333e8
Prevent ExportReplay
being spammed on fail by being held down
...
This was already handled in ReplayDownloadButton (98efff0bd6/osu.Game/Screens/Ranking/ReplayDownloadButton.cs (L114-L115)
) but seemingly missed for SaveFailedScoreButton
2023-12-20 08:41:16 -08:00
Dan Balasescu
d7aca2f641
Add IApplicableHealthProcessor
2023-12-17 19:27:03 +09:00
Dean Herbert
27296c59de
Show back button when spectating
...
Avoids getting stuck at some screens.
It's a bit ugly having the back button visible like this,
but is the best approach we have for now.
2023-12-15 11:26:17 +09:00
Dean Herbert
76c4931f3a
Merge pull request #25673 from frenzibyte/fix-argon-initial-display
...
Fix `ArgonHealthDisplay` not displaying miss correctly during initial transition
2023-12-13 22:16:34 +09:00
Dean Herbert
3131d37621
Clear transformations with more fire
2023-12-13 17:00:21 +09:00
Dean Herbert
f2c6c348be
Fix HitError
Clear
methods not correctly returning pooled drawables
2023-12-13 16:13:23 +09:00
Dean Herbert
110749205d
Cache GameplayClockContainer
to allow usage of OnSeek
2023-12-13 16:13:08 +09:00
Dean Herbert
eb30a603d9
Fix typo in argument name
2023-12-13 15:01:36 +09:00