Beispiel #1
0
        internal override void UpdateGeneral()
        {
            mascot.Update();

            //remove any old slider sprites that now have no transformations (off-screen to left).
            if (taikoSliderActiveCollection.Count > 1)
            {
                taikoSliderActiveCollection.RemoveAll(s => s.Transformations[0].Time2 < AudioEngine.Time);
            }

            if (GameBase.SixtyFramesPerSecondFrame)
            {
                foreach (pSprite p in flyingCircles)
                {
                    p.Position.X += (p.InitialPosition.X - p.Position.X + 2) * 0.065f;
                    p.Scale      *= 0.965f;
                    p.Position.Y -= p.TagNumeric / 11.5f;
                    p.TagNumeric -= 7;
                    if (p.TagNumeric < 70 && p.Transformations.Count < 1)
                    {
                        p.FadeOut(300);
                    }
                    if (p.TagNumeric < -32)
                    {
                        p.AlwaysDraw = false;
                    }
                }

                flyingCircles.RemoveAll(p => !p.AlwaysDraw);
            }

            bool doCircleAnimation = ComboCounter.HitCombo >= 50;

            if (doCircleAnimation)
            {
                circlesFrame = (ComboCounter.HitCombo >= 150 ? MouthOpen(2) : MouthOpen(1)) ? 0 : 1;

                hitObjectManager.hitObjectsMinimal.ForEach(ho =>
                {
                    SliderTaiko s = ho as SliderTaiko;
                    if (s != null)
                    {
                        s.sliderStartCircle.SpriteHitCircle2.CurrentFrame = circlesFrame;
                    }
                    else
                    {
                        HitCircleTaiko h = ho as HitCircleTaiko;
                        if (h != null)
                        {
                            h.SpriteHitCircle2.CurrentFrame = circlesFrame;
                        }
                    }
                });
            }


            base.UpdateGeneral();
        }
