From d1f24184929ef3abc469078171cb161d216147ff Mon Sep 17 00:00:00 2001 From: Derrick Timmermans Date: Fri, 22 Jul 2022 15:50:09 +0200 Subject: [PATCH 1/2] Add more checkpoints to slide fans Creates more divisions in a SlideFan, allowing smaller blocks to disappear, creating a smoother disappearance. --- osu.Game.Rulesets.Sentakki/Objects/SlideFan.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/osu.Game.Rulesets.Sentakki/Objects/SlideFan.cs b/osu.Game.Rulesets.Sentakki/Objects/SlideFan.cs index 8c5af769d..783e4d93e 100644 --- a/osu.Game.Rulesets.Sentakki/Objects/SlideFan.cs +++ b/osu.Game.Rulesets.Sentakki/Objects/SlideFan.cs @@ -9,10 +9,10 @@ protected override void CreateSlideCheckpoints() { // Add body nodes (should be two major sets) Vector2 originpoint = new Vector2(0, -SentakkiPlayfield.INTERSECTDISTANCE); - for (int i = 1; i < 3; ++i) + for (int i = 1; i < 5; ++i) { - float progress = 0.5f * i; - SlideCheckpoint checkpoint = new SlideCheckpoint(true) + float progress = 0.25f * i; + SlideCheckpoint checkpoint = new SlideCheckpoint() { Progress = progress, StartTime = StartTime + ShootDelay + ((Duration - ShootDelay) * progress), From 1849be3f4a2336645512afddf952be9c1e5e3286 Mon Sep 17 00:00:00 2001 From: Derrick Timmermans Date: Fri, 22 Jul 2022 15:54:30 +0200 Subject: [PATCH 2/2] Remove StrictCompletionOrder from SlideCheckpoint --- .../Objects/Drawables/DrawableSlideCheckpoint.cs | 8 +------- osu.Game.Rulesets.Sentakki/Objects/SlideBody.cs | 6 +++--- osu.Game.Rulesets.Sentakki/Objects/SlideCheckpoint.cs | 9 --------- 3 files changed, 4 insertions(+), 19 deletions(-) diff --git a/osu.Game.Rulesets.Sentakki/Objects/Drawables/DrawableSlideCheckpoint.cs b/osu.Game.Rulesets.Sentakki/Objects/Drawables/DrawableSlideCheckpoint.cs index a5f57838b..9307782fc 100644 --- a/osu.Game.Rulesets.Sentakki/Objects/Drawables/DrawableSlideCheckpoint.cs +++ b/osu.Game.Rulesets.Sentakki/Objects/Drawables/DrawableSlideCheckpoint.cs @@ -28,13 +28,7 @@ public class DrawableSlideCheckpoint : DrawableSentakkiHitObject // All hits can only be done after the parent StartTime public bool IsHittable => Time.Current > ParentHitObject.HitObject.StartTime && isPreviousNodeHit(); - private bool isPreviousNodeHit() - { - if (HitObject.StrictCompletionOrder) - return ThisIndex < 1 || parentSlide.SlideCheckpoints[ThisIndex - 1].IsHit; - - return ThisIndex < 2 || parentSlide.SlideCheckpoints[ThisIndex - 2].IsHit; - } + private bool isPreviousNodeHit() => ThisIndex < 2 || parentSlide.SlideCheckpoints[ThisIndex - 2].IsHit; private Container nodes; diff --git a/osu.Game.Rulesets.Sentakki/Objects/SlideBody.cs b/osu.Game.Rulesets.Sentakki/Objects/SlideBody.cs index 21f057241..b27063561 100644 --- a/osu.Game.Rulesets.Sentakki/Objects/SlideBody.cs +++ b/osu.Game.Rulesets.Sentakki/Objects/SlideBody.cs @@ -44,11 +44,11 @@ protected override void CreateNestedHitObjects(CancellationToken cancellationTok protected virtual void CreateSlideCheckpoints() { - var distance = SlideInfo.SlidePath.TotalDistance; - var nodeCount = (int)Math.Floor(distance / 100); + double distance = SlideInfo.SlidePath.TotalDistance; + int nodeCount = (int)Math.Floor(distance / 100); for (int i = 0; i < nodeCount; i++) { - var progress = (double)(i + 1) / nodeCount; + double progress = (double)(i + 1) / nodeCount; SlideCheckpoint checkpoint = new SlideCheckpoint() { Progress = (float)progress, diff --git a/osu.Game.Rulesets.Sentakki/Objects/SlideCheckpoint.cs b/osu.Game.Rulesets.Sentakki/Objects/SlideCheckpoint.cs index 26cf21763..e687b306a 100644 --- a/osu.Game.Rulesets.Sentakki/Objects/SlideCheckpoint.cs +++ b/osu.Game.Rulesets.Sentakki/Objects/SlideCheckpoint.cs @@ -8,11 +8,6 @@ namespace osu.Game.Rulesets.Sentakki.Objects { public class SlideCheckpoint : SentakkiHitObject { - public SlideCheckpoint(bool strictMode = false) - { - StrictCompletionOrder = strictMode; - } - // Used to update slides visuals public float Progress { get; set; } @@ -21,10 +16,6 @@ public SlideCheckpoint(bool strictMode = false) public int NodesToPass { get; set; } = 1; - // If this is true, then all previous checkpoints must be completed to hit this one - // This is in contrast to non-strict, where you can hit it if the n-2 checkpoint is hit - public bool StrictCompletionOrder { get; } - protected override void CreateNestedHitObjects(CancellationToken cancellationToken) { foreach (var nodePosition in NodePositions)