Dean Herbert
3334323eb7
Run updateScore
on Reset
for good measure
2023-06-14 01:54:57 +09:00
Dean Herbert
0ab9a48f00
Fix score not updating when TrackHitEvents
is set to false
2023-06-13 11:44:52 +09:00
Dean Herbert
e9fb1f8932
Avoid tracking hit events altogether during migration
2023-06-13 02:15:41 +09:00
Dean Herbert
e0ebb000d6
Avoid unnecessary operations during score processor simulation
2023-06-13 02:05:11 +09:00
Dean Herbert
b3ca409339
Rename a few remaining CountAccuracyJudgement
variable
2023-05-29 20:08:22 +09:00
Dean Herbert
a789d1e49c
Add xmldoc and change naming around ScoreProcessorStatistics
a bit
2023-05-29 18:38:16 +09:00
Dan Balasescu
d45b54399b
Add back minimum/maximum accuracy
2023-05-23 18:15:32 +09:00
Dan Balasescu
3598ca9125
Adjust xmldoc
2023-05-23 18:05:10 +09:00
Dan Balasescu
8570f825ed
Consider all accuracy judgements in accuracy progress
2023-05-23 17:47:35 +09:00
Dan Balasescu
f8101fbbc7
Rename variables
2023-05-23 17:44:17 +09:00
Dan Balasescu
62d504af92
Fix base implementation of ComputeTotalScore
2023-05-23 15:59:24 +09:00
Dan Balasescu
e1feeded12
Change statistics type, remove overridability
2023-05-23 15:36:34 +09:00
Dan Balasescu
25d72d370e
Always add non-bonus change to combo portion
2023-05-20 00:24:43 +09:00
Dan Balasescu
30a296bd09
Rename parameters
2023-05-19 17:27:02 +09:00
Dan Balasescu
6c6f8621c1
Add score processor statistics to replay header
2023-05-19 16:29:24 +09:00
Dan Balasescu
d74bf2a096
Refactor for safety
2023-05-19 14:37:26 +09:00
Dan Balasescu
2ae34530f7
Avoid NaN values during ApplyBeatmap processing()
2023-05-19 14:14:34 +09:00
Dan Balasescu
7cbf48ffcf
Fix TestSceneScoring and incorrect combo calculations
2023-05-19 14:09:19 +09:00
Dan Balasescu
8b56a3f87d
Remove ClassicScoreMultiplier and DefaultScoreProcessor
2023-05-19 12:24:52 +09:00
Dan Balasescu
ef86be6d21
Fix base score added for non-accuracy-affecting objects
2023-05-18 20:32:50 +09:00
Dan Balasescu
510b8e4c78
Remove ScoreManager.Mode, handle per-use
2023-05-18 20:08:49 +09:00
Dan Balasescu
829e47d30b
Add MaxTotalScore for performance breakdown calculator
2023-05-18 17:47:25 +09:00
Dan Balasescu
f2483a1cf8
Add some helper methods, fix precision differences
...
Introduces some error at all times, but if we're to store scores everywhere as
`long`, then the same precision should be applied to the "during
gameplay" path as well.
2023-05-18 17:44:31 +09:00
Dan Balasescu
a7b623f52a
Reimplement classic scoring mode
2023-05-09 20:21:38 +09:00
Dan Balasescu
3c3c812ed6
Initial implementation of ScoreV2
2023-05-09 19:33:33 +09:00
Dean Herbert
210c5e7c53
Merge branch 'master' into decouple-mod-fails
2023-04-26 15:26:20 +09:00
Dean Herbert
1df6fc6311
Use if
statements rather than conditional case
2023-02-10 17:03:27 +09:00
Bartłomiej Dach
96c1832af4
Fix grammar in xmldoc
...
Co-authored-by: Walavouchey <36758269+Walavouchey@users.noreply.github.com>
2023-02-10 00:07:24 +01:00
Dean Herbert
cf009432cc
Centralise accuracy cutoff constants and add lookup helper methods
2023-02-09 15:41:58 +09:00
Gabe Livengood
e0f3fa1af6
remove this
in ruleset assignment
2023-01-18 12:22:27 -05:00
Dean Herbert
522bb8bcca
Use ComputeAccuracy
to get imminent accuracy
2023-01-18 18:08:58 +09:00
Dan Balasescu
bbec42c00e
Fix incorrect max combo after watching imported legacy replays
2023-01-12 14:18:21 +09:00
Dan Balasescu
d9a6e4b862
Ensure drain lenience of 1.0 completly removes drain
2023-01-11 13:01:11 +09:00
Bartłomiej Dach
6ed474d4fb
Rearrange formula for maximum accuracy
...
Feels like it's easier to understand this way. The difference of the
maximum scoring values for the entire beatmap and the max values for the
part of the beatmap that has already been played represents the act of
filling the rest of the unjudged objects with maximum results.
2022-12-30 20:56:54 +01:00
Bartłomiej Dach
8ace635249
Adjust minimum values
2022-12-30 20:55:51 +01:00
Bartłomiej Dach
bb2822a175
xmldoc pass
2022-12-30 20:55:48 +01:00
Bartłomiej Dach
6d42cc5a36
Naming pass
2022-12-30 20:30:58 +01:00
cdwcgt
3c32a50c12
add new accuracy counter display
2022-12-30 21:19:46 +09:00
Berkan Diler
c7ca4bbba5
Use generic Enum methods
2022-12-26 20:36:39 +01:00
Dean Herbert
4a7d7c6ed9
Use MaxBy
in all locations that can and update inspection level to match dotnet-build
2022-12-19 16:47:10 +09:00
Dean Herbert
27c497145f
Fix the MOTHERLOAD of undetected issues that are now visible thanks to net6.0
2022-12-16 18:16:26 +09:00
Dean Herbert
df94af4495
Inline ScoringValues
and make some more methods private
inside ScoreProcessor
2022-12-12 19:22:09 +09:00
Dan Balasescu
7a54bcac57
Remove unused using
2022-12-12 11:41:07 +09:00
Dan Balasescu
6e41efede8
Simplify dictionary construction
2022-12-12 11:40:47 +09:00
Dan Balasescu
5e8d75bbbf
Remove unused overload
2022-12-12 11:39:03 +09:00
Dan Balasescu
e9998f1690
Store maximum statistics to spectator state
2022-12-09 20:15:07 +09:00
Dan Balasescu
9e64f8dab1
Fix loss of precision when computing accuracy
2022-12-05 19:08:50 +09:00
Dan Balasescu
7bc8908ca9
Partial everything
2022-11-27 00:00:27 +09:00
Dan Balasescu
d47c46d144
Compute raw score in-line
...
Saves on an allocation (though it seems to only be a ValueType so it
shouldn't be a big deal) and a tail-call.
2022-11-18 14:22:28 +09:00
maromalo
83a3f1b82e
Add computeRawScore()
2022-11-10 14:15:20 -03:00
maromalo
64e6276397
Fix score rounding issue
2022-11-08 01:10:21 -03:00
maromalo
b7ef9b176d
Make score type consistent
2022-11-06 19:59:27 -03:00
Dan Balasescu
27d4016ccb
Add ScoreProcessor.ComputeAccuracy()
2022-09-12 18:37:55 +09:00
Dean Herbert
c6521e4c72
Rename ordering helper method
2022-09-08 17:50:27 +09:00
Acid Chicken (硫酸鶏)
54f0bb797e
refactor(osu.Game): remove nullable optouts in HitResult.cs
2022-09-07 23:32:45 +09:00
Acid Chicken (硫酸鶏)
074d2a7a3a
chore(osu.Game): provide ordering index for HitResult
2022-09-05 02:01:44 +09:00
Dean Herbert
9b830d063f
Merge pull request #20010 from smoogipoo/scoreprocessor-no-rewrite-statistics
...
Don't include misses in failed score statistics
2022-08-29 17:07:13 +09:00
Dan Balasescu
81ac0daba8
Update xmldoc
2022-08-29 15:51:12 +09:00
Dan Balasescu
b2e80ca7f0
Don't include misses in failed score statistics
2022-08-29 15:27:19 +09:00
Dan Balasescu
c0b13c7e1f
Refactor ScoreProcessor ComputeScore() methods
2022-08-29 13:51:10 +09:00
Dan Balasescu
9bca7223f6
Adjust xmldoc to better explain score contribution
2022-08-25 17:16:30 +09:00
Dan Balasescu
e2e10a8f26
Add some explanatory comments to conditions
2022-08-25 17:14:53 +09:00
Salman Ahmed
eb57ea76ab
Merge branch 'master' into legacy-combo-increase
2022-08-25 09:46:12 +03:00
Dan Balasescu
e7cbb6c63d
Fix test failures/nullability
2022-08-24 19:53:16 +09:00
Dan Balasescu
c9ff39f8c3
Add HitResult.LegacyComboIncrease
2022-08-24 19:46:41 +09:00
Dan Balasescu
5ec95c9269
Update ScoreProcessor to make use of MaximumStatistics
2022-08-24 19:46:41 +09:00
Dan Balasescu
f70af779a4
Add maximum statistics to ScoreInfo/SoloScoreInfo
2022-08-24 17:28:41 +09:00
its5Q
abca3d1b2a
Prefix common strings for context
2022-08-10 00:35:19 +10:00
its5Q
5080d62e77
Add missing localisation for settings enums
2022-08-08 21:51:23 +10:00
Salman Ahmed
a97170a272
Keep Rank
bindable enabled on score fail
2022-07-21 08:16:17 +03:00
Salman Ahmed
9df49db45f
Include bonus/ignore judgements in statistics fill logic
2022-07-21 08:13:09 +03:00
Salman Ahmed
ad09e728fd
Move Passed
assignment inside FailScore
2022-07-21 08:12:06 +03:00
Salman Ahmed
c1bcbd9c8a
Fix fail score not handling bonus/tick-only beatmaps
2022-07-21 07:20:59 +03:00
Salman Ahmed
0f0b19da4a
Populate score with remaining "miss" statistics on fail/exit
2022-07-21 06:01:36 +03:00
Salman Ahmed
c4089b71bd
Store maximum score results from simulated autoplay
2022-07-21 06:00:41 +03:00
Dan Balasescu
f8830c6850
Automated #nullable processing
2022-06-17 16:37:17 +09:00
Gabe Livengood
dc75d55f72
allow modfailcondition to arbitrarily trigger fail
2022-06-08 14:02:15 -04:00
Dan Balasescu
6351f652a2
Fix combo starting at 0 when spectating
2022-06-06 17:56:25 +09:00
Dan Balasescu
a638392e81
Rename member
2022-06-02 16:35:50 +09:00
Dan Balasescu
055845d4f5
Throw exception on access before ApplyBeatmap()
2022-06-02 16:34:45 +09:00
Dan Balasescu
e551e48697
Use ScoreInfo overload in more places
2022-06-02 11:01:46 +09:00
Dan Balasescu
425390e13b
Refactor to reduce nested conditions
2022-06-01 09:54:47 +09:00
Dan Balasescu
50c3dfca31
Apply code reviews
2022-06-01 09:54:47 +09:00
Dan Balasescu
1e0ee1b214
Expose MaximumScoringValues for user consumption
2022-05-31 19:49:37 +09:00
Dan Balasescu
93240073a6
Rename field + rewrite xmldoc a bit
2022-05-31 19:40:07 +09:00
Dan Balasescu
28d8799e11
Add overloads to + document + expose ExtractScoringValues
2022-05-31 19:40:07 +09:00
Dan Balasescu
d6d56ee22d
Fix unintentional truncation
2022-05-31 19:40:07 +09:00
Dan Balasescu
44ca350822
Reset minimal scoring values from frames
2022-05-31 19:40:07 +09:00
Dan Balasescu
20988be6bb
Fix incorrect value
2022-05-31 19:40:07 +09:00
Dan Balasescu
6ccdb61853
Use new ComputeScore() overload in more cases
2022-05-31 19:40:02 +09:00
Dan Balasescu
2289812801
Add method to compute score from ScoringValues
2022-05-31 19:39:53 +09:00
Dan Balasescu
a809a19eec
Remove getBonusScore()
2022-05-31 19:39:42 +09:00
Dan Balasescu
d0e3e50ca7
Extract score statistics directly into ScoringValues
2022-05-31 19:39:42 +09:00
Dan Balasescu
af0f934e1a
Move raw ScoreProcessor values into ScoringValues struct
2022-05-31 19:39:38 +09:00
Dan Balasescu
132c94c1b5
Remove Ruleset parameter from ResetFromReplayFrame()
2022-05-31 17:16:23 +09:00
Dan Balasescu
5ad9692467
Adjust minimum health targets to match osu-stable
2022-05-17 19:24:51 +09:00
Salman Ahmed
cccc9d7d39
Rename method to better reflect what it's doing
2022-04-27 00:03:48 +03:00
Salman Ahmed
31f64b1381
Fix HealthProcessor
fail conditions not handling multiple invocations
2022-04-26 23:27:03 +03:00
Salman Ahmed
7d32490198
Change score accuracy grading logic to be inclusive
2022-04-26 04:55:27 +03:00
Salman Ahmed
8078a8c1f8
Simplify IncreasesCombo
/BreaksCombo
helper method implementation
2022-03-18 17:18:42 +03:00
Salman Ahmed
5ec2d86c09
Update ScoreProcessor
to use new defined helper methods
2022-03-18 15:22:53 +03:00
Salman Ahmed
fc576b1369
Separate increase/break combo helper methods from AffectsCombo
2022-03-18 15:22:01 +03:00
Dan Balasescu
3a6d254d1f
Add safeguards around incorrect ruleset sources
2022-03-15 09:20:32 +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
9cc7f70872
Nullable annotate classes
2022-03-14 15:38:00 +09:00
Dan Balasescu
cf91353009
Merge branch 'master' into scoreprocessor-rework
2022-03-10 16:14:28 +09:00
Dan Balasescu
c36badab4b
Add per-ruleset score multipliers for classic scoring
2022-03-10 10:26:09 +09:00
Dan Balasescu
6fd8b4d891
Safeguard method against invalid invocation
2022-03-08 22:30:44 +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
a8e99f1a95
Calculate classic score using total basic hitobject count
2022-03-08 21:49:41 +09:00
Dan Balasescu
5b6b8d1fa9
Remove GetStandardisedScore() proxy method
2022-03-08 21:49:41 +09:00
Dan Balasescu
6654977a7b
Add GetScore() overload with total hitobject count
2022-03-08 21:49:41 +09:00
Dan Balasescu
2c382bd1d9
Rename GetImmediateScore() as overload of GetScore()
2022-03-08 21:49:40 +09:00
Dan Balasescu
a352a140bc
Merge pull request #17157 from peppy/fix-statistics-json-serialisation
...
Fix incorrect serialisation of submitted scores
2022-03-08 20:20:31 +09:00
Dan Balasescu
a172fc6cb8
Add IsBasic() and IsTick() extensions on HitResult
2022-03-08 18:19:12 +09:00
Dean Herbert
589a40ca2d
Add EnumMember
naming to HitResult
to allow for correct json serialisation
2022-03-08 17:58:37 +09:00
Dean Herbert
7215f3f66b
Fix CalculateAverageHitError
throwing if there are zero HitEvent
s
2022-03-01 18:44:15 +09:00
Dean Herbert
159db38f8a
Add missing xmldoc
2022-02-28 19:14:43 +09:00
Dean Herbert
a41e1c80f1
Show hit error on results screen
...
Leading up to implementation of "local offset", this feels like a good
thing to have visible first and foremost.
2022-02-28 19:11:06 +09:00
Dan Balasescu
c466d6df94
Ensure to not multiply by 0
2022-02-21 17:19:35 +09:00
Dan Balasescu
c3b365cf6b
Scale classic score by hitobject count
2022-02-21 13:31:03 +09:00
Dean Herbert
7307e68e9c
Revert "Merge pull request #16889 from smoogipoo/remove-mod-multiplier"
...
This reverts commit 252b945d3b
, reversing
changes made to a1b39a96cf
.
2022-02-17 13:26:12 +09:00
Dan Balasescu
5dd9771c5f
Remove mod multipliers from being applied to scores
2022-02-16 16:27:27 +09:00
Dean Herbert
0f83f77d2b
Add xmldoc for new ResetFromReplayFrame
method
2022-02-01 16:52:53 +09:00
Dan Balasescu
c50577e25f
Apply suggestion from review
...
Co-authored-by: Bartłomiej Dach <dach.bartlomiej@gmail.com>
2022-02-01 10:48:41 +09:00
Dan Balasescu
4fb565e15f
Reset ScoreProcessor from statistics replay frames
2022-01-31 21:32:56 +09:00
Dan Balasescu
39e1d65976
Make ScoreProcessor write all judgement types
2022-01-31 18:53:47 +09:00
Dan Balasescu
4106ebf881
Fix mania requiring PERFECTs to maintain HP
2022-01-12 18:29:23 +09: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
40cffd1682
Expose HitEvents
publically from ScoreProcessor
2021-11-11 13:22:07 +01:00
Dean Herbert
6944151486
Apply batch fixing of built-in types using var
2021-10-27 13:04:41 +09:00
Dean Herbert
b339c149d8
Copy BaseDifficulty
to Beatmap<T>
and move all write operations across
2021-10-06 15:10:45 +09:00
Dan Balasescu
4bbff2ebf7
Merge branch 'master' into new-interfaces
2021-10-06 11:38:17 +09:00
Dean Herbert
676df55a0e
Fade display out during rewind (as the value displayed is no longer valid)
2021-10-05 15:39:29 +09:00
Dean Herbert
05996cc2e9
Add changes that got forgotted in branch surgery
2021-10-01 17:04:53 +09:00
Dean Herbert
8595eb2d11
Switch BeatmapDifficulty
usages to use interface type
2021-10-01 16:55:50 +09:00
smoogipoo
e2f7aaeb71
Fix 0 score with bonus-only maps
2021-09-02 17:00:13 +09:00
smoogipoo
31433c4b89
Apply @spaceman_atlas' quadratic factor
2021-09-02 16:26:17 +09:00
smoogipoo
bd0f385cdb
Make classic scoring a constant multiple of standardised scoring
2021-09-01 14:53:11 +09:00
Dean Herbert
e32933eb54
Avoid Enum.GetValues
in each score population pass
2021-08-26 13:37:53 +09:00
Dean Herbert
b3f60c8253
Fix date being updated on replays unexpectedly
2021-07-19 19:28:35 +09:00
Bartłomiej Dach
fb5d25405e
Replace calls to obsoleted GetOrDefault()
extension
2021-07-18 21:52:16 +02:00
smoogipoo
61b7dc1e06
Fix bonus-only maps having 700K base score
2021-04-28 03:42:29 +09:00
smoogipoo
1281993f1f
Fix bonus score not calculated from the correct statistics
2021-04-27 22:42:58 +09:00
ekrctb
d0f30b7b42
Delay map completion one frame after the last judgment
...
This is a workaround of a timing issue.
KeyCounter is disabled while break time (`HasCompleted == true`).
When the last keypress is exactly at the same time the map ends, the last frame was considered in a break time while forward play but considered not in a break time while rewinding. This inconsistency made the last keypress not decremented in the key counter when a replay is rewound.
The situation regularly happens in osu!standard because the map ends right after the player hits the last hit circle. It was caught by `TestSceneGameplayRewinding`.
This commit makes the update of the map completion delayed one frame. The problematic keypress frame is now processed strictly before the map completion, and the map completion status is correctly rewound before the keypress frame.
2021-04-13 14:29:47 +09:00
Dean Herbert
b5954a55ad
Remove empty <returns> xmldoc
2021-04-12 17:46:14 +09:00
smoogipoo
8293b06c0a
Remove obsolete code
2021-04-09 13:56:58 +09:00
Dean Herbert
701342e036
Remove accuracy rounding at a ScoreProcessor level
2021-03-25 17:43:51 +09:00
Bartłomiej Dach
2c08ce05fa
Remove game-local enum [Order] attribute
...
In favour of the newly-added framework one.
2021-01-27 22:29:52 +01:00