/// <summary> /// Notifies that a new judgement has occurred for this <see cref="DrawableHitObject"/>. /// </summary> /// <param name="judgement">The <see cref="Judgement"/>.</param> protected void AddJudgement(Judgement judgement) { judgementOccurred = true; // Ensure that the judgement is given a valid time offset, because this may not get set by the caller var endTime = (HitObject as IHasEndTime)?.EndTime ?? HitObject.StartTime; judgement.TimeOffset = Time.Current - endTime; judgements.Add(judgement); switch (judgement.Result) { case HitResult.None: break; case HitResult.Miss: State.Value = ArmedState.Miss; break; default: State.Value = ArmedState.Hit; break; } OnJudgement?.Invoke(this, judgement); }
/// <summary> /// Process a hit of this hitobject. Carries out judgement. /// </summary> /// <param name="judgement">Preliminary judgement information provided by the hit source.</param> /// <returns>Whether a hit was processed.</returns> protected bool UpdateJudgement(bool userTriggered) { if (Judgement.Result != null) { return(false); } Judgement.TimeOffset = Time.Current - HitObject.EndTime; CheckJudgement(userTriggered); if (Judgement.Result == null) { return(false); } switch (Judgement.Result) { default: State = ArmedState.Hit; break; case HitResult.Miss: State = ArmedState.Miss; break; } OnJudgement?.Invoke(this, Judgement); return(true); }
protected void TriggerOnJudgement(JudgementInfo j) { OnJudgement?.Invoke(j); if (AllObjectsJudged) { OnAllJudged?.Invoke(); } }
protected virtual void AddNested(DrawableHitObject h) { h.OnJudgement += (d, j) => OnJudgement?.Invoke(d, j); h.OnJudgementRemoved += (d, j) => OnJudgementRemoved?.Invoke(d, j); h.ApplyCustomUpdateState += (d, j) => ApplyCustomUpdateState?.Invoke(d, j); nestedHitObjects.Value.Add(h); }
protected void AddNested(DrawableHitObject h) { if (nestedHitObjects == null) { nestedHitObjects = new List <DrawableHitObject>(); } h.OnJudgement += (d, j) => { OnJudgement?.Invoke(d, j); }; nestedHitObjects.Add(h); }
protected virtual void AddNested(DrawableHitObject h) { if (nestedHitObjects == null) { nestedHitObjects = new List <DrawableHitObject>(); } h.OnJudgement += (d, j) => OnJudgement?.Invoke(d, j); h.OnJudgementRemoved += (d, j) => OnJudgementRemoved?.Invoke(d, j); h.ApplyCustomUpdateState += (d, j) => ApplyCustomUpdateState?.Invoke(d, j); nestedHitObjects.Add(h); }