mirror of
https://github.com/osukey/osukey.git
synced 2025-08-03 14:46:38 +09:00
Centralise common state setting for osu HitObjects.
This commit is contained in:
@ -104,16 +104,9 @@ namespace osu.Game.Modes.Osu.Objects.Drawables
|
||||
Judgement.Result = HitResult.Miss;
|
||||
}
|
||||
|
||||
protected override void UpdateState(ArmedState state)
|
||||
protected override void UpdateInitialState()
|
||||
{
|
||||
if (!IsLoaded) return;
|
||||
|
||||
Flush(true); //move to DrawableHitObject
|
||||
ApproachCircle.Flush(true);
|
||||
|
||||
double t = osuObject.EndTime + Judgement.TimeOffset;
|
||||
|
||||
Alpha = 0;
|
||||
base.UpdateInitialState();
|
||||
|
||||
//sane defaults
|
||||
ring.Alpha = circle.Alpha = number.Alpha = glow.Alpha = 1;
|
||||
@ -121,29 +114,30 @@ namespace osu.Game.Modes.Osu.Objects.Drawables
|
||||
ApproachCircle.Scale = new Vector2(2);
|
||||
explode.Alpha = 0;
|
||||
Scale = new Vector2(0.5f); //this will probably need to be moved to DrawableHitObject at some point.
|
||||
}
|
||||
|
||||
const float preempt = 600;
|
||||
protected override void UpdatePreemptState()
|
||||
{
|
||||
base.UpdatePreemptState();
|
||||
|
||||
const float fadein = 400;
|
||||
ApproachCircle.FadeIn(Math.Min(TIME_FADEIN * 2, TIME_PREEMPT));
|
||||
ApproachCircle.ScaleTo(0.6f, TIME_PREEMPT);
|
||||
}
|
||||
|
||||
Delay(t - Time.Current - preempt, true);
|
||||
protected override void UpdateState(ArmedState state)
|
||||
{
|
||||
if (!IsLoaded) return;
|
||||
|
||||
FadeIn(fadein);
|
||||
|
||||
ApproachCircle.FadeIn(Math.Min(fadein * 2, preempt));
|
||||
ApproachCircle.ScaleTo(0.6f, preempt);
|
||||
|
||||
Delay(preempt, true);
|
||||
base.UpdateState(state);
|
||||
|
||||
ApproachCircle.FadeOut();
|
||||
|
||||
glow.FadeOut(400);
|
||||
|
||||
switch (state)
|
||||
{
|
||||
case ArmedState.Idle:
|
||||
Delay(osuObject.Duration + 500);
|
||||
FadeOut(500);
|
||||
Delay(osuObject.Duration + TIME_PREEMPT);
|
||||
FadeOut(TIME_FADEOUT);
|
||||
|
||||
explosion?.Expire();
|
||||
explosion = null;
|
||||
|
@ -11,6 +11,10 @@ namespace osu.Game.Modes.Osu.Objects.Drawables
|
||||
{
|
||||
public class DrawableOsuHitObject : DrawableHitObject
|
||||
{
|
||||
protected const float TIME_PREEMPT = 600;
|
||||
protected const float TIME_FADEIN = 400;
|
||||
protected const float TIME_FADEOUT = 500;
|
||||
|
||||
public DrawableOsuHitObject(OsuHitObject hitObject)
|
||||
: base(hitObject)
|
||||
{
|
||||
@ -20,7 +24,29 @@ namespace osu.Game.Modes.Osu.Objects.Drawables
|
||||
|
||||
protected override void UpdateState(ArmedState state)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
if (!IsLoaded) return;
|
||||
|
||||
Flush(true);
|
||||
|
||||
double t = HitObject.EndTime + Judgement.TimeOffset;
|
||||
|
||||
UpdateInitialState();
|
||||
|
||||
Delay(t - Time.Current - TIME_PREEMPT, true);
|
||||
|
||||
UpdatePreemptState();
|
||||
|
||||
Delay(TIME_PREEMPT, true);
|
||||
}
|
||||
|
||||
protected virtual void UpdatePreemptState()
|
||||
{
|
||||
FadeIn(TIME_FADEIN);
|
||||
}
|
||||
|
||||
protected virtual void UpdateInitialState()
|
||||
{
|
||||
Alpha = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -83,16 +83,9 @@ namespace osu.Game.Modes.Osu.Objects.Drawables
|
||||
|
||||
protected override void UpdateState(ArmedState state)
|
||||
{
|
||||
if (!IsLoaded) return;
|
||||
base.UpdateState(state);
|
||||
|
||||
Flush(true); //move to DrawableHitObject
|
||||
|
||||
Alpha = 0;
|
||||
|
||||
Delay(HitObject.StartTime - 450 - Time.Current, true);
|
||||
|
||||
FadeIn(300);
|
||||
Delay(450 + HitObject.Duration);
|
||||
Delay(HitObject.Duration);
|
||||
FadeOut(100);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user