osu/osu.Game.Rulesets.Catch/Objects/PalpableCatchHitObject.cs

51 lines
1.8 KiB
C#
Raw Normal View History

2020-11-24 23:00:11 +00:00
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
2020-11-24 10:16:03 +00:00
// See the LICENCE file in the repository root for full licence text.
using System.Collections.Generic;
using Newtonsoft.Json;
2020-11-27 01:31:18 +00:00
using osu.Framework.Bindables;
using osu.Game.Rulesets.Objects.Types;
using osuTK.Graphics;
2020-11-24 10:16:03 +00:00
namespace osu.Game.Rulesets.Catch.Objects
{
/// <summary>
/// Represents a single object that can be caught by the catcher.
2020-11-24 23:00:11 +00:00
/// This includes normal fruits, droplets, and bananas but excludes objects that act only as a container of nested hit objects.
2020-11-24 10:16:03 +00:00
/// </summary>
public abstract class PalpableCatchHitObject : CatchHitObject, IHasComboInformation
2020-11-24 10:16:03 +00:00
{
/// <summary>
/// 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).
/// </summary>
public float DistanceToHyperDash { get; set; }
2020-11-27 01:31:18 +00:00
public readonly Bindable<bool> HyperDashBindable = new Bindable<bool>();
/// <summary>
/// Whether this fruit can initiate a hyperdash.
/// </summary>
2020-11-27 01:31:18 +00:00
public bool HyperDash => HyperDashBindable.Value;
private CatchHitObject hyperDashTarget;
/// <summary>
/// The target fruit if we are to initiate a hyperdash.
/// </summary>
[JsonIgnore]
2020-11-27 01:31:18 +00:00
public CatchHitObject HyperDashTarget
{
get => hyperDashTarget;
set
{
hyperDashTarget = value;
HyperDashBindable.Value = value != null;
}
}
Color4 IHasComboInformation.GetComboColour(IReadOnlyList<Color4> comboColours) => comboColours[(IndexInBeatmap + 1) % comboColours.Count];
2020-11-24 10:16:03 +00:00
}
}