Exemple #1
0
        protected override void CheckJudgement(bool userTriggered)
        {
            if (!userTriggered)
            {
                if (Judgement.TimeOffset > HitObject.HitWindowFor(OsuScoreResult.Hit50))
                {
                    Judgement.Result = HitResult.Miss;
                }
                return;
            }

            double hitOffset = Math.Abs(Judgement.TimeOffset);

            OsuJudgementInfo osuJudgement = (OsuJudgementInfo)Judgement;

            if (hitOffset < HitObject.HitWindowFor(OsuScoreResult.Hit50))
            {
                Judgement.Result   = HitResult.Hit;
                osuJudgement.Score = HitObject.ScoreResultForOffset(hitOffset);
            }
            else
            {
                Judgement.Result = HitResult.Miss;
            }
        }
Exemple #2
0
        private HitResult UpdateHitObject(HitObject hitObject, float x, float y, FrameAction action, float time, bool clickUsed)
        {
            if (time > hitObject.Time + hitObject.HitWindowFor(HitResult.Hit50))
            {
                return(HitResult.Miss);
            }

            if (action == FrameAction.Click && !clickUsed && hitObject.PointInCircle(x, y))
            {
                return(hitObject.GetResultForOffset(time));
            }
            return(HitResult.None);
        }
Exemple #3
0
        protected override void UpdateCurrentState(ArmedState state)
        {
            glow.FadeOut(400);

            switch (state)
            {
            case ArmedState.Idle:
                this.Delay(HitObject.TimePreempt).FadeOut(500);

                Expire(true);

                // override lifetime end as FadeIn may have been changed externally, causing out expiration to be too early.
                LifetimeEnd = HitObject.StartTime + HitObject.HitWindowFor(HitResult.Miss);
                break;

            case ArmedState.Miss:
                ApproachCircle.FadeOut(50);
                this.FadeOut(100);
                Expire();
                break;

            case ArmedState.Hit:
                ApproachCircle.FadeOut(50);

                const double flash_in = 40;
                flash.FadeTo(0.8f, flash_in)
                .Then()
                .FadeOut(100);

                explode.FadeIn(flash_in);

                using (BeginDelayedSequence(flash_in, true))
                {
                    //after the flash, we can hide some elements that were behind it
                    ring.FadeOut();
                    circle.FadeOut();
                    number.FadeOut();

                    this.FadeOut(800)
                    .ScaleTo(Scale * 1.5f, 400, Easing.OutQuad);
                }

                Expire();
                break;
            }
        }
Exemple #4
0
        protected override void CheckForJudgements(bool userTriggered, double timeOffset)
        {
            if (!userTriggered)
            {
                if (timeOffset > HitObject.HitWindowFor(HitResult.Meh))
                {
                    AddJudgement(new OsuJudgement {
                        Result = HitResult.Miss
                    });
                }
                return;
            }

            AddJudgement(new OsuJudgement
            {
                Result         = HitObject.ScoreResultForOffset(Math.Abs(timeOffset)),
                PositionOffset = Vector2.Zero //todo: set to correct value
            });
        }
 protected override double CalculateImprecision() => _currentHitObject.HitWindowFor(HitResult.Hit300);