1
0
mirror of https://github.com/ppy/osu.git synced 2024-09-30 09:57:26 +08:00
Commit Graph

705 Commits

Author SHA1 Message Date
Dean Herbert
7cc9fdbaa0 Simplify context menu check by using existing mergeable object list 2022-08-16 15:39:23 +09:00
Dean Herbert
ecb9351bab Remove unnecessary null pre-checks 2022-08-16 15:36:43 +09:00
Dean Herbert
e636fcd9b8 Use DI'd components from parent class rather than fetching locally 2022-08-16 15:35:32 +09:00
OliBomby
3abc333813 added hotkey for merging selection 2022-08-15 17:18:55 +02:00
OliBomby
3525dfb0f1 added merging feature 2022-08-12 01:17:33 +02:00
Dean Herbert
06ae30a7d2 Fix slider velocity not using previous value if slider is not adjacent 2022-07-19 22:54:11 +09:00
Dean Herbert
31a447fda0 Update parameter discards 2022-06-24 21:26:19 +09:00
Dan Balasescu
f8830c6850 Automated #nullable processing 2022-06-17 16:37:17 +09:00
Dan Balasescu
64a371638e
Merge pull request #18236 from peppy/snap-unification
Add `enum` to snap method as alternative to multiple nested invocations
2022-05-20 11:35:05 +09:00
Dean Herbert
cf3ead8047 Remove unused local 2022-05-13 22:06:30 +09:00
Dean Herbert
d9782b5ef6 Remove redundant parenthesis 2022-05-13 21:31:49 +09:00
Dean Herbert
38b8baf095 Remove unused border colour 2022-05-13 21:28:50 +09:00
Dean Herbert
1529162318 Remove circle scaling (apparently the fixed scale is required for spacing) 2022-05-13 21:28:45 +09:00
Dean Herbert
0318944b80 Fix incorrect alive criteria causing clicking future objects to be too greedy 2022-05-12 23:37:29 +09:00
Dean Herbert
0c335592b3 Tidy up interpolation and move const to new home 2022-05-12 19:44:07 +09:00
Dean Herbert
f22ff4e087 Remove editor animation toggling (replaced by overlap markers) 2022-05-12 19:28:56 +09:00
Dean Herbert
be3d4c9bf5 Add circle overlap marker, bringing back stable-like visibility of circles in the past 2022-05-12 19:27:32 +09:00
Dean Herbert
1b2c07e142 Extend lifetime of OsuSelectionBlueprint to allow for lingering display 2022-05-12 19:25:51 +09:00
Dean Herbert
c0abce918f Add enum to snap method as alternative to mutliple nested invocations 2022-05-12 16:19:07 +09:00
Dean Herbert
c7e7aa5962 Don't draw distance snap grid on the start time of the next object 2022-05-06 17:05:52 +09:00
Dean Herbert
19cf9dc20b Merge branch 'snapping-tidy-distance' 2022-05-05 16:51:32 +09:00
Dean Herbert
977e6d8a80 Add xmldoc for IDistanceSnapProvider and related properties 2022-05-05 16:25:45 +09:00
Dean Herbert
f6fc926f1a Add xmldoc and rename methods in IPositionSnapProvider for legibility 2022-05-05 15:58:21 +09:00
Dean Herbert
bb086800b1 Remove ugly playfield border 2022-05-04 13:41:30 +09:00
Salman Ahmed
835898dd30 Introduce DistancedHitObjectComposer and supersede OsuToolboxComposite 2022-04-28 06:44:50 +03:00
Salman Ahmed
59cf3ff50f Move distancing methods from IPositionSnapProvider to IDistanceSnapProvider 2022-04-28 05:48:45 +03:00
Salman Ahmed
66c730c382 Change distance spacing keybind to Ctrl+Alt 2022-04-27 17:11:23 +03:00
Salman Ahmed
0738cd028f Give snapping toolbox enough hover delay for interaction with expand button
With 0 delay, if the `SettingsToolboxGroup` has been contracted via
button, there's no chance to be able to expand it via button again.

