mirror of https://github.com/ppy/osu
Also fix banana showers
This commit is contained in:
parent
785a725507
commit
2ccdad41e7
|
@ -1,10 +1,12 @@
|
||||||
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
|
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
|
||||||
// See the LICENCE file in the repository root for full licence text.
|
// See the LICENCE file in the repository root for full licence text.
|
||||||
|
|
||||||
|
using System;
|
||||||
using osu.Framework.Allocation;
|
using osu.Framework.Allocation;
|
||||||
using osu.Framework.Graphics;
|
using osu.Framework.Utils;
|
||||||
using osu.Game.Rulesets.Catch.Skinning.Default;
|
using osu.Game.Rulesets.Catch.Skinning.Default;
|
||||||
using osu.Game.Skinning;
|
using osu.Game.Skinning;
|
||||||
|
using osuTK;
|
||||||
|
|
||||||
namespace osu.Game.Rulesets.Catch.Objects.Drawables
|
namespace osu.Game.Rulesets.Catch.Objects.Drawables
|
||||||
{
|
{
|
||||||
|
@ -36,23 +38,37 @@ protected override void LoadComplete()
|
||||||
StartTimeBindable.BindValueChanged(_ => UpdateComboColour());
|
StartTimeBindable.BindValueChanged(_ => UpdateComboColour());
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void UpdateInitialTransforms()
|
private float startScale;
|
||||||
|
private float endScale;
|
||||||
|
|
||||||
|
private float startAngle;
|
||||||
|
private float endAngle;
|
||||||
|
|
||||||
|
protected override void OnApply()
|
||||||
{
|
{
|
||||||
base.UpdateInitialTransforms();
|
base.OnApply();
|
||||||
|
|
||||||
const float end_scale = 0.6f;
|
const float end_scale = 0.6f;
|
||||||
const float random_scale_range = 1.6f;
|
const float random_scale_range = 1.6f;
|
||||||
|
|
||||||
ScalingContainer.ScaleTo(HitObject.Scale * (end_scale + random_scale_range * RandomSingle(3)))
|
startScale = end_scale + random_scale_range * RandomSingle(3);
|
||||||
.Then().ScaleTo(HitObject.Scale * end_scale, HitObject.TimePreempt);
|
endScale = end_scale;
|
||||||
|
|
||||||
ScalingContainer.RotateTo(getRandomAngle(1))
|
startAngle = getRandomAngle(1);
|
||||||
.Then()
|
endAngle = getRandomAngle(2);
|
||||||
.RotateTo(getRandomAngle(2), HitObject.TimePreempt);
|
|
||||||
|
|
||||||
float getRandomAngle(int series) => 180 * (RandomSingle(series) * 2 - 1);
|
float getRandomAngle(int series) => 180 * (RandomSingle(series) * 2 - 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected override void Update()
|
||||||
|
{
|
||||||
|
base.Update();
|
||||||
|
|
||||||
|
double preemptProgress = Math.Min(1, (Time.Current - (HitObject.StartTime - InitialLifetimeOffset)) / HitObject.TimePreempt);
|
||||||
|
ScalingContainer.Scale = new Vector2(HitObject.Scale * (float)Interpolation.Lerp(startScale, endScale, preemptProgress));
|
||||||
|
ScalingContainer.Rotation = (float)Interpolation.Lerp(startAngle, endAngle, preemptProgress);
|
||||||
|
}
|
||||||
|
|
||||||
public override void PlaySamples()
|
public override void PlaySamples()
|
||||||
{
|
{
|
||||||
base.PlaySamples();
|
base.PlaySamples();
|
||||||
|
|
Loading…
Reference in New Issue