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(); }
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; } }