1
0
mirror of https://github.com/ppy/osu.git synced 2024-11-14 06:17:44 +08:00
osu-lazer/osu.Game.Rulesets.Taiko/Objects/Hit.cs

57 lines
1.7 KiB
C#
Raw Normal View History

// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
// See the LICENCE file in the repository root for full licence text.
2018-04-13 17:19:50 +08:00
using System.Linq;
2020-05-26 12:51:53 +08:00
using osu.Framework.Bindables;
using osu.Game.Audio;
2020-05-26 12:51:53 +08:00
2018-04-13 17:19:50 +08:00
namespace osu.Game.Rulesets.Taiko.Objects
{
2020-12-15 04:46:02 +08:00
public class Hit : TaikoStrongableHitObject
2018-04-13 17:19:50 +08:00
{
2020-05-26 12:51:53 +08:00
public readonly Bindable<HitType> TypeBindable = new Bindable<HitType>();
/// <summary>
/// The <see cref="HitType"/> that actuates this <see cref="Hit"/>.
/// </summary>
2020-05-26 12:51:53 +08:00
public HitType Type
{
get => TypeBindable.Value;
set
{
TypeBindable.Value = value;
updateSamplesFromType();
}
2020-05-26 12:51:53 +08:00
}
2020-12-13 19:59:46 +08:00
private void updateSamplesFromType()
{
var rimSamples = getRimSamples();
bool isRimType = Type == HitType.Rim;
if (isRimType != rimSamples.Any())
{
if (isRimType)
Samples.Add(new HitSampleInfo(HitSampleInfo.HIT_CLAP));
else
{
foreach (var sample in rimSamples)
Samples.Remove(sample);
}
}
}
/// <summary>
/// Returns an array of any samples which would cause this object to be a "rim" type hit.
/// </summary>
private HitSampleInfo[] getRimSamples() => Samples.Where(s => s.Name == HitSampleInfo.HIT_CLAP || s.Name == HitSampleInfo.HIT_WHISTLE).ToArray();
2020-12-13 19:59:46 +08:00
protected override StrongNestedHitObject CreateStrongNestedHit(double startTime) => new StrongNestedHit { StartTime = startTime };
public class StrongNestedHit : StrongNestedHitObject
{
}
2018-04-13 17:19:50 +08:00
}
}