protected override void CheckForResult(bool userTriggered, double timeOffset) { if (userTriggered) { DrawableSwellTick nextTick = null; foreach (var t in ticks) { if (!t.IsHit) { nextTick = t; break; } } nextTick?.TriggerResult(true); var numHits = ticks.Count(r => r.IsHit); var completion = (float)numHits / HitObject.RequiredHits; expandingRing .FadeTo(expandingRing.Alpha + Math.Clamp(completion / 16, 0.1f, 0.6f), 50) .Then() .FadeTo(completion / 8, 2000, Easing.OutQuint); MainPiece.Drawable.RotateTo((float)(completion * HitObject.Duration / 8), 4000, Easing.OutQuint); expandingRing.ScaleTo(1f + Math.Min(target_ring_scale - 1f, (target_ring_scale - 1f) * completion * 1.3f), 260, Easing.OutQuint); if (numHits == HitObject.RequiredHits) { ApplyResult(r => r.Type = HitResult.Great); } } else { if (timeOffset < 0) { return; } int numHits = 0; foreach (var tick in ticks) { if (tick.IsHit) { numHits++; continue; } tick.TriggerResult(false); } var hitResult = numHits > HitObject.RequiredHits / 2 ? HitResult.Ok : HitResult.Miss; ApplyResult(r => r.Type = hitResult); } }
protected override void CheckForResult(bool userTriggered, double timeOffset) { if (userTriggered) { var nextTick = ticks.FirstOrDefault(j => !j.IsHit); nextTick?.TriggerResult(HitResult.Great); var numHits = ticks.Count(r => r.IsHit); var completion = (float)numHits / HitObject.RequiredHits; expandingRing .FadeTo(expandingRing.Alpha + MathHelper.Clamp(completion / 16, 0.1f, 0.6f), 50) .Then() .FadeTo(completion / 8, 2000, Easing.OutQuint); symbol.RotateTo((float)(completion * HitObject.Duration / 8), 4000, Easing.OutQuint); expandingRing.ScaleTo(1f + Math.Min(target_ring_scale - 1f, (target_ring_scale - 1f) * completion * 1.3f), 260, Easing.OutQuint); if (numHits == HitObject.RequiredHits) { ApplyResult(r => r.Type = HitResult.Great); } } else { if (timeOffset < 0) { return; } int numHits = 0; foreach (var tick in ticks) { if (tick.IsHit) { numHits++; continue; } tick.TriggerResult(HitResult.Miss); } var hitResult = numHits > HitObject.RequiredHits / 2 ? HitResult.Good : HitResult.Miss; ApplyResult(r => r.Type = hitResult); } }
protected override void CheckJudgement(bool userTriggered) { if (userTriggered) { userHits++; var completion = (float)userHits / HitObject.RequiredHits; expandingRing.FadeTo(expandingRing.Alpha + MathHelper.Clamp(completion / 16, 0.1f, 0.6f), 50); expandingRing.Delay(50); expandingRing.FadeTo(completion / 8, 2000, EasingTypes.OutQuint); expandingRing.DelayReset(); symbol.RotateTo((float)(completion * HitObject.Duration / 8), 4000, EasingTypes.OutQuint); expandingRing.ScaleTo(1f + Math.Min(target_ring_scale - 1f, (target_ring_scale - 1f) * completion * 1.3f), 260, EasingTypes.OutQuint); if (userHits == HitObject.RequiredHits) { Judgement.Result = HitResult.Hit; Judgement.TaikoResult = TaikoHitResult.Great; } } else { if (Judgement.TimeOffset < 0) { return; } //TODO: THIS IS SHIT AND CAN'T EXIST POST-TAIKO WORLD CUP if (userHits > HitObject.RequiredHits / 2) { Judgement.Result = HitResult.Hit; Judgement.TaikoResult = TaikoHitResult.Good; } else { Judgement.Result = HitResult.Miss; } } }
protected override void CheckForJudgements(bool userTriggered, double timeOffset) { if (userTriggered) { AddJudgement(new TaikoIntermediateSwellJudgement()); var completion = (float)Judgements.Count / HitObject.RequiredHits; expandingRing .FadeTo(expandingRing.Alpha + MathHelper.Clamp(completion / 16, 0.1f, 0.6f), 50) .Then() .FadeTo(completion / 8, 2000, Easing.OutQuint); symbol.RotateTo((float)(completion * HitObject.Duration / 8), 4000, Easing.OutQuint); expandingRing.ScaleTo(1f + Math.Min(target_ring_scale - 1f, (target_ring_scale - 1f) * completion * 1.3f), 260, Easing.OutQuint); if (Judgements.Count == HitObject.RequiredHits) { AddJudgement(new TaikoJudgement { Result = HitResult.Great }); } } else { if (timeOffset < 0) { return; } //TODO: THIS IS SHIT AND CAN'T EXIST POST-TAIKO WORLD CUP AddJudgement(Judgements.Count > HitObject.RequiredHits / 2 ? new TaikoJudgement { Result = HitResult.Good } : new TaikoJudgement { Result = HitResult.Miss }); } }
protected override bool OnHover(HoverEvent e) { hover.FadeTo(0.05f, transition_duration, Easing.OutQuint); return(base.OnHover(e)); }