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
Dean Herbert
d66e218318
Source display accuracy from header and remove from ScoreProcessor function
2020-12-24 14:57:23 +09:00
Dean Herbert
be427a4ec0
Fix realtime leaderboard showing accuracy based on final base score, not rolling
2020-12-23 14:20:35 +09:00
Bartłomiej Dach
ee33c0be93
Extract combo & accuracy ratio calculation helpers
2020-12-19 19:08:29 +01:00
Dean Herbert
f13683dc90
Correctly account for max combo of the input, rather than the global
2020-12-17 16:05:41 +09:00
Dean Herbert
41d8b84bd7
Revert MaxBaseScore to being a private field (no longe required to be public)
2020-12-17 15:47:20 +09:00
Dean Herbert
2954218897
Add method to ScoreProcessor to calculate score and accuracy from statistics
2020-12-16 16:20:29 +09:00
Bartłomiej Dach
109abc0e29
Always store standardised score when populating ScoreInfo
2020-11-10 08:41:00 +01:00
Bartłomiej Dach
7109c3b6cd
Rename variable as suggested
2020-10-07 21:06:24 +02:00
Endrik Tombak
2b6e4e575e
Award max combo portion score if max achievable is 0
2020-10-07 17:04:55 +03:00
Endrik Tombak
74af7cc503
Rework ScoreProcessor
2020-10-07 17:00:00 +03:00
smoogipoo
7890319802
Merge branch 'master' into adjust-hit-result-types
2020-10-01 16:19:07 +09:00
smoogipoo
cb6b35116a
Merge branch 'master' into scoring-standardisation
2020-10-01 12:28:51 +09:00
Dean Herbert
9d07dce5e4
Merge pull request #10251 from smoogipoo/additional-hit-results
2020-10-01 12:19:48 +09:00
smoogipoo
77651be2ca
Remove padding from HitResult
2020-09-30 21:32:50 +09:00
smoogipoo
91262620d3
Remove XMLDocs from Ok/Perfect hit results
2020-09-29 17:17:06 +09:00
smoogipoo
bad48d6d44
Merge branch 'master' into scoring-standardisation
2020-09-29 16:33:38 +09:00
smoogipoo
31fae045fa
Update judgement processors with new hit results
2020-09-29 16:33:38 +09:00
smoogipoo
6264a01ecc
Add guard against using the wrong hit result
2020-09-29 16:33:38 +09:00
smoogipoo
07226c79b6
Add xmldocs
2020-09-29 16:33:23 +09:00
smoogipoo
cee58e89a3
Pad hit results
2020-09-29 16:32:02 +09:00
smoogipoo
1a70002cdd
Split ignore into hit/miss
2020-09-29 14:41:50 +09:00
smoogipoo
9a24346a00
Fix HP drain edgecase potentially causing insta-fails
2020-09-25 23:29:40 +09:00
smoogipoo
4bcc3ca828
Add AffectsAccuracy extension
2020-09-25 22:16:14 +09:00
smoogipoo
1c4baa4e2a
Add bonus hit results and orderings
2020-09-25 20:11:27 +09:00
smoogipoo
447fd07b4e
Fix maps with only bonus score having NaN scores
2020-09-11 01:13:55 +09:00
smoogipoo
37a659b2af
Refactor/add xmldocs
2020-09-09 17:36:47 +09:00
smoogipoo
e271408fca
Move max score calculation inside ScoreProcessor
2020-09-09 16:51:53 +09:00
smoogipoo
1e5e5cae0c
Add support for standardised -> classic changes
2020-08-28 21:34:34 +09:00
smoogipoo
4d15f0fe52
Implement basic score recalculation
2020-08-28 19:16:46 +09:00
smoogipoo
a4ad0bd174
Ensure 0 score from miss judgements, add test
2020-08-18 19:51:26 +09:00
smoogipoo
6b2b3f4d4d
Expose accuracy/combo portion adjustments
2020-07-16 14:10:44 +09:00
Dean Herbert
fda45997db
Merge pull request #9530 from peppy/fix-memory-retention
...
Clean up HitEvents after use to avoid near-permanent memory retention
2020-07-12 01:27:38 +09:00
Dean Herbert
2bb0283a68
Clean up HitEvents after use to avoid near-permanent memory retention
2020-07-12 00:52:55 +09:00
smoogipoo
acfb6eecc6
Fix bonus judgements being required toward HP
2020-07-11 20:17:40 +09:00
smoogipoo
2b7fb2b71d
Rename to Position
2020-06-22 19:04:51 +09:00
smoogipoo
33fdd7466c
Merge branch 'master' into results-screen-statistics-overlapping-transition
2020-06-22 15:38:48 +09:00
smoogipoo
9fbe2fa80a
Add comments, change to clamp
2020-06-21 19:31:00 +09:00
smoogipoo
44925b3951
Reduce mania's HP drain by 20%
2020-06-21 18:05:26 +09:00
smoogipoo
740b01c049
Add xmldoc
2020-06-19 22:05:58 +09:00
smoogipoo
25abdc2903
General cleanups
2020-06-19 21:41:48 +09:00
smoogipoo
ad3bc99e7c
Fix hit event position offset not being set
2020-06-19 20:49:05 +09:00
smoogipoo
eab00ec9d9
Move hit events to the ScoreProcessor
2020-06-19 19:58:35 +09:00
smoogipoo
e98f51923a
Add timing distribution to OsuScoreProcessor
2020-06-02 23:38:24 +09:00
smoogipoo
a7f8c5935d
Expose LowestSuccessfulHitResult()
2020-06-02 23:36:56 +09:00
Bartłomiej Dach
848a3fb6d7
Take hitobject start/end times into account in drain
2020-05-11 19:06:36 +02:00
Bartłomiej Dach
1d999bb634
Integrate PeriodTracker changes
2020-05-10 18:32:38 +02:00
Bartłomiej Dach
ee2ff77b89
Merge branch 'master' into fix-draining-in-between-break-sections
2020-05-10 17:57:44 +02:00
smoogipoo
6d3a24ff01
Reorder tick hit results
2020-05-04 15:55:42 +09:00
smoogipoo
f42be7a6d7
Merge branch 'master' into sorcerer-catch-changes
2020-05-04 15:25:09 +09:00
Salman Ahmed
6f233917b1
Centralize updating HasCompleted bindable logic
2020-04-20 06:40:51 +03:00
Salman Ahmed
fc6c245de5
Replace all judged event logic with HasCompleted bindable
2020-04-19 05:36:04 +03:00
smoogipoo
ae210d567d
Add temporary solution for tick hit/miss count
2020-04-16 18:16:08 +09:00
Bartłomiej Dach
13c81db0cf
Fix incorrect classic score formula
...
Upon closer inspection the classic score formula was subtly wrong. The
version given in the wiki is:
Score = Hit Value + (Hit Value * ((Combo multiplier * Difficulty
multiplier * Mod multiplier) / 25))
The code previously used:
bonusScore + baseScore * ((1 + Math.Max(0, HighestCombo.Value - 1)
* scoreMultiplier) / 25);
which is not equivalent to the version on the wiki. The error is in the 1
factor, as in the above version it is being divided by 25, while it should
be outside the division to keep parity with the previous formula.
The tests attached in the previous commit demonstrate that this change
causes a single hit without combo to increase total score by its exact
numeric value.
2020-04-14 01:09:58 +02:00
Salman Ahmed
7fab07670e
Remove no longer necessary usage of IsBreakTime
2020-04-05 21:35:09 +03:00
Salman Ahmed
e71a9668a5
Disallow draining in non-draining sections
2020-04-05 21:34:53 +03:00
Dean Herbert
401bf1c928
Remove unnecessary checks on NotNull attributes
2020-02-23 14:30:08 +09:00
unknown
a6124ae499
fix typo on ScoreProcessor xmldoc
2020-01-27 08:24:15 +08:00
smoogipoo
91735ff367
Update MathUtils namespace usages
2020-01-09 13:43:44 +09:00
Dean Herbert
b330aec03e
Drain starting at the first hitobject, not gameplay start
2019-12-27 16:16:30 +09:00
smoogipoo
c22744de2c
Better define minimum health targets
2019-12-27 12:46:35 +09:00
smoogipoo
fbbd16b4f0
Remove healthIncreases nullability
2019-12-27 12:39:25 +09:00
smoogipoo
35f64d9aae
More comments
2019-12-26 17:54:31 +09:00
smoogipoo
f5dbd57d55
Refactor drain calculation for resiliency
2019-12-26 17:36:40 +09:00
smoogipoo
662ec2d812
Refactor gameplay-time drain limitation
2019-12-26 15:46:07 +09:00
smoogipoo
e0c1072ab2
Add xmldocs
2019-12-26 15:01:19 +09:00
smoogipoo
eba6371526
Re-implement taiko's accumulating health processor
2019-12-26 15:01:19 +09:00
smoogipoo
0454c5022d
Fix some maps potentially starting with 0 health
2019-12-26 15:00:59 +09:00
smoogipoo
90a0569660
Tweak drain values
2019-12-26 15:00:58 +09:00
smoogipoo
522847987b
Implement break/gameplay start times
2019-12-26 15:00:58 +09:00
smoogipoo
b348abcd07
Only drain health in non-break times
2019-12-26 14:59:49 +09:00
smoogipoo
977fb3d1bf
Make processors and break overlay frame-stable
2019-12-26 14:59:49 +09:00
smoogipoo
85c44b5a5a
Disable list additions during gameplay
2019-12-26 14:59:49 +09:00
smoogipoo
bd74d086fb
Remove adjustment factor
2019-12-26 14:59:49 +09:00
smoogipoo
70d2d8a2fa
Add adjustable target percentage
2019-12-26 14:59:49 +09:00
smoogipoo
a4b1c79e18
Initial implementation of HP drain
2019-12-26 14:59:49 +09:00
smoogipoo
985277da79
Add time elapsation to judgement simulation
2019-12-26 14:59:49 +09:00
smoogipoo
90cb9d9162
Simplify scoreprocesor/healthprocessor implementations
2019-12-26 14:59:49 +09:00
smoogipoo
00546787c8
Remove unused method
2019-12-24 16:52:49 +09:00
smoogipoo
50fa6c5f77
Update score on reverts
2019-12-19 20:18:23 +09:00
smoogipoo
04c3a6f8a4
Move more properties to the base class
2019-12-19 20:18:17 +09:00
smoogipoo
76f2fb378f
Separate score and health parts of ScoreProcessor
2019-12-19 20:03:14 +09:00
smoogipoo
1da8cc8690
Encapsulate common logic of ScoreProcessor
2019-12-19 19:03:27 +09:00
Huo Yaoyuan
d5994ed484
CA2208: create exceptions correctly.
2019-12-17 13:00:10 +08:00
smoogipoo
48f1dad4aa
Remove abstract ScoreProcessor class
2019-12-11 17:25:06 +09:00
Dean Herbert
4e273fc628
Return correct allowed value for Perfect
...
Co-Authored-By: Salman Ahmed <slmanarendo1950@gmail.com>
2019-10-09 19:50:05 +09:00
Dean Herbert
9f2a648432
Add full asserts
2019-10-09 19:23:37 +09:00
Dean Herbert
51bf600ea7
Use empty hitwindows instead of null
2019-10-09 19:08:31 +09:00
Dean Herbert
07fce8397b
Move reset call to ctor
2019-09-09 14:24:17 +09:00
iiSaLMaN
be803fa921
Reset score processor before starting the simulation
2019-09-07 18:15:49 +03:00
iiSaLMaN
55b2bc1ed5
Set Health default value to 1
2019-09-07 18:03:04 +03:00
Dean Herbert
b89fb5cdf7
Fix failing test
2019-09-06 16:51:30 +09:00
Dean Herbert
6ce36bd39e
Merge branch 'master' into stop-counting-to-score-after-fail
2019-09-06 16:12:53 +09:00
Dean Herbert
985375d1c6
Remove private field xmldoc
2019-09-06 15:47:01 +09:00
Dean Herbert
4031f51745
More permissive IsHitResultAllow by default
2019-09-06 15:37:30 +09:00
Dean Herbert
f925e781a9
Refactor HitWindows for legibility
2019-09-06 15:24:14 +09:00
smoogipoo
0c73c5acf3
Expose full hitobject rather than hit windows
2019-09-02 17:14:40 +09:00
smoogipoo
f2bdf94a1d
Add HitWindows to JudgementResult to indicate timing errors
2019-09-02 16:28:14 +09:00
smoogipoo
2945fef62d
Expose HasCompleted from ScoreProcessor
2019-09-02 13:04:30 +09:00
iiSaLMaN
439d825dd1
Disallow adding bonus judgements' result to statistics
2019-08-20 18:39:29 +03:00
iiSaLMaN
883102ee5d
Move score multiplier logic inside score calculation
2019-08-12 16:40:52 +03:00
Dean Herbert
29870c773c
Merge branch 'master' into stop-counting-to-score-after-fail
2019-08-09 14:16:34 +09:00
smoogipoo
a9c4b5ac4e
Add tests
2019-08-09 14:04:56 +09:00
smoogipoo
33f4b628a5
Make HasFailed private set
2019-08-09 13:42:02 +09:00
smoogipoo
88fa06efba
Refactor as proposed
2019-08-09 13:38:04 +09:00
iiSaLMaN
566d874641
Prevent failing when reverting to a hasFailedAtJudgement
2019-08-08 15:25:07 +03:00
Dean Herbert
a345955f45
Add mentions linking ScoreProcessor apply/revert methods together
2019-08-08 13:57:04 +09:00
iiSaLMaN
c77e6074f6
Disallow adding to score after the player has failed
2019-08-07 19:58:26 +03:00
smoogipoo
e57663b39c
Apply mod score multipliers
2019-07-31 17:55:22 +09:00
smoogipoo
6bfac9f8e4
Remove protected ctor
2019-07-31 17:50:13 +09:00
David Zhao
de59e038ac
Prevent non-combo affecting judgements from triggering sudden death
2019-06-21 14:29:16 +09:00
Paul Teng
1c3b768266
Use Precision.AlmostBigger
2019-05-12 09:02:22 -04:00
Paul Teng
1a6c8e91a5
Compare Health with small value
2019-05-12 08:44:20 -04:00
David Zhao
5c096cbc91
Revert mirroring condition too
2019-05-09 18:59:00 +09:00
David Zhao
9e0af723cc
Split out affectscombo change
2019-05-09 18:56:19 +09:00