Commit Graph

3353 Commits

Author SHA1 Message Date
a1e64f4e3c Use the existing toolbox design 2021-04-30 14:41:06 +09:00
e69ec91c07 Add xmldoc for CurrentRotation 2021-04-30 11:25:39 +09:00
7bf3498e2a Calculate playfield scale locally 2021-04-30 02:49:19 +03:00
25e0fb1cf9 Refactor OsuModBarrelRoll to allow it's usage by other rulesets 2021-04-30 01:59:59 +03: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
5b009c21bb Merge branch 'master' into abstract-blueprint-handling 2021-04-29 16:10:22 +09:00
73dfb04df8 Fix uninitialized scrollLength value is used 2021-04-29 15:17:30 +09:00
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
c83c804057 Expose lifetime entries from HOC 2021-04-29 14:42:41 +09:00
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
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
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
f3c7694eeb Rename methods to match generally how these find-methods are named elsewhere 2021-04-28 16:57:52 +09:00
48d6c9ac4b Move snap/divisor helper methods to inside ControlPointInfo 2021-04-28 16:47:30 +09:00
61b7dc1e06 Fix bonus-only maps having 700K base score 2021-04-28 03:42:29 +09:00
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
1281993f1f Fix bonus score not calculated from the correct statistics 2021-04-27 22:42:58 +09:00
200352b750 Rename unsnap check templates 2021-04-27 13:56:05 +02:00
b87446a577 Simplify HitObjectLifetimeEntry logic a bit 2021-04-27 19:37:01 +09:00
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
7ec5ea1eb5 Remove hitobject terminology from base classes 2021-04-27 19:01:29 +09:00
dd3d8e5d03 Make SelectionHandler abstract to ensure things get implemented 2021-04-27 19:01:29 +09:00
f2e56bd306 Refactor editor selection/blueprint components to be generic 2021-04-27 19:01:29 +09:00
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
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
c9e6ca5378 Use now-public Entry.SetLifetime method 2021-04-27 15:25:05 +09:00
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
ec1c336b0a Fix a couple of inspections 2021-04-27 13:23:14 +09:00
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
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
a3c1b1fd52 Fix accessibility of areConcurrent 2021-04-27 01:24:38 +02:00
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
b9e4f73f78 Add concurrent objects check to BeatmapVerifier 2021-04-26 20:28:59 +02:00
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
08a232f7fa Add method to safely refresh DrawableHitObject transforms 2021-04-26 20:08:40 +02:00
9b9c473616 Remove redundant string formatting 2021-04-26 16:17:38 +02:00
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
6d2a5b614c Merge branch 'master' into drawable-object 2021-04-26 18:33:44 +09:00
fd5fbaf0db Rename ruleset wrapper class 2021-04-26 15:37:42 +09:00
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
6561a7c7d6 Rename DrawableObject -> PoolableDrawableWithLifetime 2021-04-26 12:06:21 +09:00
20e3cadd30 freeIfInUse -> free, and add comments 2021-04-26 12:04:59 +09:00
e6474e6ff7 Remove redundant statement (lifetime is set in base) 2021-04-26 11:47:38 +09:00
8bb1fcd39b Add tests for BeatDivisorFinder 2021-04-26 07:07:32 +08:00
33a5c156a1 Use existing snap list from BindableBeatDivisor 2021-04-25 17:52:11 +02:00
e14255f395 Rename {Snap -> BeatDivisor}Finder 2021-04-25 17:44:26 +02:00
6fd77e536d Add unsnap check 2021-04-25 05:34:54 +02:00
211bff6a8f Fix cake errors 2021-04-25 09:21:25 +08:00
1f48378ce7 Add xmldoc to SnapFinder 2021-04-25 08:53:45 +08:00
e0ca44c908 Move SnapFinder from mania ruleset to osu.Game 2021-04-25 07:35:53 +08:00