diff --git a/osu.Game.Rulesets.Taiko/Configuration/TaikoRulesetConfigManager.cs b/osu.Game.Rulesets.Taiko/Configuration/TaikoRulesetConfigManager.cs index c3bc7f6439..dd94483ec7 100644 --- a/osu.Game.Rulesets.Taiko/Configuration/TaikoRulesetConfigManager.cs +++ b/osu.Game.Rulesets.Taiko/Configuration/TaikoRulesetConfigManager.cs @@ -18,11 +18,13 @@ namespace osu.Game.Rulesets.Taiko.Configuration base.InitialiseDefaults(); SetDefault(TaikoRulesetSetting.TouchControlScheme, TaikoTouchControlScheme.KDDK); + SetDefault(TaikoRulesetSetting.SnapJudgementLocation, false); } } public enum TaikoRulesetSetting { - TouchControlScheme + TouchControlScheme, + SnapJudgementLocation } } diff --git a/osu.Game.Rulesets.Taiko/Mods/TaikoModClassic.cs b/osu.Game.Rulesets.Taiko/Mods/TaikoModClassic.cs index f63d6c2673..0c1a955b9d 100644 --- a/osu.Game.Rulesets.Taiko/Mods/TaikoModClassic.cs +++ b/osu.Game.Rulesets.Taiko/Mods/TaikoModClassic.cs @@ -10,18 +10,12 @@ using osu.Game.Rulesets.UI; namespace osu.Game.Rulesets.Taiko.Mods { - public class TaikoModClassic : ModClassic, IApplicableToDrawableRuleset, IApplicableToDrawableHitObject + public class TaikoModClassic : ModClassic, IApplicableToDrawableRuleset { public void ApplyToDrawableRuleset(DrawableRuleset drawableRuleset) { var drawableTaikoRuleset = (DrawableTaikoRuleset)drawableRuleset; drawableTaikoRuleset.LockPlayfieldAspectRange.Value = false; } - - public void ApplyToDrawableHitObject(DrawableHitObject drawable) - { - if (drawable is DrawableTaikoHitObject hit) - hit.SnapJudgementLocation = true; - } } } diff --git a/osu.Game.Rulesets.Taiko/Objects/Drawables/DrawableHit.cs b/osu.Game.Rulesets.Taiko/Objects/Drawables/DrawableHit.cs index 4fb69056da..8f34e24cec 100644 --- a/osu.Game.Rulesets.Taiko/Objects/Drawables/DrawableHit.cs +++ b/osu.Game.Rulesets.Taiko/Objects/Drawables/DrawableHit.cs @@ -7,12 +7,14 @@ using System; using System.Diagnostics; using System.Linq; using JetBrains.Annotations; +using osu.Framework.Allocation; using osu.Framework.Bindables; using osu.Framework.Graphics; using osu.Framework.Input.Events; using osu.Game.Rulesets.Objects.Drawables; using osu.Game.Rulesets.Scoring; using osu.Game.Rulesets.Taiko.Skinning.Default; +using osu.Game.Rulesets.Taiko.Configuration; using osu.Game.Skinning; namespace osu.Game.Rulesets.Taiko.Objects.Drawables @@ -39,6 +41,8 @@ namespace osu.Game.Rulesets.Taiko.Objects.Drawables private readonly Bindable type = new Bindable(); + private readonly Bindable snapJudgementLocation = new Bindable(); + public DrawableHit() : this(null) { @@ -50,6 +54,12 @@ namespace osu.Game.Rulesets.Taiko.Objects.Drawables FillMode = FillMode.Fit; } + [BackgroundDependencyLoader(true)] + private void load(TaikoRulesetConfigManager rulesetConfig) + { + rulesetConfig?.BindWith(TaikoRulesetSetting.SnapJudgementLocation, snapJudgementLocation); + } + protected override void OnApply() { type.BindTo(HitObject.TypeBindable); @@ -163,7 +173,7 @@ namespace osu.Game.Rulesets.Taiko.Objects.Drawables const float gravity_time = 300; const float gravity_travel_height = 200; - if (SnapJudgementLocation) + if (snapJudgementLocation.Value) MainPiece.MoveToX(-X); this.ScaleTo(0.8f, gravity_time * 2, Easing.OutQuad); diff --git a/osu.Game.Rulesets.Taiko/Objects/Drawables/DrawableTaikoHitObject.cs b/osu.Game.Rulesets.Taiko/Objects/Drawables/DrawableTaikoHitObject.cs index 3f4694d71d..bded93c8bc 100644 --- a/osu.Game.Rulesets.Taiko/Objects/Drawables/DrawableTaikoHitObject.cs +++ b/osu.Game.Rulesets.Taiko/Objects/Drawables/DrawableTaikoHitObject.cs @@ -25,15 +25,6 @@ namespace osu.Game.Rulesets.Taiko.Objects.Drawables private readonly Container nonProxiedContent; - /// - /// Whether the location of the hit should be snapped to the hit target before animating. - /// - /// - /// This is how osu-stable worked, but notably is not how TnT works. - /// Not snapping results in less visual feedback on hit accuracy. - /// - public bool SnapJudgementLocation { get; set; } - protected DrawableTaikoHitObject([CanBeNull] TaikoHitObject hitObject) : base(hitObject) { diff --git a/osu.Game.Rulesets.Taiko/TaikoSettingsSubsection.cs b/osu.Game.Rulesets.Taiko/TaikoSettingsSubsection.cs index 84dea474c5..93e3a592b4 100644 --- a/osu.Game.Rulesets.Taiko/TaikoSettingsSubsection.cs +++ b/osu.Game.Rulesets.Taiko/TaikoSettingsSubsection.cs @@ -30,6 +30,11 @@ namespace osu.Game.Rulesets.Taiko { LabelText = RulesetSettingsStrings.TouchControlScheme, Current = config.GetBindable(TaikoRulesetSetting.TouchControlScheme) + }, + new SettingsCheckbox + { + LabelText = "Snap notes to judgement location", + Current = config.GetBindable(TaikoRulesetSetting.SnapJudgementLocation), } }; }