This is temporary at best just to keep things working somewhat, not sure
if the expansion logic will still be required in editor redesign, so
deciding to roll with it for now.
2022-04-24 08:53:11 +03:00
Salman Ahmed
8ed39009fd Encapsulate distance spacing control handling to a "distance toolbox composite"
Encapsulated in a way which can allow further extensibility for the
right-side area of toolboxes.
2022-04-24 08:33:03 +03:00
Salman Ahmed
19ee05c232 Add "distance spacing" multiplier for osu! ruleset
While osu!catch also implements a distance snap grid, it doesn't rely on
`GetBeatSnapDistanceAt` (unlike osu!), therefore it can't have the
"distance spacing" multiplier yet.
2022-02-15 02:21:53 +03:00
Susko3
19467e58c1 Remove unused params from BDL methods 2022-01-15 01:06:39 +01:00
Bartłomiej Dach
c09f6ee052
Use slider snapping more liberally to match user expectations
Previously the slider path length would be snapped using the current
beat snap setting on *every* change of the slider path. As it turns out
this is unexpected behaviour in some situations (e.g. when reversing a
path, which is expected to preserve the previous duration, even though
the slider may be technically "unsnapped" at that point in time due to a
different beat snap setting being selected afterwards).
2022-01-07 16:02:04 +01:00
Dean Herbert
ee24713002 Fix single sliders not being flippable due to incorrect precondition 2022-01-06 14:37:13 +09:00
Dean Herbert
6779503e57 Refactor logic to avoid TimelineSelectionHandler having to block base calls 2022-01-05 16:56:54 +09:00
Dean Herbert
866ae3472b Add global flip hotkeys 2022-01-05 16:48:07 +09:00
Joseph Madamba
7de43e3aba Fix most open compound words in identifiers being closed 2021-12-27 20:26:28 -08:00
Bartłomiej Dach
c6a5ac1c5f
Fix control point additions without a drag not being undoable 2021-12-23 09:32:52 +01:00
Bartłomiej Dach
cbda637d66
Fix drag after placement moving last placed point sometimes
More specifically, if the left mouse button was just pressed without a
drag, `OnDragEnd()` wouldn't fire, and the next drag would start moving
the last placed control point around regardless of where the mouse was.
2021-12-23 09:25:10 +01:00
Dean Herbert
b0df787b1a Move public method up and add xmldoc to second public method 2021-12-23 14:13:57 +09:00
Bartłomiej Dach
c3fada1926
Replace assertion with soft null check
Surrounding `OnDrag{Start,End}` methods did so already.
2021-12-22 10:33:08 +01:00
Bartłomiej Dach
6330fa5dc5
Select newly created control point 2021-12-22 10:33:07 +01:00
Bartłomiej Dach
e22745397d
Fix right click deselecting clicked path piece with control held 2021-12-22 08:55:26 +01:00
Bartłomiej Dach
e715bff535
Fix selections including head not correctly dragging if not started from head 2021-12-21 12:35:48 +01:00
Bartłomiej Dach
5ef4e23335
Fix selecting control points without control not deselecting other selected points 2021-12-20 22:41:24 +01:00
Bartłomiej Dach
bf8c87e9b7
Fix releasing mouse after drag deselecting dragged point 2021-12-20 22:41:23 +01:00
Bartłomiej Dach
d2417beeac
Implement drag operation for multiple path control points 2021-12-20 21:29:57 +01:00
Bartłomiej Dach
a9408485cc
Change control point piece selection logic to allow dragging multiple 2021-12-20 21:18:38 +01:00
Bartłomiej Dach
b0ca82e1e5
Move slider path point drag handling to visualiser 2021-12-20 20:56:06 +01:00
Bartłomiej Dach
8aa04864ce
Add support for converting sliders with repeats to streams 2021-11-11 23:25:49 +01:00
Bartłomiej Dach
0cd3f98598
Ensure samples & sample points are carried over during conversion 2021-11-11 21:43:06 +01:00
Bartłomiej Dach
27707d52ec
Implement slider-to-stream conversion 2021-11-11 21:01:30 +01:00
Dean Herbert
6944151486 Apply batch fixing of built-in types using var 2021-10-27 13:04:41 +09:00
smoogipoo
901f107b2e Merge branch 'master' into slider-timeline-velcotiy-adjust-v2 2021-10-14 17:25:51 +09:00
smoogipoo
bc37cb6f43 Merge branch 'master' into no-more-difficulty-control-points-info 2021-10-08 18:41:17 +09:00
Dean Herbert
b339c149d8 Copy BaseDifficulty to Beatmap<T> and move all write operations across 2021-10-06 15:10:45 +09:00
Dean Herbert
ac471a0ec1 Merge branch 'no-more-difficulty-control-points-info' into slider-timeline-velcotiy-adjust-v2 2021-10-01 17:46:58 +09:00
Dean Herbert
46bafb6252 Merge branch 'master' into no-more-difficulty-control-points-info 2021-09-28 13:53:56 +09:00
Dean Herbert
59d6a718d6 Fix value not being loaded from beatmap in case of most dense grid setting 2021-09-21 20:09:34 +09:00
Bartłomiej Dach
d15bd5a15e
Store grid size back to beatmap on change 2021-09-20 20:39:39 +02:00
Bartłomiej Dach
0d7dac03f4
Start with largest grid size 2021-09-20 20:34:22 +02:00
Bartłomiej Dach
52542374e8
Fix rectangular grid snap being always active 2021-09-20 20:14:28 +02:00
Bartłomiej Dach
b5af01f456
Always show rectangular grid in osu! composer 2021-09-20 20:13:06 +02:00
Dean Herbert
cdef6d0cf5 Add key binding support for grid mode cycle 2021-09-20 16:43:15 +09:00
Bartłomiej Dach
4e094b2127
Implement grid size toggling matching stable 2021-09-19 20:26:02 +02:00
Bartłomiej Dach
e1738025d4
Add basic integration of rectangular grid to osu! composer 2021-09-19 18:07:20 +02:00
smoogipoo
f9d5abff8a Update with keybinding changes 2021-09-16 18:26:12 +09:00
Dean Herbert
2114a4729c Set a sane default for new slider blueprints 2021-09-14 18:28:27 +09:00
Dean Herbert
0500cd578a Merge branch 'master' into no-more-difficulty-control-points-info 2021-09-06 21:06:12 +09:00
Dean Herbert
d4e5a612ea Update IPositionalSnapProvider to take a HitObject as reference, rather than raw time
This allows fetching the correct `DifficultyControlPoint` from the
hitobject. Nothing more.
2021-09-03 17:11:12 +09:00
Bartłomiej Dach
a2d2ed2ef6
Add stack leniency setting for osu! 2021-09-02 23:29:14 +02:00
Dean Herbert
17f6efc6fe Fix missed cases of incorrect .Value usage
Changing from `Bindable` to `Nullable` comes with its issues...
2021-08-26 14:02:57 +09:00
Dean Herbert
6dcd9427ac Remove bindable usage in PathControlPoint
This is quite a breaking change, but I think it is beneficial due to the large amount of usage of this class.

