Naxess
64d96b06a6
Add interpreted difficulty info to BeatmapVerifierContext
...
Enables checks to make use of the difficulty level as shown in the settings UI.
2021-05-12 02:30:21 +02:00
Naxess
c13b93e6f1
Replace IWorkingBeatmap
arg with BeatmapVerifierContext
in checks
...
This simplifies passing of contextual information by enabling addition without needing to refactor lots of classes.
See next commit for example.
2021-05-12 02:29:18 +02:00
Naxess
75adec57eb
Remove negligible default hidden TODO
2021-05-12 01:31:16 +02:00
Dean Herbert
2ecd638f7f
Merge branch 'master' into skin-components-list
2021-05-10 18:13:10 +09:00
ekrctb
111b501ced
Revert accidental removal of UTF-8 BOM
2021-05-07 18:04:38 +09:00
ekrctb
207f7f1e56
Rename FramedAutoGenerator<T> -> AutoGenerator<T>
2021-05-07 00:31:12 +09:00
ekrctb
ea35b72436
Remove unused IAutoGenerator interface
2021-05-06 22:57:07 +09:00
ekrctb
9be36230f9
Introduce AutoGenerator subclass for frame based replay generation
2021-05-06 21:59:11 +09:00
Dean Herbert
aff32b0d19
Merge branch 'master' into skin-components-list
2021-05-06 14:17:33 +09:00
Salman Ahmed
cd6d070b4a
Consider "combo offsets" as legacy logic and separate from combo information
2021-05-05 07:43:08 +03:00
Salman Ahmed
eeeb001d62
Refactor combo colour retrieval logic to request skin lookups instead
2021-05-05 07:17:27 +03:00
ekrctb
aa42cf2fc0
Fix setting lifetime during KeepAlive is ignored
2021-05-04 16:56:48 +09:00
ekrctb
913fc8c3bc
Revert the change of not adding non-pooled DHO to HOC until alive
2021-05-04 16:44:48 +09:00
ekrctb
36438175a0
Throw an exception if try to modify lifetime of PoolableDrawableWithLifetime without lifetime
2021-05-04 16:04:58 +09:00
Salman Ahmed
943c497397
Return back removed using
2021-05-03 02:02:14 +03:00
Salman Ahmed
b2130fc600
Fix replay frames sort instability
2021-05-03 01:58:44 +03:00
Dean Herbert
a551958eeb
Move caching of IBeatmap
to base DrawableRuleset
2021-05-01 21:32:45 +09:00
Justus Franklin Tumacder
fdf8c12947
Replace BeatDivisorFinder with GetClosestBeatDivisor
2021-05-01 11:57:47 +08:00
Justus Franklin Tumacder
ecb053b0de
Merge branch 'master' of https://github.com/ppy/osu into justusft/mania-color-snap
2021-05-01 11:20:28 +08:00
Bartłomiej Dach
9cb55ca245
Merge branch 'master' into barrel-roll
2021-04-30 22:27:27 +02:00
Salman Ahmed
b145f46a0a
Merge branch 'master' into skin-components-list
2021-04-30 21:10:55 +03:00
Dan Balasescu
e6eea73b8b
Merge branch 'master' into basic-compose-checks
2021-04-30 23:41:46 +09:00
Dean Herbert
a1e64f4e3c
Use the existing toolbox design
2021-04-30 14:41:06 +09:00
Dean Herbert
e69ec91c07
Add xmldoc for CurrentRotation
2021-04-30 11:25:39 +09:00
Andrei Zavatski
7bf3498e2a
Calculate playfield scale locally
2021-04-30 02:49:19 +03:00
Andrei Zavatski
25e0fb1cf9
Refactor OsuModBarrelRoll to allow it's usage by other rulesets
2021-04-30 01:59:59 +03:00
Dean Herbert
9c62c90cfc
Refactor SelectionBlueprint
and MoveSelectionEvent
to work in screen-space coordinates
...
Until now, the implementation of the overrides in `SelectionBlueprint`
have been confusing to the point where I would just implement by
trial-and-error (or copying from an existing implementation). This was
due to a combination of using "object" space coordinates
(ie. the thing the `Blueprint` is operating on) and screen-space coordinates.
This change switches all event related coordinates to screen-space,
which is how we already handle rotation/scale operations. With the
introduction of other editor types where the related objects are
drawables, this also makes a lot more sense.
2021-04-29 16:10:42 +09:00
Dean Herbert
5b009c21bb
Merge branch 'master' into abstract-blueprint-handling
2021-04-29 16:10:22 +09:00
ekrctb
73dfb04df8
Fix uninitialized scrollLength value is used
2021-04-29 15:17:30 +09:00
ekrctb
632bb70e0f
Use entry to calculate lifetime in ScrollingHOC
...
DHOs cannot be used to calculate lifetime, it is not created before the entry became alive.
2021-04-29 15:04:32 +09:00
ekrctb
c83c804057
Expose lifetime entries from HOC
2021-04-29 14:42:41 +09:00
ekrctb
5aa522b1c2
Completely delegate DHO lifetime to Entry lifetime
...
A downside is lifetime update is not caught by LifetimeManagementContainer if used.
2021-04-29 14:38:01 +09:00
ekrctb
799d2a3300
Replace failed mania test (pooling not accounted) with a more robust test
...
Also fix null reference in Playfield
2021-04-29 14:38:01 +09:00
ekrctb
d262956146
Always use LifetimeEntry to manage hit objects in HitObjectContainer
...
Previously, non-pooled DHOs were immediately added as children of the HOC when Add is called. Also, non-pooled DHOs were always attached to the HOC as children.
New behavior is that non-pooled DHOs are only added after CheckChildLifetime, and only attached to the HOC while the DHOs are alive.
- LifetimeManagementContainer inheritance of HOC is removed, as it is now all DHOs are "unmanaged" (previously `AddInternal(false)`).
- The signature of `Clear` is changed, and it is now always not disposing the children immediately.
2021-04-29 14:38:01 +09:00
Dean Herbert
f3c7694eeb
Rename methods to match generally how these find-methods are named elsewhere
2021-04-28 16:57:52 +09:00
Dean Herbert
48d6c9ac4b
Move snap/divisor helper methods to inside ControlPointInfo
2021-04-28 16:47:30 +09:00
smoogipoo
61b7dc1e06
Fix bonus-only maps having 700K base score
2021-04-28 03:42:29 +09:00
Dan Balasescu
5fc731967b
Merge pull request #12592 from ekrctb/fix-entry-lifetime
...
Fix Setting DHO's lifetime doesn't update its entry lifetime
2021-04-28 01:38:19 +09:00
smoogipoo
1281993f1f
Fix bonus score not calculated from the correct statistics
2021-04-27 22:42:58 +09:00
Naxess
200352b750
Rename unsnap check templates
2021-04-27 13:56:05 +02:00
ekrctb
b87446a577
Simplify HitObjectLifetimeEntry logic a bit
2021-04-27 19:37:01 +09:00
Dean Herbert
2adc751e04
Merge pull request #12585 from LumpBloom7/Reset-DHO-Transforms-method
...
Add method to safely refresh DrawableHitObject transforms
2021-04-27 19:15:12 +09:00
Dean Herbert
7ec5ea1eb5
Remove hitobject terminology from base classes
2021-04-27 19:01:29 +09:00
Dean Herbert
dd3d8e5d03
Make SelectionHandler
abstract to ensure things get implemented
2021-04-27 19:01:29 +09:00
Dean Herbert
f2e56bd306
Refactor editor selection/blueprint components to be generic
2021-04-27 19:01:29 +09:00
Derrick Timmermans
3ea55314f2
Update osu.Game/Rulesets/Objects/Drawables/DrawableHitObject.cs
...
Co-authored-by: Dan Balasescu <smoogipoo@smgi.me>
2021-04-27 11:29:16 +02:00
ekrctb
3899e500d3
Adopt framework change of LifetimeEntry
...
Override SetLifetimeStart/SetLifetimeEnd separately to track individual assignment. It is necessary to ensure real lifetime is not lost when lifetime is partially updated.
2021-04-27 17:54:18 +09:00
ekrctb
c9e6ca5378
Use now-public Entry.SetLifetime method
2021-04-27 15:25:05 +09:00
ekrctb
a2c0951d94
Use overriding instead of hiding in HitObjectLifetimeEntry
...
Hidden properties are used when the type is the base class. It caused issues when `DrawableHitObject` logic is factored out to `PoolableDrawableWithLifetime` because it is using the base `LifetimeEntry`, not `HitObjectLifetimeEntry`.
2021-04-27 15:23:33 +09:00
Dean Herbert
ec1c336b0a
Fix a couple of inspections
2021-04-27 13:23:14 +09:00
Naxess
7a6e9e5070
Change category of unsnap check to timing
...
Makes more sense, as this is typically the result of timing changes.
2021-04-27 02:32:57 +02:00
Naxess
9e49ecb573
Remove unused virtual
keywords
...
Added these in a previous iteration, where I had the mania variant inherit this class.
No longer necessary as `IHasColumn` was used to make this check more generic.
2021-04-27 02:23:06 +02:00
Naxess
a3c1b1fd52
Fix accessibility of areConcurrent
2021-04-27 01:24:38 +02:00
Naxess
ce258febf6
Rename CheckUnsnaps
-> CheckUnsnappedObjects
...
Will potentially have `CheckUnsnappedKiai` or similar later, so this is worth specifying.
Also consistent with `CheckConcurrentObjects`, which will likely have a `CheckConcurrentLines` later.
2021-04-26 20:32:44 +02:00
Naxess
b9e4f73f78
Add concurrent objects check to BeatmapVerifier
2021-04-26 20:28:59 +02:00
Naxess
a3570e18dd
Add concurrent objects check
...
Here we use `IHasColumn` to support rulesets with columns, and so I moved that interface out into `osu.Game` from `osu.Game.Rulesets.Mania`.
We also use the same threshold as the unsnap check to ensure that no problems slip through. Specifically where an object is simultaneously not concurrent and not unsnapped but still on the same tick.
2021-04-26 20:17:18 +02:00
Derrick Timmermans
08a232f7fa
Add method to safely refresh DrawableHitObject transforms
2021-04-26 20:08:40 +02:00
Naxess
9b9c473616
Remove redundant string formatting
2021-04-26 16:17:38 +02:00
Naxess
7b9ed924be
Rename snapping methods
...
Further separates them from `IBeatSnapProvider`'s `SnapTime`, and groups them together more, to prevent confusion between the two interfaces.
Also changes the xmldoc of the reference time to that of `IBeatSnapProvider` for consistency.
2021-04-26 16:07:30 +02:00
Dan Balasescu
6d2a5b614c
Merge branch 'master' into drawable-object
2021-04-26 18:33:44 +09:00
smoogipoo
fd5fbaf0db
Rename ruleset wrapper class
2021-04-26 15:37:42 +09:00
Naxess
049e42fa85
Move snapping responsibility to IBeatmap
...
Seems `EditorBeatmap` already implements a different kind of `SnapTime` from `IBeatSnapProvider`, so method names here aren't great.
This is very similar to what https://github.com/ppy/osu/pull/12558 is doing, so may need to do some duplicate resolution later, especially surrounding `ClosestBeatSnapDivisor`.
Worth noting that this change makes 1/7, 1/5, etc unsupported for now, as we now rely on `BindableBeatDivisor.VALID_DIVISORS`.
2021-04-26 05:07:24 +02:00
ekrctb
6561a7c7d6
Rename DrawableObject -> PoolableDrawableWithLifetime
2021-04-26 12:06:21 +09:00
ekrctb
20e3cadd30
freeIfInUse -> free, and add comments
2021-04-26 12:04:59 +09:00
ekrctb
e6474e6ff7
Remove redundant statement (lifetime is set in base)
2021-04-26 11:47:38 +09:00
Justus Franklin Tumacder
8bb1fcd39b
Add tests for BeatDivisorFinder
2021-04-26 07:07:32 +08:00
Bartłomiej Dach
33a5c156a1
Use existing snap list from BindableBeatDivisor
2021-04-25 17:52:11 +02:00
Bartłomiej Dach
e14255f395
Rename {Snap -> BeatDivisor}Finder
2021-04-25 17:44:26 +02:00
Naxess
6fd77e536d
Add unsnap check
2021-04-25 05:34:54 +02:00
Justus Franklin Tumacder
211bff6a8f
Fix cake errors
2021-04-25 09:21:25 +08:00
Justus Franklin Tumacder
1f48378ce7
Add xmldoc to SnapFinder
2021-04-25 08:53:45 +08:00
Justus Franklin Tumacder
e0ca44c908
Move SnapFinder from mania ruleset to osu.Game
2021-04-25 07:35:53 +08:00
Dan Balasescu
739d83da2a
Merge pull request #12515 from frenzibyte/legacy-scores-classic-mod
...
Apply "classic" mod to all legacy scores
2021-04-22 19:52:09 +09:00
smoogipoo
d4d78f7434
Merge branch 'master' into legacy-scores-classic-mod
2021-04-22 18:44:20 +09:00
Dean Herbert
9a7bf8109f
Allow certain mouse input to pass through PlacementBlueprints
to the selection logic
2021-04-22 15:44:12 +09:00
ekrctb
b877a29737
Factor out pooling and lifetime management logic of DHO to a base class
2021-04-21 17:37:42 +09:00
ekrctb
bbf2ec369b
Remove SkinReloadableDrawable inheritance from DHO
2021-04-21 17:34:57 +09:00
Dan Balasescu
cf55383fff
Merge pull request #12486 from ekrctb/unmanaged-hit-object-entry
...
Associate DrawableHitObject with HitObjectLifetimeEntry rather than HitObject
2021-04-21 17:08:21 +09:00
Salman Ahmed
e90d791754
Add base "classic" mod
2021-04-21 09:14:19 +03:00
ekrctb
3fbeadf318
Deprecate old overload of Apply
2021-04-21 14:32:37 +09:00
ekrctb
73d3da1687
Fix wrong InitialLifetimeOffset is used for a non-pooled DHO.
...
HitObjectLifetimeEntry's InitialLifetimeOffset is different from DrawableHitObject's InitialLifetimeOffset.
2021-04-21 11:32:01 +09:00
ekrctb
44ff08cce4
Revert "Fix wrong InitialLifetimeOffset is used for a non-pooled DHO."
...
This reverts commit 67fcfd9d
2021-04-21 10:02:50 +09:00
ekrctb
67fcfd9dbc
Fix wrong InitialLifetimeOffset is used for a non-pooled DHO.
...
HitObjectLifetimeEntry's InitialLifetimeOffset is different from DrawableHitObject's InitialLifetimeOffset.
2021-04-21 09:48:16 +09:00
ekrctb
e80c3c317a
Rename UnmanagedHitObjectEntry -> SyntheticHitObjectEntry
...
"Unmanaged" was confusing because its lifetime is still managed by the HitObjectContainer.
2021-04-21 09:23:23 +09:00
ekrctb
c6ee4e900e
Ensure a non-null hitobject entry has a non-null Result
2021-04-20 15:18:36 +09:00
ekrctb
8a8b9084ef
Make single-argument overloead of DHO.Apply public
2021-04-20 10:11:36 +09:00
Naxess
0e6b66f457
Merge branch 'master' into bg-audio-quality-checks
2021-04-20 02:36:13 +02:00
ekrctb
1bc63a4c61
Now, DHO.lifetimeEntry can be non-null even it is not fully applied
2021-04-20 09:22:16 +09:00
Naxess
4510e795e1
Fix category of audio quality check
2021-04-20 02:13:26 +02:00
ekrctb
c1b4aaaa03
Add doc comment
2021-04-20 08:38:02 +09:00
Naxess
c633f15565
Add audio quality check
2021-04-20 01:36:03 +02:00
Naxess
40ae856dfc
Show 2 decimals for background filesize
2021-04-20 01:34:05 +02:00
Naxess
14c626ffcb
Use the playable beatmap for file presence checks
2021-04-20 01:33:19 +02:00
Naxess
8656176ab8
Add the playable beatmap as check argument
...
This is different from the working beatmap's `.Beatmap` property in that it is mutated by the ruleset/editor.
So hit objects, for example, are actually of type `Slider` and such instead of the legacy `ConvertSlider`.
This should be preferred over `workingBeatmap.Beatmap`.
2021-04-20 01:31:51 +02:00
Dean Herbert
fc41ad65f8
Merge pull request #12447 from smoogipoo/fix-non-60fps-recording
...
Record every 60fps interval
2021-04-19 23:26:58 +09:00
ekrctb
2c487ddb70
Create synthetic LifetimeEntry for a DHO when not supplied
...
Now, a DHO is always associated with a HitObjectLifetimeEntry while used.
Result is always stored in the entry, and not in the DHO.
2021-04-19 21:54:19 +09:00
ekrctb
5afdc3ff66
Make DHO application logic clearer with Entry/HitObject separation
2021-04-19 19:56:17 +09:00
Naxess
9a69ca34a6
Add audio presence check
2021-04-18 02:07:57 +02:00
Naxess
010720de74
Factor out general file presence checking
...
This allows us to use the same method of checking for other files that should exist, for example the audio file.
By using the same method, they all share test cases too.
2021-04-18 02:07:33 +02:00
Naxess
56bf49c85c
Take IWorkingBeatmap
instead of WorkingBeatmap
...
This makes testing much easier, and allows for checking of any class deriving from that interface, including `WorkingBeatmap`.
2021-04-18 01:21:20 +02:00
Naxess
abf512532e
Clean up check logic
...
Makes use of the new `BeatmapSet.GetPathForFile` method and removes dependency on `WorkingBeatmap` specifically, allowing us to switch to `IWorkingBeatmap` later.
2021-04-18 01:19:25 +02:00
Naxess
cb41c89935
Don't return low res and too low res at the same time
2021-04-17 20:10:07 +02:00
Naxess
62c54e00cb
Add check for background resolution and filesize
2021-04-17 18:01:04 +02:00
Naxess
448574e7e6
Use WorkingBeatmap
instead of IBeatmap
...
This lets us access things like the background, track, etc. which are necessary for quality and filesize checks.
Also improves the structure of the `CheckBackgroundTest` class in the process.
2021-04-17 17:33:53 +02:00
smoogipoo
d26fa46ef2
Record every 60fps interval
2021-04-16 19:42:44 +09:00
Dean Herbert
f824105075
Merge branch 'master' into fix-slider-zero-length
2021-04-16 18:47:22 +09:00
Dean Herbert
9b95cf227e
Merge branch 'master' into apply-ibindable-interface-change
2021-04-16 17:30:35 +09:00
Dan Balasescu
5ad2d0e759
Merge pull request #12439 from ekrctb/further-refactor-framed-replay
...
Further refactor FrameReplayInputHandler, simplify the template code
2021-04-16 17:16:09 +09:00
Dean Herbert
d38e294d96
Centralise length validation function
2021-04-16 15:45:24 +09:00
smoogipoo
8c4804dd7a
Use nameof
2021-04-16 15:40:06 +09:00
smoogipoo
d1c72f5e13
Apply changes resulting from IBindable interface updates
2021-04-16 15:10:53 +09:00
ekrctb
91c7d8d26c
Introduce StartFrame
and EndFrame
to simplify the replay interpolation code
2021-04-16 14:13:41 +09:00
ekrctb
84bc81a6de
Make FramedReplayInputHandler.CurrentTime non-null
2021-04-16 14:13:41 +09:00
ekrctb
936bde28a3
Remove manual handling of IsActive in RulesetInputManager
...
Now it is supported in framework
2021-04-16 14:13:41 +09:00
Dean Herbert
119c9b4294
Fix placement blueprints not being correctly removed after a rolled back placement
2021-04-16 14:11:33 +09:00
Dan Balasescu
ac8e462d32
Merge branch 'master' into refactor-framed-replay-input-hander
2021-04-15 21:48:58 +09:00
Dan Balasescu
98e2245d83
Merge pull request #12422 from ekrctb/no-lazy-list
...
Remove usage of Lazy<List<...>> by always allocating an empty list
2021-04-15 20:09:39 +09:00
ekrctb
d8aa436e81
Remove usage of Lazy<List<...>> in NestedPlayfields
2021-04-15 18:26:01 +09:00
ekrctb
50fad47ebc
Remove usage of Lazy<List<...>> for NestedHitObjects
2021-04-15 18:26:01 +09:00
Dean Herbert
346e36d32a
Make Mod.Description
abstract and add missing descriptions
2021-04-15 14:36:26 +09:00
Dean Herbert
ba325de595
Merge conditionals for readability
2021-04-15 14:19:59 +09:00
Dean Herbert
5eaf3ea576
Reorganise and reword comments to make time override behaviour a bit clearer
2021-04-15 14:19:06 +09:00
Dean Herbert
7654df94f6
Merge pull request #12395 from frenzibyte/fix-cinema-ignore-settings
...
Fix beatmap background displayed if storyboard is hidden on "Cinema" mod
2021-04-14 14:31:03 +09:00
Dean Herbert
cb4f64133e
Add xmldoc to interfaces
2021-04-13 23:30:20 +09:00
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
Dean Herbert
ced7a36788
Update namespaces
2021-01-18 21:24:10 +09:00
Dean Herbert
04fa32bc34
Rename and add xmldoc for smooth seeking method
2021-01-15 16:14:21 +09:00
smoogipoo
d5878db615
Fix default judgement text mispositioned for one frame
2021-01-14 12:33:33 +09:00
Bartłomiej Dach
4b4adc927c
Rename param to match method body
2021-01-10 15:35:53 +01:00
Salman Ahmed
0aad0c7c6c
Target logic at this
and adjust variables
2021-01-09 00:31:18 +03:00
Salman Ahmed
375ecf92ed
Merge remote-tracking branch 'upstream/master' into fix-mod-buttons-not-copying-settings
2021-01-09 00:26:18 +03:00
Dean Herbert
05ba5d4c31
Merge pull request #11438 from bdach/difficulty-adjust-defaults
...
Fix difficulty adjust mod treating default values as user overrides
2021-01-09 01:18:34 +09:00
Bartłomiej Dach
303cc62ee7
Transfer flags indicating if settings were changed
2021-01-06 22:46:46 +01:00
Bartłomiej Dach
68352782db
Change .StartsWith() to .Equals()
...
In line with planned-but-delayed breaking change.
2021-01-06 18:38:24 +01:00
Bartłomiej Dach
9cc63e8dce
Remove obsoleted IHasEndTime
2021-01-06 18:38:24 +01:00
Bartłomiej Dach
539785e422
Remove obsoleted IHasCurve
2021-01-06 18:38:24 +01:00
Bartłomiej Dach
09742998cd
Fix mistaken obsoletion notice
...
It was added in c9f38f7bb6
, which
specified 2021 in another place (and was committed in October of 2020
anyway). Update the year so that it doesn't get culled prematurely.
2021-01-06 18:38:24 +01:00
Dean Herbert
b3f08b29ca
Ensure that all changes to screen backgrounds are on the correct thread
2021-01-05 15:22:50 +09:00
Bartłomiej Dach
9e4a925ab1
Clarify & cleanup comments some
2021-01-03 13:44:29 +01:00
Bartłomiej Dach
a3e29b9154
Rename parameters for readability
2021-01-03 13:25:44 +01:00
Dean Herbert
2501707d7d
Copy values using Bind to also copy defaults
2021-01-03 20:45:03 +09:00
Dean Herbert
29dbb1cc0d
Add internal pathway for ensuring correct application of bindable mods
2021-01-03 15:48:28 +09:00
Dean Herbert
23e216fa0b
Simplify some default value checks (we are sure the return is an IBindable)
2021-01-03 15:47:15 +09:00
Salman Ahmed
c1a1e3acc5
Revert drive-by changes
2021-01-01 15:40:40 +03:00
Salman Ahmed
a031c8e0b6
Apply documentation suggestions
...
Co-authored-by: Bartłomiej Dach <dach.bartlomiej@gmail.com>
2021-01-01 15:34:09 +03:00
Salman Ahmed
b4df2d6d43
Add method for copying properties from another mod
2021-01-01 03:46:09 +03:00
Firmatorenio
013b9b62a1
add SV multipliers to taiko difficulty mods
2020-12-29 20:22:56 +06:00
Salman Ahmed
41b79d938b
Fix wrong checks..
2020-12-28 15:30:52 +03:00
Salman Ahmed
5efcdbd431
Fix IMod now using reference equality as well
2020-12-28 15:19:28 +03:00
Salman Ahmed
43f8f3638a
Fix mod using reference equality unless casted to IMod
2020-12-27 02:42:13 +03:00
Dean Herbert
d66e218318
Source display accuracy from header and remove from ScoreProcessor function
2020-12-24 14:57:23 +09:00