예제 #1
0
        protected override void UpdateState(ArmedState state)
        {
            if (!IsLoaded)
            {
                return;
            }

            base.UpdateState(state);

            ApproachCircle.FadeOut();

            double endTime  = (osuObject as IHasEndTime)?.EndTime ?? osuObject.StartTime;
            double duration = endTime - osuObject.StartTime;

            glow.Delay(duration);
            glow.FadeOut(400);

            switch (state)
            {
            case ArmedState.Idle:
                Delay(duration + TIME_PREEMPT);
                FadeOut(TIME_FADEOUT);
                Expire(true);
                break;

            case ArmedState.Miss:
                FadeOut(TIME_FADEOUT / 5);
                Expire();
                break;

            case ArmedState.Hit:
                const double flash_in = 40;

                flash.FadeTo(0.8f, flash_in);
                flash.Delay(flash_in);
                flash.FadeOut(100);

                explode.FadeIn(flash_in);

                Delay(flash_in, true);

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

                FadeOut(800);
                ScaleTo(Scale * 1.5f, 400, EasingTypes.OutQuad);
                Expire();
                break;
            }
        }
예제 #2
0
        protected override void UpdateCurrentState(ArmedState state)
        {
            double duration = ((HitObject as IHasEndTime)?.EndTime ?? HitObject.StartTime) - HitObject.StartTime;

            glow.Delay(duration).FadeOut(400);

            switch (state)
            {
            case ArmedState.Idle:
                this.Delay(duration + TIME_PREEMPT).FadeOut(TIME_FADEOUT);
                Expire(true);
                break;

            case ArmedState.Miss:
                ApproachCircle.FadeOut(50);
                this.FadeOut(TIME_FADEOUT / 5);
                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;
            }
        }