Dean Herbert
1ff4e2076f
Merge branch 'master' into verify-tab
2021-04-13 23:05:48 +09:00
Naxess
69da804f81
Add missing period
2021-04-13 13:57:56 +02:00
Dean Herbert
0d6890243f
Fix typo in xmldoc
2021-04-13 20:18:18 +09:00
Dean Herbert
03ba04e8ce
Split out general checks into its own verifier class (and remove static
usage)
2021-04-13 19:50:22 +09:00
Naxess
aa5fe2e9fc
Rename BeatmapVerifier
-> IBeatmapVerifier
2021-04-13 11:02:01 +02:00
Naxess
60c2494b31
Make BeatmapVerifier
an interface
2021-04-13 10:40:56 +02:00
Salman Ahmed
36510309d1
Merge EnableUserDim
and IgnoreUserSettings
to one bindable
2021-04-13 10:58:56 +03:00
ekrctb
57ba7b7cbb
Partially revert the changes of CurrentFrame
and NextFrame
for compatibility
...
Making those always non-null is postponed as when a replay's frame contains keypress the behavior is changed.
Previously, the key is pressed at the time of the first frame. But using non-null frames means the key is pressed at negative infinity.
However, I think the new way of always using non-null frames makes the client code so I plan to bundle the change to more breaking changes.
2021-04-13 15:55:23 +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
ekrctb
38d10755cb
Merge branch 'master' into refactor-framed-replay-input-hander
2021-04-13 13:47:22 +09:00
Naxess
6d3f9fa9ce
Use is
class instead of Equals
with template index
...
Ensures ordering of `PossibleTemplates` does not affect tests.
2021-04-13 02:29:25 +02:00
Naxess
d8088777ea
Add Equals
method to IssueTemplate
...
This will be useful in tests.
2021-04-13 01:21:34 +02:00
Salman Ahmed
9679bdfed2
Merge branch 'master' into mod-using-reference-equality
2021-04-12 20:56:24 +03:00
Salman Ahmed
92fab653e1
Take current mod settings value into account on equality comparsion
2021-04-12 20:51:13 +03:00
Naxess
19a154ddf1
Rename checkOrigin
-> check
...
More consistent with `Issue.ctor`'s "template".
2021-04-12 17:28:12 +02:00
Naxess
bb720c23a0
Remove check ctors and locals
2021-04-12 17:12:37 +02:00
Dean Herbert
62c1812282
Remove redundant parameter naming
2021-04-12 23:37:47 +09:00
Dean Herbert
36bd235021
Move nested classes to bottom of file
2021-04-12 23:36:10 +09:00
Naxess
6d50d01186
Make IssueTemplate.Check
readonly
2021-04-12 16:23:05 +02:00
Naxess
caaaba5950
Rename Check
-> ICheck
2021-04-12 16:20:53 +02:00
Naxess
008dbc7dd6
Reverse IssueType
ordering
...
Reversed both in the enum and where it's displayed, so ends up the same in the end.
2021-04-12 15:49:13 +02:00
Naxess
7c4f6d2b62
Rework template usage
...
Includes moving the origin check back to templates, constructing nested template classes in each check, and making parameterized template usage.
2021-04-12 15:47:26 +02:00
ekrctb
31d3607105
Add TODO comment
2021-04-12 18:54:36 +09:00
ekrctb
359fae895f
Rename property
2021-04-12 18:50:25 +09:00
ekrctb
6d18b3db00
Avoid empty list allocation
2021-04-12 18:49:38 +09:00
Dean Herbert
b5954a55ad
Remove empty <returns> xmldoc
2021-04-12 17:46:14 +09:00
ekrctb
f1b8171e38
Remove #nullable true
for now to suppress inspector
2021-04-12 17:13:48 +09:00
Naxess
a2fc9c398f
Rename CreateChecker
-> CreateBeatmapVerifier
2021-04-12 10:08:30 +02:00
Naxess
65ebdd8f7a
Move check origin from IssueTemplate
to Issue
...
As a result we can also make check an interface, and need to provide the check itself when constructing an issue.
2021-04-12 10:08:08 +02:00
ekrctb
e19e8ff2a3
Rewrite FramedReplayInputHandler for robustness
...
This commit changes the semantics of `CurrentFrame` and `NextFrame` of the class.
The ordering of `NextFrame.Time` and `CurrentFrame.Time` was dependent on the current direction.
Now, it should always satisfy `CurrentFrame.Time <= CurrentTime <= NextFrame.Time` except at the start/end.
This change, however, doesn't break existing deriving classes if the template code pattern usage of interpolation is used.
The deriving class code can be simplified due to the elimination of nullable types. I didn't include those changes in this commit.
I removed `StreamingFramedReplayInputHandlerTest` for now, as it is almost-duplicate of `FramedReplayInputHandlerTest`. I'll include more tests in later commits.
This commit fixes #6150 .
2021-04-12 16:18:11 +09:00
Dean Herbert
8bf85d737c
Change Metadata into a get property
2021-04-12 15:52:29 +09:00
Dean Herbert
78bbc8f5c8
Tidy some remaining code
2021-04-12 15:52:18 +09:00
Dean Herbert
8c31e96cdf
Change some methods to get properties
2021-04-12 15:52:18 +09:00
Dean Herbert
f78239c7f2
Move enums out of nesting
2021-04-12 15:52:18 +09:00
Dean Herbert
3551322f1d
Fix formatting of colour getter
2021-04-12 15:52:18 +09:00
Dean Herbert
257acf9cd8
Colour constants to private
2021-04-12 15:52:18 +09:00
Dean Herbert
136627b9ac
Wrap xmldoc less and make a few fixes
2021-04-12 15:52:18 +09:00
Dean Herbert
1c553b5d48
Checker -> BeatmapVerifier
2021-04-12 15:29:05 +09:00
Dean Herbert
14bd5bdc77
Merge branch 'master' into verify-tab
2021-04-12 15:14:37 +09:00
ekrctb
d6d8ea5b6b
Throw when getting a frame of an empty replay
2021-04-12 11:17:56 +09:00
Salman Ahmed
18fb9f5ac9
Merge branch 'master' into mod-using-reference-equality
2021-04-11 19:48:55 +03:00
Naxess
3289bb0379
Merge Check
and BeatmapCheck
...
We're probably not going to need GeneralChecks or BeatmapsetChecks.
The verify tab is only available to a single difficulty at a time, and we already have access to the rest of the set through `IBeatmap`.
2021-04-10 14:56:30 +02:00
Naxess
bc4f3351f3
Replace checks with realistic ones
2021-04-10 13:03:16 +02:00
Naxess
b30e41b805
Fix comment; mode -> ruleset
2021-04-10 13:02:36 +02:00
Naxess
d1007ff26a
Move components to more appropriate spot
2021-04-10 13:02:22 +02:00
Dan Balasescu
9aa30fb323
Merge pull request #11688 from Syriiin/diffcalc/dynamic-history
...
Implement dynamic previous hitobject retention for Skill class
2021-04-10 01:25:07 +09:00
Samuel Cattini-Schultz
bfd3d0cce9
Implement custom enumerator for ReverseQueue to avoid allocations
2021-04-10 01:16:54 +10:00
smoogipoo
76981f2547
Remove unused using
2021-04-09 13:58:24 +09:00
smoogipoo
8293b06c0a
Remove obsolete code
2021-04-09 13:56:58 +09:00
Dean Herbert
a8839792fd
Merge branch 'master' into circular-arc-freeze
2021-04-08 14:33:03 +09:00
Naxess
0343ef7f14
Add ruleset-specific checker
2021-04-07 14:36:43 +02:00
Naxess
b24ce66a0d
Add check/issue classes
2021-04-07 14:35:33 +02:00
smoogipoo
37e30b00bf
Refactor to keep a consistent API
2021-04-06 16:39:02 +09:00
Dean Herbert
784552022f
Merge pull request #12303 from smoogipoo/fix-last-control-point-segmenting
...
Make last control point not able to make an implicit segment
2021-04-06 13:35:55 +09:00
Samuel Cattini-Schultz
5cd43b3a7f
Set default history retention to 0 for Skill and override in StrainSkill
...
Some skills might not even require history retention, so why waste the allocations?
2021-04-06 11:53:31 +10:00
Samuel Cattini-Schultz
4f614a703e
Merge branch 'master' into diffcalc/dynamic-history
2021-04-06 11:34:33 +10:00
Samuel Cattini-Schultz
65f93d6f9d
Add more descriptive xmldoc for ReverseQueue
2021-04-06 11:30:58 +10:00
Samuel Cattini-Schultz
ffe7edc16a
Update xmldocs
...
Co-authored-by: Dan Balasescu <smoogipoo@smgi.me>
2021-04-06 11:06:10 +10:00
Dan Balasescu
9d8a26f373
Merge branch 'master' into diffcalc/refactor-strain-skill
2021-04-06 08:21:38 +09:00
Samuel Cattini-Schultz
5bdd15f746
Refactor Skill.Process() to not require calling base.Process()
2021-04-05 22:14:59 +10:00
Samuel Cattini-Schultz
57983ae61f
Fix whitespace
2021-04-05 22:14:59 +10:00
smoogipoo
4b29d0ebe2
Fix last control point starting new segment
2021-04-05 17:49:36 +09:00
Dean Herbert
6bcbef9f25
Merge pull request #12294 from smoogipoo/mania-scoring-adjustments
...
Adjust scoring values to better fit osu!mania expectations
2021-04-05 17:19:28 +09:00
smoogipoo
3acc612a67
Adjust scoring values to better fit osu!mania
2021-04-05 13:28:46 +09:00
Samuel Cattini-Schultz
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
Samuel Cattini-Schultz
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
Samuel Cattini-Schultz
fe66b84bed
Implement dynamic previous hitobject retention for Skill class
...
There is no reason we should be limiting skills to knowing only the previous 2 objects. This originally existed as an angle implementation detail of the original pp+ codebase which made its way here, but didn't get used in the same way.
2021-04-03 20:28:51 +11:00
Dan Balasescu
345779b19a
Merge branch 'master' into diffcalc/fix/clockrate-adjusted-decay
2021-04-02 20:58:29 +09:00
Salman Ahmed
5b1dc7d2b4
Remove unused using directive
2021-04-02 02:45:26 +03:00
Salman Ahmed
fcd56dba44
Guard against same ruleset file with loaded assembly filenames instead
2021-04-02 02:12:25 +03:00
Naxess
7e47922fb7
Merge branch 'master' into circular-arc-freeze
2021-04-01 17:09:45 +02:00
Naxess
7b684339ed
Undo public -> internal for PathControlPoint.Changed
...
No longer used.
2021-03-31 20:32:49 +02:00
Dean Herbert
690debe507
Merge pull request #12030 from LeNitrous/editor-platform-clipboard-copy
2021-03-29 19:31:16 +09:00
Nathan Alo
9a02f3868c
return a string instead
2021-03-29 17:29:05 +08:00
smoogipoo
ecb66ad2e2
Fix up xmldoc
2021-03-29 15:33:54 +09:00
Samuel Cattini-Schultz
068f00d8a0
Add EndTime to DifficultyHitObject for future convenience
2021-03-27 18:38:43 +11:00
Samuel Cattini-Schultz
010db8968f
Adjust wording of xmldoc
2021-03-27 18:38:23 +11:00
Nathan Alo
b8b7eb4c4b
refactor logic to its own component and handle hit object to string conversion to its ruleset-specific composers
2021-03-26 15:25:20 +08:00
Nathan Alo
2bea69456e
remove implementations
2021-03-26 15:24:33 +08:00
smoogipoo
8438fce764
Merge branch 'master' into diffcalc/fix/clockrate-adjusted-decay
2021-03-26 11:47:38 +09:00
Dean Herbert
701342e036
Remove accuracy rounding at a ScoreProcessor level
2021-03-25 17:43:51 +09:00
Naxess
4ae3eaaac6
Move path type correction
...
This is better because `PathControlPointVisualizer` is local to the editor, meaning there is no chance that this could affect gameplay.
2021-03-24 03:02:19 +01:00
Naxess
e922e67c98
Fix inverted return statement
...
Forgot to run tests, all passing now.
2021-03-22 19:48:21 +01:00
Naxess
3fa5852e00
Add method documentation
2021-03-22 19:42:27 +01:00
Naxess
b11fd7972a
Separate condition logic from math logic
2021-03-22 19:41:48 +01:00
Naxess
92f713a30e
Improve fallback conditions
...
It's possible to create a `PerfectCurve` type path with more than 3 points currently, so this accounts for that.
2021-03-22 19:10:56 +01:00
Naxess
80e7c3aba7
Invert if statement
2021-03-22 19:09:28 +01:00
Naxess
6911a1b415
Fix missing newline
2021-03-22 19:03:55 +01:00
Naxess
a7076c329c
Fix null checks
2021-03-22 17:32:55 +01:00
Naxess
323b875cea
Fix newlines/spaces
2021-03-22 17:32:40 +01:00
Naxess
c82218627f
Add path type update logic
...
Only attempts to change points to bezier if points in the slider are modified.
2021-03-22 15:57:57 +01:00
Naxess
7a2cb526e4
Add PointsInSegment method
2021-03-22 15:55:30 +01:00
Naxess
bee2f55d00
Undo subpath limiting
2021-03-22 15:54:33 +01:00
Naxess
fcd1f4930f
Fix freeze due to large circular arc radius
...
Seems to stem from the osu!framework's PathApproximator not catching a few edge cases wherein the radius approaches infinity.
2021-03-21 06:34:55 +01:00
Bartłomiej Dach
aec859b4d1
Merge branch 'master' into fix-unsafe-skinnable-sample-play
2021-03-18 19:51:46 +01:00
Nathan Alo
51e0304c54
properly format strings per ruleset
2021-03-17 18:31:09 +08:00
Dean Herbert
9b5d11f2a5
Merge pull request #11958 from bdach/ruleset-filter-v3
...
Allow rulesets to specify custom song select filtering criteria
2021-03-08 23:23:24 +09:00
Bartłomiej Dach
06e42b4b4c
Fix taiko leaving behind empty judgements on legacy skins
2021-03-06 16:02:20 +01:00
Bartłomiej Dach
f00089846b
Merge branch 'master' into ruleset-filter-v3
2021-03-06 12:14:53 +01:00
Dan Balasescu
5b6018295d
Merge branch 'master' into diffcalc/skill-mods
2021-03-04 13:06:26 +09:00
Bartłomiej Dach
f733d1ec1f
Expose and document query parser and helpers
2021-03-03 22:03:01 +01:00
Bartłomiej Dach
14e249a134
Add ruleset interface for extending filter criteria
2021-03-02 20:07:11 +01:00
Dean Herbert
c4ba045df1
Add note about finalizers required for audio store clean-up
2021-03-02 16:07:51 +09:00
smoogipoo
dff1d80f39
Update HasFlag usages to HasFlagFast
2021-02-25 15:38:56 +09:00
Dean Herbert
67773c42ef
Merge pull request #11888 from H2n9/modtimeramp-new-behaviour
2021-02-25 14:01:57 +09:00
Bartłomiej Dach
421b7877d4
Avoid mixing precision across time ramp bindables
...
Bears no functional difference, it's just a bit less of an eyesore.
2021-02-24 19:16:10 +01:00
Ronnie Moir
73d6a3687e
Change rate correction logic to be more explicit
2021-02-24 14:40:56 +00:00
smoogipoo
0b44d2483b
Make some properties virtual
...
I think they were intended to be this way from the beginning.
2021-02-24 15:03:41 +09:00
smoogipoo
14160b897e
Fix references to ModSuddenDeath
2021-02-24 14:44:53 +09:00
smoogipoo
30a58691f0
Make SD and PF incompatible with each other
2021-02-24 14:34:37 +09:00
Ronnie Moir
f6d3cd6413
Change SamplePlaybackWithRateMods to use rate calulated from the sample
...
Replace hardcoded numbers
2021-02-23 21:25:59 +00:00
Ronnie Moir
7394c62cc8
Make ModTimeRamp and ModRateAdjust incompatible
2021-02-23 18:10:03 +00:00
Ronnie Moir
a6e840634b
Adjust scrubbing behaviour to allow dragging through rate values
2021-02-23 15:52:53 +00:00
Ronnie Moir
f45cedeb85
Adjust initial and final rate ranges and prevent them from overlapping
2021-02-23 15:38:09 +00:00
Dean Herbert
ec4b770cba
Remove unused using statement
2021-02-23 14:56:03 +09:00
Dean Herbert
672fd3f9d2
When disable mouse buttons during gameplay is selected, disable more globally
...
Until now the disable setting would only apply to left/right buttons,
and only in gameplay. This change will cause any global actions bound to
mouse buttons to also not work during gameplay.
Closes #11879 .
2021-02-23 14:37:46 +09:00
smoogipoo
ee6a94273d
Merge branch 'master' into fix-unsafe-skinnable-sample-play
2021-02-22 18:31:27 +09:00
Dean Herbert
63dd55c92c
Add missing methods from updated audio component interface implementation
2021-02-22 14:18:52 +09:00
Samuel Cattini-Schultz
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
Samuel Cattini-Schultz
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
Dean Herbert
487a39eea9
Update interface implementations with framework changes
2021-02-18 18:52:34 +09:00
Dean Herbert
143e145670
Update implementation of AdjustableAudioComponents
2021-02-18 15:44:23 +09:00
smoogipoo
d3f0c0730d
Merge branch 'master' into non-concurrent-sample-playback
2021-02-12 17:22:15 +09:00
Dan Balasescu
cb4d119f23
Merge pull request #11740 from peppy/editor-fix-slider-samples-new-placement
...
Fix newly placed sliders in the editor not playing hitsounds
2021-02-12 13:31:00 +09:00
Dean Herbert
f84ea30637
Expose Mods in DrawableRuleset to avoid using external DI
2021-02-11 17:47:29 +09:00
Dean Herbert
aaa0362b12
Merge branch 'master' into autoplay-rate-independence
2021-02-11 17:39:45 +09:00
Dean Herbert
e9730d4782
Move default sample addition to inside PlacementBlueprint
...
This isn't actually required to fix the behaviour but it does feel like
a better place to put this logic.
2021-02-11 17:16:18 +09:00
smoogipoo
be9b07a4cf
Merge branch 'master' into difficulty-adjustment-extension
2021-02-10 20:42:08 +09:00
Dean Herbert
4e3bb27cd5
Merge branch 'master' into fix-mod-settings-fuckery
2021-02-09 16:47:39 +09:00
Dean Herbert
1cb51fa8d2
Merge branch 'master' into autoplay-rate-independence
2021-02-09 16:05:34 +09:00
Dean Herbert
8204d360a8
Always reset local user settings when a mod is deselected in ModSelectOverlay
2021-02-09 13:44:42 +09:00
Dean Herbert
be379e0e3c
Change CopyFrom to always overwrite all settings with incoming values
2021-02-09 13:44:11 +09:00
smoogipoo
f4a31287bf
Add/use IHitObjectContainer interface instead of IEnumerables
2021-02-08 20:11:06 +09:00
Bartłomiej Dach
0229851c9c
Apply rounding to ModTimeRamp to improve SPM consistency
2021-02-07 19:02:09 +01:00
Bartłomiej Dach
7daeacaff2
Add and implement IApplicableToRate interface
2021-02-07 18:35:34 +01:00
Bartłomiej Dach
68c20a2a37
Allow autoplay score generation to access mod list
2021-02-07 18:35:34 +01:00
Dean Herbert
06a3a72e43
Merge pull request #11670 from smoogipoo/mania-constant-speed-mod
...
Implement mania constant speed mod
2021-02-05 00:26:04 +09:00
smoogipoo
8295fb9081
Implement mania constant speed mod
2021-02-03 16:28:22 +09:00
smoogipoo
921f008217
Fix ModIcon not updating background colour correctly
2021-02-02 21:35:08 +09:00
Bartłomiej Dach
a0de1cbfd0
Handle no-duration single-object edge case
2021-01-31 21:09:41 +01:00
Bartłomiej Dach
547b3d8bed
Fix speed change calculation in time ramp mods
2021-01-31 20:34:56 +01:00
Bartłomiej Dach
81b052b866
Add failing test cases
2021-01-31 20:34:22 +01: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
Dan Balasescu
7d06af916c
Merge branch 'master' into add-messagepack
2021-01-27 13:00:46 +09:00
Dean Herbert
a5f3418e56
Avoid tooltip display
2021-01-26 19:11:19 +09:00
Dean Herbert
9537090d28
Setup all spectator model classes for MessagePack
2021-01-26 16:39:35 +09:00
Dean Herbert
dee0d3c33a
Merge branch 'master' into apply-sv-to-taiko-hr-ez
2021-01-25 14:28:06 +09:00
Dan Balasescu
04095cd5b9
Merge branch 'master' into fix-editor-scroll-interruption
2021-01-21 17:46:18 +09:00
Bartłomiej Dach
1d9aaac2c2
Fix HOC not propagating DHO results applied on kill
...
`DrawableHitObject.OnKilled()` calls `UpdateResult()` to clean up a
hitobject's state definitively with regards to the judgement result
before returning the DHO back to the pool.
As it turns out, if a consumer was relying on this code path (as taiko
was in the case of nested strong hit objects), it would not work
properly with pooling, due to `HitObjectContainer` unsubscribing from
`On{New,Revert}Result` *before* calling the DHO's `OnKilled()`.
This in turn would lead to users potentially getting stuck in gameplay,
due to `ScoreProcessor` not receiving all results via that event path.
To resolve, change the call ordering to allow hit result changes applied
in `OnKilled()` to propagate normally.
2021-01-21 00:05:37 +01:00
smoogipoo
de9d075f94
Initial sample + samplechannel rework
2021-01-19 17:11:40 +09:00