I originally intended just to remove the allocations of the two delegates handling the `Changed` flow internally, but as nothing was really using the bindables for anything more than a general "point has changed" case, this felt like a better direction.
2021-08-26 12:33:53 +09:00
ekrctb
3d88a745cd Fix osu editor transforms not specified in the absolute time 2021-08-18 14:27:16 +09:00
smoogipoo
fbaa480b3e Fix out-of-order hits in editor causing exceptions 2021-08-12 10:08:54 +09:00
ekrctb
cc01b9e639 Extract SliderPath reverse logic to be used in other rulesets 2021-07-22 16:14:43 +09:00
Dean Herbert
adda96ac86
Merge pull request #13962 from ekrctb/platform-action
Adapt to framework `PlatformAction` type change
2021-07-21 18:17:38 +09:00
ekrctb
1bac471b49 Adapt to PlatformAction type change 2021-07-21 16:12:53 +09:00
ekrctb
1bff4373b3 Allow specifying flipping support of selection box different from scaling 2021-07-21 15:59:45 +09:00
Naxess
3a5912e35e Add new checks to verifiers 2021-07-13 10:53:25 +02:00
Naxess
53c0298b5e Add too short spinners check and tests 2021-07-13 10:51:40 +02:00
Naxess
fec9448301 Add too short sliders check and tests 2021-07-13 10:50:41 +02:00
Bartłomiej Dach
50c27d2635 Update usages of IHasTooltip in line with framework localisation changes 2021-06-25 19:10:04 +02:00
Dean Herbert
6c3d2315d0
Merge pull request #13606 from Naxesss/low-diff-checks
Add low difficulty spacing checks
2021-06-22 16:29:37 +09:00
Dean Herbert
e9339d6100 Move some inline comments on consts to xmldoc instead 2021-06-22 15:16:19 +09:00
Naxess
2f3f4f3e4b Add new checks to verifier 2021-06-21 15:30:45 +02:00
Naxess
fcb918d0e1 Add time distance equality check 2021-06-21 15:30:23 +02:00
Naxess
3eb088f89a Add low difficulty overlaps check 2021-06-21 15:30:04 +02:00
Bartłomiej Dach
afc89b39d9 Use StateUpdateTime for transform clearing logic
`MainCirclePiece` specifies a state transform starting at
`StateUpdateTime`, which is earlier than the previously-used
`HitStateUpdateTime`. Change the transform clearing logic to use the
former to ensure that exactly all animation transforms are cleared.
2021-06-18 16:04:11 +02:00
Bartłomiej Dach
e94fbd83e2 Ensure editor ruleset animation disable execution order 2021-06-18 16:04:11 +02:00
Bartłomiej Dach
e2a370f602 Add coverage for hit circle fade-out duration 2021-06-18 16:04:11 +02:00
smoogipoo
3db995c778 Fix sliders jumping around the screen on movement 2021-05-24 17:15:57 +09:00
Dean Herbert
bb2fae55ce Merge branch 'master' into refactor-selection-rotate-logic 2021-05-21 19:19:54 +09:00
Dean Herbert
df5970fab4 Create base implementations of the two most common TernaryStateMenuItems 2021-05-20 19:34:53 +09:00
Dean Herbert
27e81d6504 Implement proper rotation algorithm for skin editor 2021-05-20 18:21:16 +09:00
Dean Herbert
a0f67ef3bc Move scaling logic out of OsuSelectionHandler for reuse 2021-05-19 17:37:28 +09:00
Dean Herbert
d661e98fa6 Move common functionality out of OsuSelectionHandler and implement flip support 2021-05-18 18:34:06 +09:00
Dean Herbert
a96603f025
Merge pull request #12782 from smoogipoo/rework-hitobject-blueprints
Rename hitobject blueprints and tie them to HitObjects
2021-05-18 16:30:58 +09:00
smoogipoo
532c41c82e Remove nested blueprints from sliders 2021-05-18 14:19:11 +09:00
smoogipoo
e621cfc4ea Add Apply() method for applying new DHOs 2021-05-18 14:14:10 +09:00
smoogipoo
ffb6135a1b Rework hitobject blueprints to take in hitobject models 2021-05-13 19:53:32 +09:00
Naxess
19800f5f7f Move IBeatmap arg into context 2021-05-13 11:24:22 +02:00
Naxess
b7bc42e0d3 Rename "playableBeatmap" check arg to "beatmap"
The working beatmap is now in the context, so it's easier to distinguish beatmap type, hence no need for this prefix.
2021-05-12 02:34:16 +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
Dean Herbert
01d732bb65 Revert "Refactor SliderSelectionBlueprint to not reference blueprint pieces for input handling"
This reverts commit 54fe10c82a.
2021-05-08 23:33:03 +09:00
Dean Herbert
63e267a3be Revert "Trim redundant this qualifier"
This reverts commit df630d9428.
2021-05-08 23:32:52 +09:00
Bartłomiej Dach
df630d9428 Trim redundant this qualifier 2021-05-08 14:53:19 +02:00
Dean Herbert
54fe10c82a Refactor SliderSelectionBlueprint to not reference blueprint pieces for input handling 2021-05-07 10:36:03 +09:00
Dean Herbert
39067e6926 Fix slider input handling potentially being offset after composer area resize
Closes https://github.com/ppy/osu/issues/12671.
2021-05-06 17:19:19 +09: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
f586bc46e6 Avoid using EditorBeatmap.SelectedHitObjects 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
Dean Herbert
ec1c336b0a Fix a couple of inspections 2021-04-27 13:23:14 +09:00
Dean Herbert
8795c5f082 Update osu! editor transform logic to allow adjustments to DrawableSliderRepeat and DrawableSliderTail 2021-04-26 15:27:10 +09:00
Dean Herbert
e8d83f2f99 Rename "EditRuleset" and "EditPlayfield" to use full "Editor" keyword 2021-04-26 14:33:30 +09:00
Dean Herbert
0f70469d1c Only apply custom editor overrides if hit animations is disabled 2021-04-21 19:44:17 +09:00
Dean Herbert
f2824a222a Adjust existing fades to close match stable editor 2021-04-21 19:41:15 +09: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
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
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
Dean Herbert
401bf368a7 Merge branch 'fix-slider-scale-crash' into fix-slider-zero-length 2021-04-16 16:58:19 +09:00
Dean Herbert
8de68e0ebf Fix div-by-zero when scaling a 1-dimensional slider 2021-04-16 16:55:26 +09:00
Dean Herbert
ff408b852e Handle scaling a slider below minimum length 2021-04-16 15:45:24 +09:00
Dean Herbert
89373638be Handle control point deletion when the resulting slider would be too short to be useful 2021-04-16 15:45:24 +09:00
Dean Herbert
2949a6bbdc Handle control point drag revert 2021-04-16 15:45:24 +09:00
Dean Herbert
d38e294d96 Centralise length validation function 2021-04-16 15:45:24 +09:00
Dean Herbert
965a1ead36 Disallow zero-length slider blueprint placements 2021-04-16 14:38:30 +09:00
Dean Herbert
5c0ef55691 Rename SliderPlacementState to make way for more generic version 2021-04-16 14:09:35 +09:00
Dean Herbert
1ff4e2076f Merge branch 'master' into verify-tab 2021-04-13 23:05:48 +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
304fe5cd34 Add CheckBackground to OsuBeatmapVerifier 2021-04-13 10:41:02 +02:00
Naxess
60c2494b31 Make BeatmapVerifier an interface 2021-04-13 10:40:56 +02:00
Naxess
c8cb4286f6 Add reference for screen bounding box numbers 2021-04-13 10:35:06 +02:00
Dean Herbert
fbc6fb8fc5 Split out common logic into private method and add inline comment for future visitors 2021-04-13 15:35:57 +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
d9e3276d0e Don't update path type once immediately 2021-04-12 19:18:22 +02: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
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
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
Dean Herbert
8bf85d737c Change Metadata into a get property 2021-04-12 15:52:29 +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
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
Naxess
dac733cced Fix field name and accessibility 2021-04-10 15:49:57 +02: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
d1007ff26a Move components to more appropriate spot 2021-04-10 13:02:22 +02:00