Ejemplo n.º 1
0
        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);
            }
        }
Ejemplo n.º 2
0
        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);
            }
        }
Ejemplo n.º 3
0
        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;
                }
            }
        }
Ejemplo n.º 4
0
        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
                });
            }
        }
Ejemplo n.º 5
0
 protected override bool OnHover(HoverEvent e)
 {
     hover.FadeTo(0.05f, transition_duration, Easing.OutQuint);
     return(base.OnHover(e));
 }