1
0
mirror of https://github.com/ppy/osu.git synced 2024-11-20 04:42:57 +08:00
Commit Graph

3201 Commits

Author SHA1 Message Date
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