// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. // See the LICENCE file in the repository root for full licence text. #nullable disable using System.Threading; using osu.Game.Rulesets.Objects.Types; using osu.Game.Rulesets.Judgements; using osu.Game.Rulesets.Scoring; using osu.Game.Rulesets.Taiko.Judgements; namespace osu.Game.Rulesets.Taiko.Objects { public class Swell : TaikoHitObject, IHasDuration { public double EndTime { get => StartTime + Duration; set => Duration = value - StartTime; } public double Duration { get; set; } /// /// The number of hits required to complete the swell successfully. /// public int RequiredHits = 10; protected override void CreateNestedHitObjects(CancellationToken cancellationToken) { base.CreateNestedHitObjects(cancellationToken); for (int i = 0; i < RequiredHits; i++) { cancellationToken.ThrowIfCancellationRequested(); AddNested(new SwellTick { Samples = Samples }); } } public override Judgement CreateJudgement() => new TaikoSwellJudgement(); protected override HitWindows CreateHitWindows() => HitWindows.Empty; } }