Dean Herbert
da407aa827
Merge branch 'master' into kps
2022-08-20 15:24:58 +09:00
Ryuki
3de35a1518
Update calculator and tests to match changes on clocks
2022-08-18 18:40:02 +02:00
Dean Herbert
2c6fd1ec6e
Fix `GameplayClockContainer potentially resetting external seeks
2022-08-18 18:54:10 +09:00
Dean Herbert
c8764cb333
Move all usage of GameplayClock
to IGameplayClock
2022-08-15 18:30:53 +09:00
Dean Herbert
623e90a7b2
Fix div-by-zero in SongProgress
when no object duration could be calculated
2022-08-15 15:05:35 +09:00
Ryuki
2aa3a1b50d
Rename all "KeysPerSecond" usages to "ClicksPerSecond"
2022-08-14 20:12:11 +02:00
Ryuki
9dc806506e
Make ActionListener
and KeysPerSecondCalculator
not rely on events to add timestamps
2022-08-14 19:31:14 +02:00
Ryuki
e08f71797e
Change displayed metric from "KPS" to "clicks/s"
2022-08-13 04:27:26 +02:00
Ryuki
d29cba80e9
Remove useless comment in KeysPerSecondCounter
2022-08-11 11:01:16 +02:00
Ryuki
3c6461b9e4
Remove KPS acronym usage
2022-08-11 10:01:39 +02:00
Ryuki
0a94fb4039
Make KPS counter strictly depending only on KPS calculator
...
`KeysPerSecondCounter` now depends on `KeysPerSecondCalculator` via the
`BackgroundDependencyLoaderAttribute` method, making it appear only in a
gameplay context without requiring `GameplayClock` without using it.
2022-08-11 00:46:39 +02:00
Ryuki
46e372cb99
Add more readiness checks in KeysPerSecondCalculator
2022-08-11 00:43:15 +02:00
Ryuki
9e80d3f71c
Re-adjust timespan conditions in KeysPerSecondCalculator
2022-08-11 00:42:22 +02:00
Ryuki
b52a07c16a
Use DI to provide dependencies for KPS Calculator and improve input
...
gathering
KPS Calculator now uses DI to retrieve the clocks. Using `HUDOverlay` it
is now cached for `KeysPerSecondCounter`s to resolve it. This also
allows to make an "Attach" flow like `KeyCounter`.
2022-08-08 21:54:06 +02:00
HiddenNode
ed86255e2b
Use UprightUnscaledContainer instead of KeepUprightAndUnscaled
2022-08-07 13:20:22 +01:00
Ryuki
b2557a8d2d
Refactor KPS
...
- Remove '#nullable disable' in KeysPerSecondCalculator and
KeysPerSecondCounter
- Remove KeysPerSecondCalculator IDisposable implementation
- Make KeysPerSecondCalculator static instance initialized once by
KeysPerSecondCounters
- Auto transfer dependencies from KeysPerSecondCounter to
KeysPerSecondCalculator using Resolved properties
- Add internal reset logic to KeysPerSecondCalculator and make it
independent from Player
- Use GameplayClock.TrueGameplayRate to get real-time rate. If 0 then it
defaults to the last non 0 rate if no such mod is enabled
2022-08-07 00:53:00 +02:00
Ryuki
0886137e39
Prevent KeysPerSecondCounter from NRE when no instance is initialized
2022-08-05 21:03:00 +02:00
HiddenNode
b46bc5d65b
Remove empty line
2022-08-05 14:57:33 +01:00
Ryuki
24c29b7e2f
Do not add KPS calculation when gameplay rate is 0
2022-08-05 15:51:07 +02:00
HiddenNode
0243f8d6ac
Clean up
2022-08-05 14:28:15 +01:00
HiddenNode
12ef99a1a1
Fix text position
2022-08-05 12:56:08 +01:00
Ryuki
42d1bdfc95
Move KPS calculation to a standalone class
2022-08-05 04:17:01 +02:00
Dean Herbert
6ad6561e1c
Fix LegacySongProgress
incorrectly blocking mouse input from gameplay
...
Closes #19555 .
2022-08-03 17:42:29 +09:00
HiddenNode
bc21a2ed56
Remove unnecessary using directive
2022-08-02 17:41:17 +01:00
HiddenNode
78a98cdb9c
Prevent TextSprites inside SongProgressInfo from being stretched or flipped
2022-08-02 17:37:31 +01:00
HiddenNode
df85bd74d7
Keep TextSprites in SongProgressInfo upright
2022-08-01 21:46:37 +01:00
Dean Herbert
5b98a73edc
Apply nullability to SkinComponentToolbox
and split out reflection method to get all skinnable components
2022-08-01 14:04:08 +09:00
Ryuki
89855cc1d6
Change KPS Counter implementation base and add better replay integration
...
The counter implementaiton is now list based, and will not invalidate
previous hits by removing them but by testing if they are within the 1
second span, allowing better integration with replays and spectators.
2022-07-31 01:29:57 +02:00
Salman Ahmed
905bbdc8ee
Remove caching of GameplayClockContainer
in favour of GameplayClock
...
Also fixes `SongProgress` being displayed in skin editor on non-gameplay
screens, due to `GameplayClock` not marked as a required dependency.
2022-07-29 16:45:29 +03:00
Ryuki
b2e7da5aa0
Add basic Queue based implementation of KPS
2022-07-28 18:37:12 +02:00
Dean Herbert
3005ff1b9f
Merge branch 'master' into pie-chart-progress
2022-07-28 22:19:27 +09:00
Dean Herbert
86c2b7e449
Apply nullability to DefaultSongProgress
and clean up more stuff
2022-07-28 18:37:17 +09:00
Dean Herbert
ea027eda46
Move initial show to base implementation and add transition for legacy version
2022-07-28 18:29:49 +09:00
Dean Herbert
d5e5761892
Fix DefaultSongProgress
graph not resetting if time is in intro
2022-07-28 18:25:24 +09:00
Dean Herbert
7108553883
Tidy up various things everywhere
2022-07-28 18:25:14 +09:00
Nitrous
0d36907cad
apply code quality fixes
2022-07-28 15:30:45 +08:00
Nitrous
bca3994d91
set FirstHitTime
and LastHitTime
once
2022-07-28 15:25:12 +08:00
Nitrous
db62d4be3a
apply suggestions
...
- refactor `SongProgress`
- make`UpdateProgress` more readable
- enable NRT on new classes
- refactor `TestSceneSongProgress` to use `GameplayClockContainer`
2022-07-28 15:15:41 +08:00
Nitrous
9088caa377
move LegacyComboCounter
to osu.Game.Skinning
2022-07-28 08:36:26 +08:00
Nitrous
45c11f2b7b
account for gameplay start time
2022-07-28 08:01:38 +08:00
Nitrous
37e642b0bd
make SongProgress
abstract
...
- move unrelated logic to `DefaultSongProgress`
- make `LegacySongProgress` inherit `SongProgress`
2022-07-27 15:19:21 +08:00
Bartłomiej Dach
6f37487528
Replace calls to defective Humanizer methods with correct version
2022-07-18 22:34:58 +02:00
Dean Herbert
31a447fda0
Update parameter discards
2022-06-24 21:26:19 +09:00
Dan Balasescu
f8830c6850
Automated #nullable processing
2022-06-17 16:37:17 +09:00
Dean Herbert
bd9ea9bd6f
Revert most unnecessary changes
...
Turns out `AlwaysPresent` at top level is actually enough.
This reverts commit 86163d2225
.
2022-06-13 23:58:14 +09:00
Dean Herbert
86163d2225
Fix hit error meters not updating visual state when hidden
...
It is an expectation of users that when the HUD is shown after a period
of being hidden, it will visually reflect the state based on recent
judgements.
To achieve this, I've added `AlwaysPresent` and moved the transform
application to the meter level, rather than at a child level. If this is
seen as a bad direction, `AlwaysPresent` can be applied to the drawable
children and the transforms can be moved back.
Also of note, `ColourHitErrorMeter` is pretty weird. The flow class
could potentially be removed and reduce `AlwaysPresent` usage by one.
Can do that refactor as part of this PR if preferred.
Closes #18624 .
2022-06-13 16:38:57 +09:00
Dean Herbert
17eaf7bb5c
Add failing test coverage showing hit meters don't update when not visible
2022-06-13 16:36:22 +09:00
Dan Balasescu
22d998dc2a
Use new score processor in MultiplayerGameplayLeaderboard
2022-05-30 19:26:26 +09:00
Bartłomiej Dach
1641918c51
Revert "Avoid throwing unobserved exception when PerformancePointsCounter
requests timed attributes"
...
This reverts commit 19b655d75b
.
2022-05-28 15:23:28 +02:00
Bartłomiej Dach
f5026bbbeb
Bind to button's activation delay directly
2022-05-06 10:04:36 +02:00
Bartłomiej Dach
f39fcee41b
Remove commented-out code
2022-05-06 10:04:00 +02:00
Dean Herbert
78959a6e05
Add animation to denote a dangerous player exit
2022-05-06 15:02:22 +09:00
Dean Herbert
1c4aa12585
Rename non-descript Button
nested class
2022-05-06 14:45:53 +09:00
Dean Herbert
a11771c11b
Better encapsulate exposed bindables of HoldToConfirmContainer
2022-05-06 14:45:53 +09:00
Dean Herbert
be960eb092
Move dangerous hold specification to base class
2022-05-06 14:34:31 +09:00
Dean Herbert
2896612c5c
Make exiting multiplayer a dangerous operation, requiring hold
2022-05-03 16:06:04 +09:00
Joseph Madamba
5e5c8e78a6
Use existing web localisation for most hardcoded strings
2022-04-20 16:31:11 -07:00
Dean Herbert
017f3852c8
Replace incorrectly chosen ??=
with ??
2022-04-13 13:32:36 +09:00
Dean Herbert
8b1cee75fa
Use BindableLong
instead of BindableInt
for user score tracking
2022-04-12 14:13:07 +09:00
Dean Herbert
0ba95a4483
Ensure all users are shown on leaderboard (even when API lookup fails)
2022-04-12 11:54:30 +09:00
Dean Herbert
ebee9e6888
Fix MultiplayerGameplayLeaderboard
not immediately updating totals on scoring mode change
2022-04-12 11:27:27 +09:00
Dean Herbert
19b655d75b
Avoid throwing unobserved exception when PerformancePointsCounter
requests timed attributes
2022-04-11 13:30:21 +09:00
Dean Herbert
01829cf2d8
Move SkinnableInfo
error handling to lower level
...
Handling was recently added to handle the usage in
`Skin.GetDrawableCompoent`, but it turns out this is also required for
`DrawableExtensions.ApplySkinnableInfo` which can throw in a similar
fashion.
Found while working on sprite support for the editor, where this becomes
an actual issue (ie. switching to a branch where the new sprite support
is not present can cause unexpected crashes).
2022-04-01 14:30:04 +09:00
Salman Ahmed
9c19ae1df8
Remove no longer necessary ruleset field
2022-03-31 06:40:38 +03:00
Dan Balasescu
6e94a9780b
Remove ScoreInfo allocations in multi leaderboard
2022-03-31 12:23:00 +09:00
Sebastian Krajewski
cb62d3d4b9
Remove skin dependency as component is reinitialized on skin change
2022-03-30 01:09:05 +02:00
Sebastian Krajewski
7582c943a4
Use In/Out instead of {In/Out}Quad
2022-03-30 00:48:59 +02:00
Dean Herbert
8948bcce19
Restructure transforms slightly
2022-03-29 13:18:31 +09:00
Sebastian Krajewski
caf641e1ab
Remove redundant ClearTransforms
2022-03-28 23:50:35 +02:00
Sebastian Krajewski
981ef735cf
Always start small pop out from its initial size
2022-03-28 19:57:59 +02:00
Sebastian Krajewski
e3289bb080
Don't scale big pop out as much
2022-03-28 19:33:00 +02:00
Sebastian Krajewski
265b2111ef
Remove comment
2022-03-28 18:08:51 +02:00
Sebastian Krajewski
001a98e069
Fix LegacyComboCounter not unsubscribing from skin
2022-03-28 18:08:35 +02:00
Sebastian Krajewski
05a978ce8c
Update LegacyComboCounter layout and scaling
2022-03-28 16:36:37 +02:00
Salman Ahmed
ad9b119e3d
Reduce "hold for menu" radius of visibility
2022-03-19 05:04:54 +03:00
Salman Ahmed
486be83177
Calculate position adjustment distance in local parent space
2022-03-19 05:04:13 +03:00
Dean Herbert
ed90dc6d6b
Fix centering of labels using Height
instead of location to better handle rotations
2022-03-18 20:17:04 +09:00
Dean Herbert
bd488d139d
Better centre text labels for hit error meter
2022-03-18 20:11:05 +09:00
Dean Herbert
7c9fe4036c
Add setting to change the style of the early/late markers
2022-03-18 17:50:37 +09:00
Dean Herbert
919583137e
Add line style for centre marker
2022-03-18 17:50:37 +09:00
Dean Herbert
cdeab1b14e
Add setting to change the style of the centre marker
2022-03-18 17:50:37 +09:00
Dean Herbert
331cb2aa80
Add setting to show or hide the moving average arrow
2022-03-18 17:50:37 +09:00
Dean Herbert
3f92bef9df
Add setting for judgement line thickness
2022-03-18 17:50:37 +09:00
Dean Herbert
ac739c9dae
Change PerformancePointsCounter
resolution requirements to be required
...
All other similar UI components have required dependencies, so this is
mainly to bring things in line with expectations. I am using this fact
in the skin editor to only show components which can be used in the
current editor context (by `try-catch`ing their
`Activator.CreateInstance`).
2022-03-17 14:56:35 +09:00
Dan Balasescu
d80830b415
Merge pull request #17226 from peppy/skin-component-settings
...
Allow skin components to have settings
2022-03-16 17:12:11 +09:00
Dean Herbert
1814a325d8
Move GetSettingUnderlyingValue
to a SettingSource
extension method
2022-03-15 14:54:00 +09:00
Dean Herbert
6fb06d69cc
Merge branch 'master' into pp-counter-alloc-reduction
2022-03-15 13:31:57 +09:00
Dean Herbert
deb4aeb4b2
Merge pull request #17242 from smoogipoo/performance-calculator-cleanup
...
Restructure PerformanceCalculator to not require ScoreInfo argument
2022-03-15 13:31:34 +09:00
Dean Herbert
163cd48bf6
Further metrics tweaking
2022-03-14 19:27:53 +09:00
Dean Herbert
e91b3ae5f1
Move constants closer to usages
2022-03-14 19:18:47 +09:00
Dean Herbert
6eed2c35a4
Adjust visual appearance of BarHitErrorMeter
for easier reading
2022-03-14 19:16:38 +09:00
Dan Balasescu
028750936c
Apply review suggestions
2022-03-14 17:10:37 +09:00
Dan Balasescu
3fff7f4b7e
Require ScoreProcessor to receive ruleset
2022-03-14 15:51:10 +09:00
Dan Balasescu
926827207a
Reduce calculator allocations in counter
2022-03-14 14:44:06 +09:00
Dan Balasescu
4a3e3aba65
Restructure PerformanceCalculator to not require ScoreInfo argument
2022-03-14 14:25:28 +09:00
Dean Herbert
c99397f75a
Add the ability to add settings to skinnable elements
2022-03-13 17:03:25 +09:00
Dan Balasescu
f1c40bd9ed
Rework GetScore() method signatures + implementations
...
Rename legacy-facing overload to mention as much
2022-03-08 22:30:44 +09:00
Dan Balasescu
2c382bd1d9
Rename GetImmediateScore() as overload of GetScore()
2022-03-08 21:49:40 +09:00
Dean Herbert
7854a0a913
Use double
instead of float
for UIHoldActivationDelay
configuration value
...
All times use double, so let's also use double here.
2022-03-04 12:22:56 +09:00
Dean Herbert
b2efce2656
Merge branch 'master' into expandable-controls
2022-02-03 19:23:34 +09:00
Bartłomiej Dach
a94702b3ae
Remove unused parameters in LegacyComboCounter
...
No longer used since 9bb8a43bce
.
2022-02-01 21:35:41 +01:00
Bartłomiej Dach
1fa2bf5d69
Remove unused parameter from createColourBars()
...
No longer used since b61aa660c6
.
2022-02-01 21:35:40 +01:00
Dean Herbert
28c8e07e3f
Ensure hold for menu button fades out if the cursor is never moved
...
Closes https://github.com/ppy/osu/discussions/16669 .
2022-01-28 14:48:35 +09:00
Salman Ahmed
326f12f847
Add IExpandable
support for SettingsToolboxGroup
2022-01-23 05:41:16 +03:00
Susko3
19467e58c1
Remove unused params from BDL methods
2022-01-15 01:06:39 +01:00
Dean Herbert
00177a3ae1
Update usages to new naming
2022-01-06 22:54:43 +09:00
Dean Herbert
3ea7588a91
Update continuation usages to use GetCompletedResult
2022-01-06 22:53:07 +09:00
Dean Herbert
73b40e6833
Replace usage of .Result
with .WaitSafelyForResult
2022-01-04 11:51:41 +09:00
Joseph Madamba
7de43e3aba
Fix most open compound words in identifiers being closed
2021-12-27 20:26:28 -08:00
Bartłomiej Dach
5a591713ae
Fix legacy combo counter not fully hiding for rulesets that implement their own
2021-12-26 16:49:20 +01:00
Dan Balasescu
98f044881e
Merge branch 'master' into refactor-diffcalc
2021-12-22 12:31:28 +09:00
StanR
cca02a8016
Create PerformanceAttributes
2021-12-21 13:08:31 +03:00
Dean Herbert
edcbd4de6d
Fix incorrect event unbind logic
2021-12-21 13:05:26 +09:00
Dean Herbert
52db7b36fc
Move Schedule
call to base implementation of error meter for extra safety
2021-12-21 12:55:21 +09:00
Dean Herbert
28d6ff5d9c
Fix potential wrong thread mutation in ColourHitErrorMeter
2021-12-21 12:36:04 +09:00
Dean Herbert
6ec3f41839
Fix LegacyComboCounter
not handling non-default anchor/origin specifications correctly
2021-12-08 15:07:15 +09:00
Dean Herbert
1eed2436e6
Clean up unused resolved properties
2021-12-03 18:49:49 +09:00
Bartłomiej Dach
6100bf66a6
Clean up cancellation handling in WorkingBeatmap
...
After the recent changes introducing cancellation support to
`WorkingBeatmap`, it turned out that if the cancellation support was
used, `GetPlayableBeatmap()` would raise timeout exceptions rather than
the expected `OperationCanceledException`.
To that end, split off a separate overload for the typical usage, that
catches `OperationCanceledException` and converts them to beatmap load
timeout exceptions, and use normal `OperationCanceledException`s in the
overload that requires a cancellation token to work.
2021-11-20 17:23:55 +01:00
Dan Balasescu
6ebe54b183
Merge pull request #15494 from Tollii/beatmap-cancellation-token
...
Add support for cancellation tokens for beatmap difficulty calculation
2021-11-19 10:54:32 +09:00
Dean Herbert
3de8125eac
Update UI cases where repeat should not be handled
2021-11-18 13:13:36 +09:00
Dean Herbert
0715d40ea0
Merge branch 'master' into beatmap-cancellation-token
2021-11-17 11:16:10 +09:00
Dean Herbert
13f3e2eea9
Add back default timeout to GetPlayableBeatmap
2021-11-17 11:06:31 +09:00
Dean Herbert
6cca657a2d
Standardise naming of CancellationToken
parameters
2021-11-16 14:45:51 +09:00
Dean Herbert
53c0682a08
Merge branch 'master' into beatmap-cancellation-token
2021-11-16 14:43:13 +09:00
Dean Herbert
369b4ba789
Update DifficultyCalculator
to take an IRulesetInfo
2021-11-15 19:16:48 +09:00
Bartłomiej Dach
759450502f
Merge branch 'master' into pp-counter-fixed-width
2021-11-12 08:05:56 +01:00
Dean Herbert
b9f9c27770
Standardise spacing and padding between UR and PP counters
2021-11-12 13:59:22 +09:00
Dean Herbert
e31ea49dd4
Use fixed width font for performance points counter
...
Matches all other display counters for in-game metrics.
As mentioned in https://github.com/ppy/osu/discussions/15584 .
2021-11-12 13:18:47 +09:00
Bartłomiej Dach
b66758dac7
Fix missing unsubscribe from JudgementReverted
2021-11-11 18:11:18 +01:00
Bartłomiej Dach
2e3acffd1d
Perform initial update of PP counter value on load complete
2021-11-11 16:33:33 +01:00
Bartłomiej Dach
576417947e
Round unstable rate in counter rather than truncating
2021-11-11 13:36:06 +01:00
Bartłomiej Dach
69809390d3
Fix HUD unstable rate counter not including judgements before load complete
...
Also unifies UR calculation logic with the results screen statistic item
to reduce duplication.
2021-11-11 13:36:05 +01:00
Bartłomiej Dach
74c37e248d
Merge branch 'master' into master
2021-11-09 08:40:52 +01:00
Chinmay Patil
d5ad776c33
Remove decimal part of UR Counter and rename methods
2021-11-08 06:27:25 -07:00
Dean Herbert
97345ac9e6
Remove unnecessary TimeSpan timeout
parameter (CancellationToken
can now be used)
2021-11-08 14:33:32 +09:00
Dean Herbert
e338340c6a
Merge branch 'master' into beatmap-cancellation-token
2021-11-08 14:32:56 +09:00
Chinmay Patil
a8c9ad73c1
Make UR Counter isValid into a bindable boolean
2021-11-07 18:06:13 -07:00
Chinmay Patil
cc0bcf6b2c
Clean up judgement checks and clean up setter/getter for UR counter Text
2021-11-07 17:44:50 -07:00
Dean Herbert
0ecf5f201c
Rename User
to APIUser
and move to correct namespace
2021-11-07 11:26:01 +09:00
Tollii
cf0b757b16
Fix PR comments.
...
Nitpick, more cancellation token checks.
2021-11-06 16:03:53 +01:00
Tollii
f0caa10066
Add support for a provided cancellation token for GetPlayableBeatmap()
2021-11-05 23:53:48 +01:00
Chinmay Patil
77e853ce25
Optimized UR Counter and removed redundant code
2021-11-05 12:16:58 -06:00
Chinmay Patil
8bfcb89221
Fixed issue where UR counter was always invalid
2021-11-04 21:24:25 -06:00
Chinmay Patil
0ffd41bb70
Slight logical error in the setValid method
2021-11-04 14:32:28 -06:00
Chinmay Patil
8923561b05
Removed Unnessicary class in the Test file, and optimized UR counter
2021-11-04 14:27:48 -06:00
Chinmay Patil
a76878e053
A bit more formatting
2021-11-04 09:52:16 -06:00
Chinmay Patil
c568888500
Edited to remove unessicary blank lines
2021-11-04 09:47:52 -06:00
Chinmay Patil
9aa3021bbc
Added Unstable Rate Counter as a skinable element
2021-11-03 22:22:44 -06:00
Dean Herbert
6944151486
Apply batch fixing of built-in types using var
2021-10-27 13:04:41 +09:00
Dean Herbert
794b4c46cf
Split score counter class into two distinct classes to simplify usages
2021-10-10 17:56:32 +09:00