Beispiel #2
0
        internal override void OnClick(HitObject h)
        {
            HitCircleTaiko hc = h as HitCircleTaiko;
            SliderTaiko    sl = h as SliderTaiko;
            SpinnerTaiko   sp = h as SpinnerTaiko;

            if ((hc != null && hc.scoreValue > 0) || (sl != null && sl.LastHitSuccessful))
            {
                pTexture bg;
                pTexture overlay;

                if (hc != null)
                {
                    bg      = hc.SpriteHitCircle1.Texture;
                    overlay = hc.SpriteHitCircle2.Texture;
                }
                else
                {
                    bg      = sl.sliderStartCircle.SpriteHitCircle1.Texture;
                    overlay = sl.sliderStartCircle.SpriteHitCircle2.Texture;
                }

                float depth = 1 - 0.03f * SpriteManager.drawOrderBwd(h != null ? h.StartTime : 0.1f) / 0.8f;

                pSprite s =
                    new pSprite(bg, Fields.GamefieldWide, Origins.Centre,
                                Clocks.Audio, HitObjectManagerTaiko.HIT_LOCATION,
                                depth, true,
                                h != null ? h.Colour : new Color(252, 184, 6));
                s.Scale = h != null ? h.SpriteCollection[0].Scale : 0.7f;
                spriteManagerWidescreen.Add(s);
                s.InitialPosition.X = GameBase.GameField.DisplayToFieldXWide(HpBar.CurrentXPosition);

                s.TagNumeric = 169;
                flyingCircles.Add(s);

                s =
                    new pSprite(overlay, Fields.GamefieldWide, Origins.Centre,
                                Clocks.Audio, HitObjectManagerTaiko.HIT_LOCATION,
                                depth + 0.0001f, true, Color.White);
                s.Scale             = h != null ? h.SpriteCollection[0].Scale : 0.7f;
                s.InitialPosition.X = GameBase.GameField.DisplayToFieldXWide(HpBar.CurrentXPosition);
                s.TagNumeric        = 169;
                spriteManagerWidescreen.Add(s);
                flyingCircles.Add(s);

                if (Player.KiaiActive)
                {
                    s_KiaiGlow.Transformations.RemoveAll(t => t.Type == TransformationType.Scale);
                    s_KiaiGlow.Transformations.Add(new Transformation(TransformationType.Scale, 0.85f, 0.7f, GameBase.Time, GameBase.Time + 80, EasingTypes.Out));
                }
            }

            //where we store the old values,
            //we set them to false to make the compiler happy
            bool oldLeftButton1i = false;
            bool oldLeftButton2i = false;

            bool oldRightButton1i = false;
            bool oldRightButton2i = false;


            //temporarilly change the buttons to the right ones if relaxed is on.
            if (Player.Relaxing && hc != null)
            {
                oldLeftButton1i  = InputManager.leftButton1i;
                oldLeftButton2i  = InputManager.leftButton2i;
                oldRightButton1i = InputManager.rightButton1i;
                oldRightButton2i = InputManager.rightButton2i;

                InputManager.leftButton1i  = hc.CorrectButtonIsLeft && (oldRightButton1i || oldLeftButton1i);
                InputManager.leftButton2i  = hc.CorrectButtonIsLeft && (oldRightButton2i || oldLeftButton2i);
                InputManager.rightButton1i = !hc.CorrectButtonIsLeft && (oldRightButton1i || oldLeftButton1i);
                InputManager.rightButton2i = !hc.CorrectButtonIsLeft && (oldRightButton2i || oldLeftButton2i);
            }


            if (InputManager.leftButton1i || InputManager.leftButton2i)
            {
                ControlPoint p            = hitObjectManager.Beatmap.ControlPointAt(AudioEngine.Time + 2);
                HitSoundInfo hitSoundInfo = new HitSoundInfo(HitObjectSoundType.Normal, AudioEngine.CurrentSampleSet, AudioEngine.CustomSamples, p.Volume, AudioEngine.CurrentSampleSet);
                AudioEngine.PlayHitSamples(hitSoundInfo, InputManager.leftButton1i ? -0.2f : 0.2f, true);

                if (InputManager.leftButton1i)
                {
                    taikoInnerLeft.Transformations.Clear();
                    taikoInnerLeft.Transformations.Add(new Transformation(TransformationType.Fade,
                                                                          taikoInnerLeft.Alpha, 1,
                                                                          GameBase.Time,
                                                                          GameBase.Time +
                                                                          (int)
                                                                          ((1 - taikoInnerLeft.Alpha) * 80),
                                                                          EasingTypes.Out));
                    taikoInnerLeft.Transformations.Add(new Transformation(TransformationType.Fade, 1, 0,
                                                                          GameBase.Time + 100, GameBase.Time + 150));
                }

                if (InputManager.leftButton2i)
                {
                    taikoInnerRight.Transformations.Clear();
                    taikoInnerRight.Transformations.Add(new Transformation(TransformationType.Fade,
                                                                           taikoInnerRight.Alpha, 1,
                                                                           GameBase.Time,
                                                                           GameBase.Time +
                                                                           (int)
                                                                           ((1 - taikoInnerRight.Alpha) *
                                                                            80), EasingTypes.Out));
                    taikoInnerRight.Transformations.Add(new Transformation(TransformationType.Fade, 1, 0,
                                                                           GameBase.Time + 100, GameBase.Time + 150));
                }
            }

            if (InputManager.rightButton1i || InputManager.rightButton2i)
            {
                ControlPoint p            = hitObjectManager.Beatmap.ControlPointAt(AudioEngine.Time + 2);
                HitSoundInfo hitSoundInfo = new HitSoundInfo(HitObjectSoundType.Clap, AudioEngine.CurrentSampleSet, AudioEngine.CustomSamples, p.Volume, AudioEngine.CurrentSampleSet);
                AudioEngine.PlayHitSamples(hitSoundInfo, InputManager.rightButton1i ? -0.2f : 0.2f, true);

                if (InputManager.rightButton1i)
                {
                    taikoOuterLeft.Transformations.Clear();
                    taikoOuterLeft.Transformations.Add(new Transformation(TransformationType.Fade,
                                                                          taikoOuterLeft.Alpha, 1,
                                                                          GameBase.Time,
                                                                          GameBase.Time +
                                                                          (int)
                                                                          ((1 - taikoOuterLeft.Alpha) * 80),
                                                                          EasingTypes.Out));
                    taikoOuterLeft.Transformations.Add(new Transformation(TransformationType.Fade, 1, 0,
                                                                          GameBase.Time + 100, GameBase.Time + 150));
                }

                if (InputManager.rightButton2i)
                {
                    taikoOuterRight.Transformations.Clear();
                    taikoOuterRight.Transformations.Add(new Transformation(TransformationType.Fade,
                                                                           taikoOuterRight.Alpha, 1,
                                                                           GameBase.Time,
                                                                           GameBase.Time +
                                                                           (int)
                                                                           ((1 - taikoOuterRight.Alpha) *
                                                                            80), EasingTypes.Out));
                    taikoOuterRight.Transformations.Add(new Transformation(TransformationType.Fade, 1, 0,
                                                                           GameBase.Time + 100, GameBase.Time + 150));
                }
            }
            //return the input we just changed to the old values
            if (Player.Relaxing && hc != null)
            {
                InputManager.leftButton1i  = oldLeftButton1i;
                InputManager.leftButton2i  = oldLeftButton2i;
                InputManager.rightButton1i = oldRightButton1i;
                InputManager.rightButton2i = oldRightButton2i;
            }
        }