mirror of
https://github.com/osukey/osukey.git
synced 2025-07-01 08:20:00 +09:00
Move the Shake logic to a new ShakeContainer
This commit is contained in:
@ -8,6 +8,7 @@ using System.Linq;
|
||||
using osu.Game.Rulesets.Objects.Types;
|
||||
using osu.Game.Skinning;
|
||||
using OpenTK.Graphics;
|
||||
using osu.Game.Graphics.Containers;
|
||||
|
||||
namespace osu.Game.Rulesets.Osu.Objects.Drawables
|
||||
{
|
||||
@ -15,12 +16,24 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables
|
||||
{
|
||||
public override bool IsPresent => base.IsPresent || State.Value == ArmedState.Idle && Time.Current >= HitObject.StartTime - HitObject.TimePreempt;
|
||||
|
||||
private readonly ShakeContainer shakeContainer;
|
||||
|
||||
protected DrawableOsuHitObject(OsuHitObject hitObject)
|
||||
: base(hitObject)
|
||||
{
|
||||
shakeContainer = new ShakeContainer
|
||||
{
|
||||
RelativeSizeAxes = Axes.Both,
|
||||
};
|
||||
base.AddInternal(shakeContainer);
|
||||
Alpha = 0;
|
||||
}
|
||||
|
||||
// Forward all internal management to shakeContainer
|
||||
protected override void AddInternal(Drawable drawable) => shakeContainer.Add(drawable);
|
||||
protected override void ClearInternal(bool disposeChildren = true) => shakeContainer.Clear(disposeChildren);
|
||||
protected override bool RemoveInternal(Drawable drawable) => shakeContainer.Remove(drawable);
|
||||
|
||||
protected sealed override void UpdateState(ArmedState state)
|
||||
{
|
||||
double transformTime = HitObject.StartTime - HitObject.TimePreempt;
|
||||
@ -61,15 +74,7 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables
|
||||
|
||||
protected void Shake()
|
||||
{
|
||||
const int shake_amount = 8;
|
||||
const int shake_duration = 20;
|
||||
|
||||
this.MoveToX(Position.X + shake_amount, shake_duration).Then()
|
||||
.MoveToX(Position.X - shake_amount, shake_duration).Then()
|
||||
.MoveToX(Position.X + shake_amount, shake_duration).Then()
|
||||
.MoveToX(Position.X - shake_amount, shake_duration).Then()
|
||||
.MoveToX(Position.X + shake_amount, shake_duration).Then()
|
||||
.MoveToX(Position.X, shake_duration);
|
||||
shakeContainer.Shake();
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user