Commit Graph

74 Commits

Author SHA1 Message Date
40b3ce0ade Clean up comments 2021-12-21 14:03:24 +03:00
cca02a8016 Create PerformanceAttributes 2021-12-21 13:08:31 +03:00
2f2006715e Slightly refactor difficulty and pp calculators 2021-12-17 23:40:23 +03:00
9f688f6291 Stop persisting Skills in DifficultyAttributes 2021-11-21 12:15:32 +09:00
fd0cae2bfb Merge branch 'master' into difficulty-attribute-helpers 2021-11-17 20:49:31 +09:00
815179f713 Use consts for attribute IDs 2021-11-17 20:31:18 +09:00
369b4ba789 Update DifficultyCalculator to take an IRulesetInfo 2021-11-15 19:16:48 +09:00
62d670a3ca Update DifficultyCalculator to take an IWorkingBeatmap 2021-11-15 19:16:48 +09:00
c8a01c35f7 Remove extra members from FromDatabaseAttributes 2021-11-15 18:11:07 +09:00
0cfd6fdf04 Add to/from database mapping functions to difficulty attributes 2021-11-15 16:06:50 +09:00
907499f73a Add json properties to difficulty attributes 2021-11-15 16:06:29 +09:00
6944151486 Apply batch fixing of built-in types using var 2021-10-27 13:04:41 +09:00
e30e5bd214 Remove int casts in other calculators 2021-10-10 16:23:35 +09:00
b339c149d8 Copy BaseDifficulty to Beatmap<T> and move all write operations across 2021-10-06 15:10:45 +09:00
5820a71652 Fix mania difficulty calculator crashing 2021-10-01 19:57:45 +09:00
176b3e7533 changed decay system to allow for customizing the currentStrain 2021-08-16 22:14:29 +00:00
fb5d25405e Replace calls to obsoleted GetOrDefault() extension 2021-07-18 21:52:16 +02:00
35d5632355 Merge pull request #13378 from Syriiin/diffcalc/refactor/auto-properties
Refactor DifficultyAttributes to use auto properties over public fields
2021-06-10 18:42:11 +09:00
85abee5fc7 Remove difficulty calculator exceptions
I don't think there's any reason difficulty calculators shouldn't be
able to calculate for autoplays.
2021-06-09 14:33:35 +09:00
d0e9f8ef90 Replace and obsolete Ranked flag with IsUserPlayable 2021-06-09 14:17:03 +09:00
f1bef989b7 Refactor DifficultyAttributes to use auto properties over public fields 2021-06-08 19:43:59 +10:00
f51413ead9 Refactor to pass clockrate in constructor rather than deriving from mods 2021-06-03 16:09:42 +10:00
85d2b1232a Refactor to abstract out strain logic into StrainSkill class
While it is the case for the existing official Skills, Skill implementations shouldn't be required to conform to a strain based approach.
There are other valid approaches to calculating skill difficulty that can be supported by abstracting the strain logic into its own StrainSkill class.
2021-04-03 20:52:39 +11:00
5b2dcea8a8 Refactor to encapsulate strain logic into Skill class
As strains are an implementation detail of the current Skill calculations, it makes sense that strain related logic should be encapsulated within the Skill class.
2021-04-03 20:47:43 +11:00
8438fce764 Merge branch 'master' into diffcalc/fix/clockrate-adjusted-decay 2021-03-26 11:47:38 +09:00
66643a97b0 Add a list of mods to Skill class
Although this isn't necessary for existing official rulesets and calculators, custom calculators can have use cases for accessing mods in difficulty calculation.
For example, accounting for the effects of visual mods.
2021-02-20 20:37:44 +11:00
442347df8e Fix clockrate adjusted difficulty calculations bug in strain decay
When starting a new section, the starting strain value was calculated using the unadjusted timing value, meaning decay curves were essentially being stretched or squashed according to the clockrate.

This caused incorrect strain peaks for any section where the peak occurs at the start of the section (none of the objects in the section added enough strain after decay to exceed the starting strain).

This bug caused star ratings with clockrates above 1 to be lower than they should and below 1 to be higher than they should.
2021-02-20 20:23:49 +11:00
26dffbfd3b Replicate hit window calculation 2020-10-14 20:40:39 +09:00
3e6ed6c9ff Add support for dual stages (keycoop) and score multiplier 2020-10-14 17:53:28 +09:00
306d876d22 Replicate stable's unstable sort 2020-10-09 21:50:20 +09:00
5017c92fe8 Combine mania skills 2020-10-09 21:47:34 +09:00
abd395a030 Remove unecessary using references. 2020-10-02 19:41:24 +02:00
0163688a17 Remove IBeatmap from PerformanceCalculator. 2020-10-02 19:24:30 +02:00
85bda29b71 Add mania max combo attribute 2020-08-28 19:16:24 +09:00
1865cd0762 Fix possible exceptions in performance calculators 2020-05-18 15:10:59 +09:00
ddb2cfc46d Use GetEndTime in Taiko and Mania 2019-12-14 18:16:13 +08:00
9ddfdab27a Remove meaningless Convert calls. 2019-12-03 20:47:00 +08:00
f925e781a9 Refactor HitWindows for legibility 2019-09-06 15:24:14 +09:00
4c150839c0 Fix potential diffcalc hitwindow nullref 2019-09-02 17:38:58 +09:00
7e9f5a0939 Add Skills to DifficultyAttributes 2019-05-29 11:22:51 +02:00
26d53d06a9 Fix remaining issues 2019-02-28 13:31:40 +09:00
d6a2fe6891 Remove excess newline 2019-02-20 10:29:08 +09:00
4efc03cdf0 Add beatmap argument + fix crashes 2019-02-19 17:56:38 +09:00
5457097342 Update with PopulateAttributes() removal 2019-02-19 17:48:00 +09:00
bf17826363 Fix post-merge errors 2019-02-19 16:30:29 +09:00
9cce9ce97c Consider aggregate peaks 2019-02-18 15:00:32 +09:00
68725dc005 Implement new difficulty calculator for Rulesets.Mania 2019-02-18 15:00:20 +09:00
a8faa942a6 Implement new difficulty calculator structure 2019-02-18 14:49:43 +09:00
ae9d5f999c Use correct DifficultyAttributes where possible 2019-02-06 21:28:42 +01:00
8617aaa2a7 Update licence header (and remove year) 2019-01-24 17:43:03 +09:00