示例#1
0
        /// <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);
        }
示例#2
0
        /// <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);
        }
示例#3
0
 protected void TriggerOnJudgement(JudgementInfo j)
 {
     OnJudgement?.Invoke(j);
     if (AllObjectsJudged)
     {
         OnAllJudged?.Invoke();
     }
 }
示例#4
0
        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);
        }
示例#5
0
        protected void AddNested(DrawableHitObject h)
        {
            if (nestedHitObjects == null)
            {
                nestedHitObjects = new List <DrawableHitObject>();
            }

            h.OnJudgement += (d, j) => { OnJudgement?.Invoke(d, j); };
            nestedHitObjects.Add(h);
        }
示例#6
0
        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);
        }