From b6aedb22d8a5b169b23f528bd3430dfc82162074 Mon Sep 17 00:00:00 2001 From: BlauFx Date: Sun, 15 Mar 2020 01:25:02 +0100 Subject: [PATCH 01/12] Add approachcircle mod --- .../Mods/OsuModApproachCircle.cs | 60 +++++++++++++++++++ osu.Game.Rulesets.Osu/OsuRuleset.cs | 1 + 2 files changed, 61 insertions(+) create mode 100644 osu.Game.Rulesets.Osu/Mods/OsuModApproachCircle.cs diff --git a/osu.Game.Rulesets.Osu/Mods/OsuModApproachCircle.cs b/osu.Game.Rulesets.Osu/Mods/OsuModApproachCircle.cs new file mode 100644 index 0000000000..42851e5cda --- /dev/null +++ b/osu.Game.Rulesets.Osu/Mods/OsuModApproachCircle.cs @@ -0,0 +1,60 @@ +// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. +// See the LICENCE file in the repository root for full licence text. + +using System; +using System.Collections.Generic; +using osu.Framework.Bindables; +using osu.Framework.Extensions.IEnumerableExtensions; +using osu.Framework.Graphics; +using osu.Framework.Graphics.Sprites; +using osu.Game.Configuration; +using osu.Game.Rulesets.Mods; +using osu.Game.Rulesets.Objects.Drawables; +using osu.Game.Rulesets.Osu.Objects.Drawables; + +namespace osu.Game.Rulesets.Osu.Mods +{ + internal class OsuModApproachCircle : Mod, IApplicableToDrawableHitObjects + { + public override string Name => "Approach Circle"; + public override string Acronym => "AC"; + public override string Description => "Never trust the approach circles..."; + public override double ScoreMultiplier => 1; + + public override IconUsage? Icon { get; } = FontAwesome.Regular.Circle; + + [SettingSource("Easing", "Change the easing type of the approach circles.", 0)] + public Bindable BindableEasing { get; } = new Bindable(); + + [SettingSource("Scale", "Change the factor of the approach circle scale.", 1)] + public BindableFloat Scale { get; } = new BindableFloat + { + Precision = 0.1f, + MinValue = 2, + MaxValue = 10, + Default = 4, + Value = 4, + }; + + public void ApplyToDrawableHitObjects(IEnumerable drawables) + { + drawables.ForEach(drawable => + { + drawable.ApplyCustomUpdateState += (drawableHitObj, state) => + { + if (!(drawableHitObj is DrawableOsuHitObject drawableOsuHitObj) || !(drawableHitObj is DrawableHitCircle hitCircle)) return; + + var obj = drawableOsuHitObj.HitObject; + + hitCircle.BeginAbsoluteSequence(obj.StartTime - obj.TimePreempt, true); + hitCircle.ApproachCircle.ScaleTo(Scale.Value); + + hitCircle.ApproachCircle.FadeIn(Math.Min(obj.TimeFadeIn, obj.TimePreempt)); + hitCircle.ApproachCircle.ScaleTo(1f, obj.TimePreempt, BindableEasing.Value); + + hitCircle.ApproachCircle.Expire(true); + }; + }); + } + } +} diff --git a/osu.Game.Rulesets.Osu/OsuRuleset.cs b/osu.Game.Rulesets.Osu/OsuRuleset.cs index 148869f5e8..64b8ca4ab1 100644 --- a/osu.Game.Rulesets.Osu/OsuRuleset.cs +++ b/osu.Game.Rulesets.Osu/OsuRuleset.cs @@ -150,6 +150,7 @@ namespace osu.Game.Rulesets.Osu new MultiMod(new OsuModGrow(), new OsuModDeflate()), new MultiMod(new ModWindUp(), new ModWindDown()), new OsuModTraceable(), + new OsuModApproachCircle(), }; case ModType.System: From d9aef6f813d9666e18dbe313498317fea200dbb4 Mon Sep 17 00:00:00 2001 From: BlauFx Date: Sun, 15 Mar 2020 18:53:40 +0100 Subject: [PATCH 02/12] Change label of attribute --- osu.Game.Rulesets.Osu/Mods/OsuModApproachCircle.cs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/osu.Game.Rulesets.Osu/Mods/OsuModApproachCircle.cs b/osu.Game.Rulesets.Osu/Mods/OsuModApproachCircle.cs index 42851e5cda..4e75e4b0a8 100644 --- a/osu.Game.Rulesets.Osu/Mods/OsuModApproachCircle.cs +++ b/osu.Game.Rulesets.Osu/Mods/OsuModApproachCircle.cs @@ -26,14 +26,15 @@ namespace osu.Game.Rulesets.Osu.Mods [SettingSource("Easing", "Change the easing type of the approach circles.", 0)] public Bindable BindableEasing { get; } = new Bindable(); - [SettingSource("Scale", "Change the factor of the approach circle scale.", 1)] + [SettingSource("Scale the size", "Change the factor of the approach circle scale.", 1)] + public BindableFloat Scale { get; } = new BindableFloat { Precision = 0.1f, MinValue = 2, MaxValue = 10, Default = 4, - Value = 4, + Value = 4 }; public void ApplyToDrawableHitObjects(IEnumerable drawables) From 83a4fb6f37f0fe725e52771e1d762cd407a56e2c Mon Sep 17 00:00:00 2001 From: BlauFx Date: Sun, 15 Mar 2020 19:19:09 +0100 Subject: [PATCH 03/12] Remove empty lines --- osu.Game.Rulesets.Osu/Mods/OsuModApproachCircle.cs | 2 -- 1 file changed, 2 deletions(-) diff --git a/osu.Game.Rulesets.Osu/Mods/OsuModApproachCircle.cs b/osu.Game.Rulesets.Osu/Mods/OsuModApproachCircle.cs index 4e75e4b0a8..0e41bef3c8 100644 --- a/osu.Game.Rulesets.Osu/Mods/OsuModApproachCircle.cs +++ b/osu.Game.Rulesets.Osu/Mods/OsuModApproachCircle.cs @@ -20,14 +20,12 @@ namespace osu.Game.Rulesets.Osu.Mods public override string Acronym => "AC"; public override string Description => "Never trust the approach circles..."; public override double ScoreMultiplier => 1; - public override IconUsage? Icon { get; } = FontAwesome.Regular.Circle; [SettingSource("Easing", "Change the easing type of the approach circles.", 0)] public Bindable BindableEasing { get; } = new Bindable(); [SettingSource("Scale the size", "Change the factor of the approach circle scale.", 1)] - public BindableFloat Scale { get; } = new BindableFloat { Precision = 0.1f, From 8892f2c3dd2bb92d3738b122456223c30a1cea8d Mon Sep 17 00:00:00 2001 From: BlauFx Date: Sun, 15 Mar 2020 20:41:28 +0100 Subject: [PATCH 04/12] Remove redundant check MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Bartłomiej Dach --- osu.Game.Rulesets.Osu/Mods/OsuModApproachCircle.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game.Rulesets.Osu/Mods/OsuModApproachCircle.cs b/osu.Game.Rulesets.Osu/Mods/OsuModApproachCircle.cs index 0e41bef3c8..b227b05436 100644 --- a/osu.Game.Rulesets.Osu/Mods/OsuModApproachCircle.cs +++ b/osu.Game.Rulesets.Osu/Mods/OsuModApproachCircle.cs @@ -41,7 +41,7 @@ namespace osu.Game.Rulesets.Osu.Mods { drawable.ApplyCustomUpdateState += (drawableHitObj, state) => { - if (!(drawableHitObj is DrawableOsuHitObject drawableOsuHitObj) || !(drawableHitObj is DrawableHitCircle hitCircle)) return; + if (!(drawableHitObj is DrawableHitCircle hitCircle)) return; var obj = drawableOsuHitObj.HitObject; From bc705616ab62867cebc66e502cff5de82b46f5b6 Mon Sep 17 00:00:00 2001 From: BlauFx Date: Sun, 15 Mar 2020 20:46:12 +0100 Subject: [PATCH 05/12] Fix bdach's suggestion --- osu.Game.Rulesets.Osu/Mods/OsuModApproachCircle.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game.Rulesets.Osu/Mods/OsuModApproachCircle.cs b/osu.Game.Rulesets.Osu/Mods/OsuModApproachCircle.cs index b227b05436..5b5992954c 100644 --- a/osu.Game.Rulesets.Osu/Mods/OsuModApproachCircle.cs +++ b/osu.Game.Rulesets.Osu/Mods/OsuModApproachCircle.cs @@ -43,7 +43,7 @@ namespace osu.Game.Rulesets.Osu.Mods { if (!(drawableHitObj is DrawableHitCircle hitCircle)) return; - var obj = drawableOsuHitObj.HitObject; + var obj = hitCircle.HitObject; hitCircle.BeginAbsoluteSequence(obj.StartTime - obj.TimePreempt, true); hitCircle.ApproachCircle.ScaleTo(Scale.Value); From 405030da471b6388d015b941a04cb466b2def9da Mon Sep 17 00:00:00 2001 From: BlauFx Date: Mon, 16 Mar 2020 20:34:53 +0100 Subject: [PATCH 06/12] Resolving bdach's requested to change the enum member names and reduce the amount of selectable easing types --- .../Mods/OsuModApproachCircle.cs | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/osu.Game.Rulesets.Osu/Mods/OsuModApproachCircle.cs b/osu.Game.Rulesets.Osu/Mods/OsuModApproachCircle.cs index 5b5992954c..8e0175b5a3 100644 --- a/osu.Game.Rulesets.Osu/Mods/OsuModApproachCircle.cs +++ b/osu.Game.Rulesets.Osu/Mods/OsuModApproachCircle.cs @@ -23,7 +23,7 @@ namespace osu.Game.Rulesets.Osu.Mods public override IconUsage? Icon { get; } = FontAwesome.Regular.Circle; [SettingSource("Easing", "Change the easing type of the approach circles.", 0)] - public Bindable BindableEasing { get; } = new Bindable(); + public Bindable BindableEasing { get; } = new Bindable(); [SettingSource("Scale the size", "Change the factor of the approach circle scale.", 1)] public BindableFloat Scale { get; } = new BindableFloat @@ -49,11 +49,25 @@ namespace osu.Game.Rulesets.Osu.Mods hitCircle.ApproachCircle.ScaleTo(Scale.Value); hitCircle.ApproachCircle.FadeIn(Math.Min(obj.TimeFadeIn, obj.TimePreempt)); - hitCircle.ApproachCircle.ScaleTo(1f, obj.TimePreempt, BindableEasing.Value); + + hitCircle.ApproachCircle.ScaleTo(1f, obj.TimePreempt, (Easing)BindableEasing.Value); hitCircle.ApproachCircle.Expire(true); }; }); } + + internal enum ReadableEasing + { + Accelerate = 2, + Accelerate2 = 6, + Accelerate3 = 12, + AccelerateInAfterDeceleraingeOut = 29, + CasualBounces = 32, + CasualBouncesWhileAccelerating = 24, + Decelerate = 1, + DecelerateAfterAccelerating = 8, + Default = 0, + } } } From 2ce487bdacf8dc105d12a63f6613535585bb4823 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Wed, 16 Jun 2021 14:24:07 +0900 Subject: [PATCH 07/12] Rename mod and fix easing mappings / naming --- .../Mods/OsuModApproachCircle.cs | 73 ------------ .../Mods/OsuModDifferentApproach.cs | 110 ++++++++++++++++++ osu.Game.Rulesets.Osu/OsuRuleset.cs | 2 +- 3 files changed, 111 insertions(+), 74 deletions(-) delete mode 100644 osu.Game.Rulesets.Osu/Mods/OsuModApproachCircle.cs create mode 100644 osu.Game.Rulesets.Osu/Mods/OsuModDifferentApproach.cs diff --git a/osu.Game.Rulesets.Osu/Mods/OsuModApproachCircle.cs b/osu.Game.Rulesets.Osu/Mods/OsuModApproachCircle.cs deleted file mode 100644 index 8e0175b5a3..0000000000 --- a/osu.Game.Rulesets.Osu/Mods/OsuModApproachCircle.cs +++ /dev/null @@ -1,73 +0,0 @@ -// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. -// See the LICENCE file in the repository root for full licence text. - -using System; -using System.Collections.Generic; -using osu.Framework.Bindables; -using osu.Framework.Extensions.IEnumerableExtensions; -using osu.Framework.Graphics; -using osu.Framework.Graphics.Sprites; -using osu.Game.Configuration; -using osu.Game.Rulesets.Mods; -using osu.Game.Rulesets.Objects.Drawables; -using osu.Game.Rulesets.Osu.Objects.Drawables; - -namespace osu.Game.Rulesets.Osu.Mods -{ - internal class OsuModApproachCircle : Mod, IApplicableToDrawableHitObjects - { - public override string Name => "Approach Circle"; - public override string Acronym => "AC"; - public override string Description => "Never trust the approach circles..."; - public override double ScoreMultiplier => 1; - public override IconUsage? Icon { get; } = FontAwesome.Regular.Circle; - - [SettingSource("Easing", "Change the easing type of the approach circles.", 0)] - public Bindable BindableEasing { get; } = new Bindable(); - - [SettingSource("Scale the size", "Change the factor of the approach circle scale.", 1)] - public BindableFloat Scale { get; } = new BindableFloat - { - Precision = 0.1f, - MinValue = 2, - MaxValue = 10, - Default = 4, - Value = 4 - }; - - public void ApplyToDrawableHitObjects(IEnumerable drawables) - { - drawables.ForEach(drawable => - { - drawable.ApplyCustomUpdateState += (drawableHitObj, state) => - { - if (!(drawableHitObj is DrawableHitCircle hitCircle)) return; - - var obj = hitCircle.HitObject; - - hitCircle.BeginAbsoluteSequence(obj.StartTime - obj.TimePreempt, true); - hitCircle.ApproachCircle.ScaleTo(Scale.Value); - - hitCircle.ApproachCircle.FadeIn(Math.Min(obj.TimeFadeIn, obj.TimePreempt)); - - hitCircle.ApproachCircle.ScaleTo(1f, obj.TimePreempt, (Easing)BindableEasing.Value); - - hitCircle.ApproachCircle.Expire(true); - }; - }); - } - - internal enum ReadableEasing - { - Accelerate = 2, - Accelerate2 = 6, - Accelerate3 = 12, - AccelerateInAfterDeceleraingeOut = 29, - CasualBounces = 32, - CasualBouncesWhileAccelerating = 24, - Decelerate = 1, - DecelerateAfterAccelerating = 8, - Default = 0, - } - } -} diff --git a/osu.Game.Rulesets.Osu/Mods/OsuModDifferentApproach.cs b/osu.Game.Rulesets.Osu/Mods/OsuModDifferentApproach.cs new file mode 100644 index 0000000000..db612b6269 --- /dev/null +++ b/osu.Game.Rulesets.Osu/Mods/OsuModDifferentApproach.cs @@ -0,0 +1,110 @@ +// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. +// See the LICENCE file in the repository root for full licence text. + +using System; +using System.Collections.Generic; +using osu.Framework.Bindables; +using osu.Framework.Extensions.IEnumerableExtensions; +using osu.Framework.Graphics; +using osu.Framework.Graphics.Sprites; +using osu.Game.Configuration; +using osu.Game.Rulesets.Mods; +using osu.Game.Rulesets.Objects.Drawables; +using osu.Game.Rulesets.Osu.Objects.Drawables; + +namespace osu.Game.Rulesets.Osu.Mods +{ + internal class OsuModDifferentApproach : Mod, IApplicableToDrawableHitObjects + { + public override string Name => "Approach Different"; + public override string Acronym => "AD"; + public override string Description => "Never trust the approach circles..."; + public override double ScoreMultiplier => 1; + public override IconUsage? Icon { get; } = FontAwesome.Regular.Circle; + + [SettingSource("Easing", "Change the animation curve of the approach circles.", 0)] + public Bindable BindableEasing { get; } = new Bindable(); + + [SettingSource("Initial size", "Change the initial size of the approach circle, relative to hit circles.", 1)] + public BindableFloat Scale { get; } = new BindableFloat + { + Precision = 0.1f, + MinValue = 2, + MaxValue = 10, + Default = 4, + Value = 4 + }; + + public void ApplyToDrawableHitObjects(IEnumerable drawables) + { + drawables.ForEach(drawable => + { + drawable.ApplyCustomUpdateState += (drawableHitObj, state) => + { + if (!(drawableHitObj is DrawableHitCircle hitCircle)) return; + + var obj = hitCircle.HitObject; + + hitCircle.BeginAbsoluteSequence(obj.StartTime - obj.TimePreempt, true); + hitCircle.ApproachCircle.ScaleTo(Scale.Value); + + hitCircle.ApproachCircle.FadeIn(Math.Min(obj.TimeFadeIn, obj.TimePreempt)); + + hitCircle.ApproachCircle.ScaleTo(1f, obj.TimePreempt, getEasing(BindableEasing.Value)); + + hitCircle.ApproachCircle.Expire(true); + }; + }); + } + + private Easing getEasing(ApproachCircleEasing approachEasing) + { + switch (approachEasing) + { + default: + return Easing.None; + + case ApproachCircleEasing.Accelerate1: + return Easing.In; + + case ApproachCircleEasing.Accelerate2: + return Easing.InCubic; + + case ApproachCircleEasing.Accelerate3: + return Easing.InQuint; + + case ApproachCircleEasing.Gravity: + return Easing.InBack; + + case ApproachCircleEasing.Decelerate1: + return Easing.Out; + + case ApproachCircleEasing.Decelerate2: + return Easing.OutCubic; + + case ApproachCircleEasing.Decelerate3: + return Easing.OutQuint; + + case ApproachCircleEasing.InOut1: + return Easing.InOutCubic; + + case ApproachCircleEasing.InOut2: + return Easing.InOutQuint; + } + } + + public enum ApproachCircleEasing + { + Default, + Accelerate1, + Accelerate2, + Accelerate3, + Gravity, + Decelerate1, + Decelerate2, + Decelerate3, + InOut1, + InOut2, + } + } +} diff --git a/osu.Game.Rulesets.Osu/OsuRuleset.cs b/osu.Game.Rulesets.Osu/OsuRuleset.cs index 0f7ee6ade2..217803ee7b 100644 --- a/osu.Game.Rulesets.Osu/OsuRuleset.cs +++ b/osu.Game.Rulesets.Osu/OsuRuleset.cs @@ -187,7 +187,7 @@ namespace osu.Game.Rulesets.Osu new MultiMod(new ModWindUp(), new ModWindDown()), new OsuModTraceable(), new OsuModBarrelRoll(), - new OsuModApproachCircle(), + new OsuModDifferentApproach(), }; case ModType.System: From b1dd502e062298c00022cefbf7bbe107d58ad032 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Wed, 16 Jun 2021 15:09:42 +0900 Subject: [PATCH 08/12] Rename class to match new name --- .../{OsuModDifferentApproach.cs => OsuModApproachDifferent.cs} | 2 +- osu.Game.Rulesets.Osu/OsuRuleset.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) rename osu.Game.Rulesets.Osu/Mods/{OsuModDifferentApproach.cs => OsuModApproachDifferent.cs} (97%) diff --git a/osu.Game.Rulesets.Osu/Mods/OsuModDifferentApproach.cs b/osu.Game.Rulesets.Osu/Mods/OsuModApproachDifferent.cs similarity index 97% rename from osu.Game.Rulesets.Osu/Mods/OsuModDifferentApproach.cs rename to osu.Game.Rulesets.Osu/Mods/OsuModApproachDifferent.cs index db612b6269..87358112b3 100644 --- a/osu.Game.Rulesets.Osu/Mods/OsuModDifferentApproach.cs +++ b/osu.Game.Rulesets.Osu/Mods/OsuModApproachDifferent.cs @@ -14,7 +14,7 @@ using osu.Game.Rulesets.Osu.Objects.Drawables; namespace osu.Game.Rulesets.Osu.Mods { - internal class OsuModDifferentApproach : Mod, IApplicableToDrawableHitObjects + public class OsuModApproachDifferent : Mod, IApplicableToDrawableHitObjects { public override string Name => "Approach Different"; public override string Acronym => "AD"; diff --git a/osu.Game.Rulesets.Osu/OsuRuleset.cs b/osu.Game.Rulesets.Osu/OsuRuleset.cs index 217803ee7b..1b9bcd19fd 100644 --- a/osu.Game.Rulesets.Osu/OsuRuleset.cs +++ b/osu.Game.Rulesets.Osu/OsuRuleset.cs @@ -187,7 +187,7 @@ namespace osu.Game.Rulesets.Osu new MultiMod(new ModWindUp(), new ModWindDown()), new OsuModTraceable(), new OsuModBarrelRoll(), - new OsuModDifferentApproach(), + new OsuModApproachDifferent(), }; case ModType.System: From f6f1a068b252bc2e72b364a82f6231dbdbd73912 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Wed, 16 Jun 2021 15:15:12 +0900 Subject: [PATCH 09/12] Rename "easing" references to be "style" instead --- .../Mods/OsuModApproachDifferent.cs | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/osu.Game.Rulesets.Osu/Mods/OsuModApproachDifferent.cs b/osu.Game.Rulesets.Osu/Mods/OsuModApproachDifferent.cs index 87358112b3..cd718a7b18 100644 --- a/osu.Game.Rulesets.Osu/Mods/OsuModApproachDifferent.cs +++ b/osu.Game.Rulesets.Osu/Mods/OsuModApproachDifferent.cs @@ -22,8 +22,8 @@ namespace osu.Game.Rulesets.Osu.Mods public override double ScoreMultiplier => 1; public override IconUsage? Icon { get; } = FontAwesome.Regular.Circle; - [SettingSource("Easing", "Change the animation curve of the approach circles.", 0)] - public Bindable BindableEasing { get; } = new Bindable(); + [SettingSource("Style", "Change the animation style of the approach circles.", 0)] + public Bindable Style { get; } = new Bindable(); [SettingSource("Initial size", "Change the initial size of the approach circle, relative to hit circles.", 1)] public BindableFloat Scale { get; } = new BindableFloat @@ -50,50 +50,50 @@ namespace osu.Game.Rulesets.Osu.Mods hitCircle.ApproachCircle.FadeIn(Math.Min(obj.TimeFadeIn, obj.TimePreempt)); - hitCircle.ApproachCircle.ScaleTo(1f, obj.TimePreempt, getEasing(BindableEasing.Value)); + hitCircle.ApproachCircle.ScaleTo(1f, obj.TimePreempt, getEasing(Style.Value)); hitCircle.ApproachCircle.Expire(true); }; }); } - private Easing getEasing(ApproachCircleEasing approachEasing) + private Easing getEasing(AnimationStyle approachEasing) { switch (approachEasing) { default: return Easing.None; - case ApproachCircleEasing.Accelerate1: + case AnimationStyle.Accelerate1: return Easing.In; - case ApproachCircleEasing.Accelerate2: + case AnimationStyle.Accelerate2: return Easing.InCubic; - case ApproachCircleEasing.Accelerate3: + case AnimationStyle.Accelerate3: return Easing.InQuint; - case ApproachCircleEasing.Gravity: + case AnimationStyle.Gravity: return Easing.InBack; - case ApproachCircleEasing.Decelerate1: + case AnimationStyle.Decelerate1: return Easing.Out; - case ApproachCircleEasing.Decelerate2: + case AnimationStyle.Decelerate2: return Easing.OutCubic; - case ApproachCircleEasing.Decelerate3: + case AnimationStyle.Decelerate3: return Easing.OutQuint; - case ApproachCircleEasing.InOut1: + case AnimationStyle.InOut1: return Easing.InOutCubic; - case ApproachCircleEasing.InOut2: + case AnimationStyle.InOut2: return Easing.InOutQuint; } } - public enum ApproachCircleEasing + public enum AnimationStyle { Default, Accelerate1, From ee5f4f18568e69d7263aba6381c0035874d4a232 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Wed, 16 Jun 2021 17:27:43 +0900 Subject: [PATCH 10/12] Remove default (and make default "Gravity") --- osu.Game.Rulesets.Osu/Mods/OsuModApproachDifferent.cs | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/osu.Game.Rulesets.Osu/Mods/OsuModApproachDifferent.cs b/osu.Game.Rulesets.Osu/Mods/OsuModApproachDifferent.cs index cd718a7b18..d01c036768 100644 --- a/osu.Game.Rulesets.Osu/Mods/OsuModApproachDifferent.cs +++ b/osu.Game.Rulesets.Osu/Mods/OsuModApproachDifferent.cs @@ -95,16 +95,15 @@ namespace osu.Game.Rulesets.Osu.Mods public enum AnimationStyle { - Default, + Gravity, + InOut1, + InOut2, Accelerate1, Accelerate2, Accelerate3, - Gravity, Decelerate1, Decelerate2, Decelerate3, - InOut1, - InOut2, } } } From 0c1023da3115e3741703f2e4eb719077ac2374ba Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Wed, 16 Jun 2021 17:27:52 +0900 Subject: [PATCH 11/12] Simplify transform logic --- .../Mods/OsuModApproachDifferent.cs | 20 ++++++++----------- 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/osu.Game.Rulesets.Osu/Mods/OsuModApproachDifferent.cs b/osu.Game.Rulesets.Osu/Mods/OsuModApproachDifferent.cs index d01c036768..8f772e88ac 100644 --- a/osu.Game.Rulesets.Osu/Mods/OsuModApproachDifferent.cs +++ b/osu.Game.Rulesets.Osu/Mods/OsuModApproachDifferent.cs @@ -39,27 +39,23 @@ namespace osu.Game.Rulesets.Osu.Mods { drawables.ForEach(drawable => { - drawable.ApplyCustomUpdateState += (drawableHitObj, state) => + drawable.ApplyCustomUpdateState += (drawableObject, state) => { - if (!(drawableHitObj is DrawableHitCircle hitCircle)) return; + if (!(drawableObject is DrawableHitCircle drawableHitCircle)) return; - var obj = hitCircle.HitObject; + var hitCircle = drawableHitCircle.HitObject; - hitCircle.BeginAbsoluteSequence(obj.StartTime - obj.TimePreempt, true); - hitCircle.ApproachCircle.ScaleTo(Scale.Value); + drawableHitCircle.ApproachCircle.ClearTransforms(targetMember: nameof(Scale)); - hitCircle.ApproachCircle.FadeIn(Math.Min(obj.TimeFadeIn, obj.TimePreempt)); - - hitCircle.ApproachCircle.ScaleTo(1f, obj.TimePreempt, getEasing(Style.Value)); - - hitCircle.ApproachCircle.Expire(true); + using (drawableHitCircle.BeginAbsoluteSequence(hitCircle.StartTime - hitCircle.TimePreempt)) + drawableHitCircle.ApproachCircle.ScaleTo(Scale.Value).ScaleTo(1f, hitCircle.TimePreempt, getEasing(Style.Value)); }; }); } - private Easing getEasing(AnimationStyle approachEasing) + private Easing getEasing(AnimationStyle style) { - switch (approachEasing) + switch (style) { default: return Easing.None; From 7891ee4f32ea77b659c33a6d6b7f7e537eee7112 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Wed, 16 Jun 2021 17:32:30 +0900 Subject: [PATCH 12/12] Change order of settings to make scrolling easier There's an issue with dropdown menus nested inside a scroll view being very frustrating to scroll to off-screen items. This works around that to some extent by giving the user more "parent-scrollable" space to mouse wheel or drag over. --- .../Mods/OsuModApproachDifferent.cs | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/osu.Game.Rulesets.Osu/Mods/OsuModApproachDifferent.cs b/osu.Game.Rulesets.Osu/Mods/OsuModApproachDifferent.cs index 8f772e88ac..3e638c4833 100644 --- a/osu.Game.Rulesets.Osu/Mods/OsuModApproachDifferent.cs +++ b/osu.Game.Rulesets.Osu/Mods/OsuModApproachDifferent.cs @@ -1,7 +1,6 @@ // Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. // See the LICENCE file in the repository root for full licence text. -using System; using System.Collections.Generic; using osu.Framework.Bindables; using osu.Framework.Extensions.IEnumerableExtensions; @@ -22,19 +21,17 @@ namespace osu.Game.Rulesets.Osu.Mods public override double ScoreMultiplier => 1; public override IconUsage? Icon { get; } = FontAwesome.Regular.Circle; - [SettingSource("Style", "Change the animation style of the approach circles.", 0)] - public Bindable Style { get; } = new Bindable(); - - [SettingSource("Initial size", "Change the initial size of the approach circle, relative to hit circles.", 1)] - public BindableFloat Scale { get; } = new BindableFloat + [SettingSource("Initial size", "Change the initial size of the approach circle, relative to hit circles.", 0)] + public BindableFloat Scale { get; } = new BindableFloat(4) { Precision = 0.1f, MinValue = 2, MaxValue = 10, - Default = 4, - Value = 4 }; + [SettingSource("Style", "Change the animation style of the approach circles.", 1)] + public Bindable Style { get; } = new Bindable(); + public void ApplyToDrawableHitObjects(IEnumerable drawables) { drawables.ForEach(drawable =>