// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. // See the LICENCE file in the repository root for full licence text. using System.Collections.Generic; using osu.Framework.Bindables; using osu.Game.Rulesets.Objects.Types; using osuTK.Graphics; namespace osu.Game.Rulesets.Catch.Objects { /// /// Represents a single object that can be caught by the catcher. /// This includes normal fruits, droplets, and bananas but excludes objects that act only as a container of nested hit objects. /// public abstract class PalpableCatchHitObject : CatchHitObject, IHasComboInformation { /// /// Difference between the distance to the next object /// and the distance that would have triggered a hyper dash. /// A value close to 0 indicates a difficult jump (for difficulty calculation). /// public float DistanceToHyperDash { get; set; } public readonly Bindable HyperDashBindable = new Bindable(); /// /// Whether this fruit can initiate a hyperdash. /// public bool HyperDash => HyperDashBindable.Value; private CatchHitObject hyperDashTarget; /// /// The target fruit if we are to initiate a hyperdash. /// public CatchHitObject HyperDashTarget { get => hyperDashTarget; set { hyperDashTarget = value; HyperDashBindable.Value = value != null; } } Color4 IHasComboInformation.GetComboColour(IReadOnlyList comboColours) => comboColours[(IndexInBeatmap + 1) % comboColours.Count]; } }