Exemple #1
0
        private void onNewResult(DrawableHitObject judgedObject, JudgementResult result)
        {
            hitPolicy.HandleHit(judgedObject);

            if (!judgedObject.DisplayResult || !DisplayJudgements.Value)
            {
                return;
            }

            judgementLayer.Add(poolDictionary[result.Type].Get(doj => doj.Apply(result, judgedObject)));

            if (judgedObject.HitObject.Kiai && result.Type != HitResult.Miss)
            {
                float angle = judgedObject switch
                {
                    DrawableBeat b => b.HitObject.Angle,
                    DrawableSlider s => s.HitObject.Nodes.Last().Angle,
                      _ => 0
                };

                var isHardBeat = judgedObject is DrawableHardBeat;

                switch (effect.Value)
                {
                case KiaiType.Turbulent:
                    for (int i = 0; i < (isHardBeat ? RNG.Next(60, 100) : RNG.Next(3, 9)); i++)
                    {
                        SliderParticleEmitter.AddParticle((isHardBeat ? RNG.NextSingle(0, 360) : angle), Inversed, result.Type);
                    }

                    break;

                case KiaiType.Classic:
                    kiaiExplosionContainer.Add(new KiaiHitExplosion(colour.ForHitResult(judgedObject.Result.Type), judgedObject is DrawableHardBeat, Inversed, judgedObject is DrawableHardBeat ? 32 : 10)
                    {
                        Position = judgedObject is DrawableHardBeat ? Vector2.Zero : Extensions.GetCircularPosition(.5f, angle),
                        Angle    = angle,
                        Anchor   = Anchor.Centre,
                        Origin   = Anchor.Centre
                    });

                    break;
                }
            }
        }
Exemple #2
0
        private void applyInverseToBeat(DrawableBeat beat, ArmedState state, float finalDistance)
        {
            var box       = beat.Box;
            var hitObject = beat.HitObject;

            beat.HitDistance = -beat.HitDistance;

            if (state == ArmedState.Idle)
            {
                box.ClearTransforms(targetMember: "Y");

                using (beat.BeginAbsoluteSequence(hitObject.StartTime, false))
                {
                    box.MoveToY(-1)
                    .MoveToY(finalDistance, hitObject.TimePreempt);
                }
            }
        }
Exemple #3
0
 public BeatSelectionBlueprint(DrawableBeat hitObject)
     : base(hitObject)
 {
     InternalChildren = new Drawable[]
     {
         SelectionPiece = new HitPiece(),
         Distance       = new Box
         {
             Colour               = Color4.Yellow.Opacity(.5f),
             RelativeSizeAxes     = Axes.Y,
             Height               = .5f,
             Anchor               = Anchor.Centre,
             Origin               = Anchor.BottomCentre,
             RelativePositionAxes = Axes.Both,
             Width          = 5,
             EdgeSmoothness = Vector2.One
         }
     };
 }