Commit Graph

250 Commits

Author SHA1 Message Date
f443cfb93e Move blueprint validity conditions to allow more correct external usage of EndPlacement
Until now, these were haphazardly enforce inline in blueprint
implementations. The only thing stopping complete breakage is that
`EndPlacement` wasn't called (too much) from outside the blueprint,
leaving them responsible for their own placement.

By moving this conditional out of the provided paramters to
`EndPlacement`, it allows more flexible usage of that method externally.
Coming in a future PR.
2023-05-12 16:02:22 +09:00
0a47ffcbdd Match generally used casing
Co-authored-by: Joseph Madamba <madamba.joehu@outlook.com>
2023-05-09 07:03:13 +02:00
85d0c56cd2 Fix incorrect special style description text
Closes https://github.com/ppy/osu/issues/23428.
2023-05-08 13:00:45 +09:00
7bc8908ca9 Partial everything 2022-11-27 00:00:27 +09:00
f41b79688f Avoid casting by accepting all Playfields but throwing on a bad choice 2022-10-11 16:54:41 +09:00
6ab29a62d0 Anchor drag box on time (catch, mania)
Not done for taiko because I cannot figure out how it should work with the overlapping scroll algorithm.
2022-10-11 14:23:17 +09:00
ee153a345c Add a few more overlooked beatmap save states on setup screen modifications 2022-08-16 16:31:56 +09:00
f8830c6850 Automated #nullable processing 2022-06-17 16:37:17 +09:00
5af7641e94 Add safety against playfield potentially not being available during mania note placement 2022-05-19 15:53:53 +09:00
f7e055dbfe Move mania note height offset application to a much more suitable location 2022-05-12 16:19:07 +09:00
c0abce918f Add enum to snap method as alternative to mutliple nested invocations 2022-05-12 16:19:07 +09:00
f6fc926f1a Add xmldoc and rename methods in IPositionSnapProvider for legibility 2022-05-05 15:58:21 +09:00
19467e58c1 Remove unused params from BDL methods 2022-01-15 01:06:39 +01:00
1eed2436e6 Clean up unused resolved properties 2021-12-03 18:49:49 +09:00
1a26658ba4 Add description for mania special style 2021-09-05 13:40:49 +09:00
565f147a5c Add special style setting for osu!mania 2021-09-02 23:29:14 +02:00
9dcd0bf311 Remove IPlayfieldProvider by caching Playfield 2021-06-17 10:15:24 +09:00
ef96ceb4ab Introduce IPlayfieldProvider 2021-06-15 14:43:04 +09:00
d0e57f7dd9 Use HitObject instead of DHO for mania selection blueprint layout
- Fix moving selected hold note between columns will cause a crash
2021-06-15 13:20:51 +09:00
bddc3121dc Merge branch 'master' into mania-pooling 2021-05-19 17:23:45 +09:00
ef81bdf63f Merge branch 'master' into always-use-lifetime-entry 2021-05-18 20:10:12 +09:00
562ac73e96 Merge branch 'hoc-event-queue' into mania-pooling 2021-05-18 14:54:00 +09:00
72beddaadc Remove nested blueprints from hold notes 2021-05-18 14:25:07 +09:00
e621cfc4ea Add Apply() method for applying new DHOs 2021-05-18 14:14:10 +09:00
b5afe4e506 Merge branch 'hoc-event-queue' into mania-pooling 2021-05-13 21:53:38 +09:00
2307889bf8 Fix incorrect cast 2021-05-13 21:41:28 +09:00
98e77a30d3 Move column changing logic to ManiaSelectionHandler 2021-05-13 20:13:50 +09:00
ffb6135a1b Rework hitobject blueprints to take in hitobject models 2021-05-13 19:53:32 +09:00
4a93e27e83 Revert "Fix mania editor null reference"
This reverts commit 1d023dce
2021-05-04 16:46:30 +09:00
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
1d023dcedb Fix mania editor null reference 2021-04-29 14:39:52 +09:00
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
f2e56bd306 Refactor editor selection/blueprint components to be generic 2021-04-27 19:01:29 +09:00
e8d83f2f99 Rename "EditRuleset" and "EditPlayfield" to use full "Editor" keyword 2021-04-26 14:33:30 +09:00
b37c5a8749 Rollback hold note placement when length is zero 2021-04-22 14:59:57 +09:00
119c9b4294 Fix placement blueprints not being correctly removed after a rolled back placement 2021-04-16 14:11:33 +09:00
9a02f3868c return a string instead 2021-03-29 17:29:05 +08:00
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
cd1c1bf534 Centralise cases of performing actions on the current selection
By moving this to a central location, we can avoid invoking the
EditorChangeHandler when there is no selection made. This helps
alleviate the issue pointed out in
https://github.com/ppy/osu/issues/11901, but not fix it completely.
2021-02-26 14:15:13 +09:00
e3c035fe9c Adjust namespace 2020-12-07 12:32:52 +09:00
9811c46e35 Rename application method to better describe what it actually does 2020-11-26 19:16:18 +09:00
4ef2e9548c Pass HitObjectComposer to BlueprintContainer via ctor 2020-11-13 16:59:37 +09:00
a3dc1d5730 Update existing implementations 2020-11-04 17:14:23 +09:00
3838f405dd Fix missed usages 2020-10-09 18:50:05 +09:00
a65f564e45 Add icons for other ruleset editors 2020-09-09 18:40:01 +09:00
385f7cf85d Implement mania hold note body recycling 2020-08-18 17:56:48 +09:00
8fa8c561e7 Pass hitobjects as a parameter to CreateBlueprintContainer 2020-05-29 12:20:50 +09:00
6be5917eb0 Remove necessity for custom mania interface caching 2020-05-27 23:15:16 +09:00
919ff92d15 Remove unused resolved composer 2020-05-27 22:56:12 +09:00
827345ed88 Fix mania offsets 2020-05-25 22:06:02 +09:00