mirror of
https://github.com/osukey/osukey.git
synced 2025-08-06 16:13:57 +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;
|
Judgement.Result = HitResult.Miss;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void UpdateState(ArmedState state)
|
protected override void UpdateInitialState()
|
||||||
{
|
{
|
||||||
if (!IsLoaded) return;
|
base.UpdateInitialState();
|
||||||
|
|
||||||
Flush(true); //move to DrawableHitObject
|
|
||||||
ApproachCircle.Flush(true);
|
|
||||||
|
|
||||||
double t = osuObject.EndTime + Judgement.TimeOffset;
|
|
||||||
|
|
||||||
Alpha = 0;
|
|
||||||
|
|
||||||
//sane defaults
|
//sane defaults
|
||||||
ring.Alpha = circle.Alpha = number.Alpha = glow.Alpha = 1;
|
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);
|
ApproachCircle.Scale = new Vector2(2);
|
||||||
explode.Alpha = 0;
|
explode.Alpha = 0;
|
||||||
Scale = new Vector2(0.5f); //this will probably need to be moved to DrawableHitObject at some point.
|
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);
|
base.UpdateState(state);
|
||||||
|
|
||||||
ApproachCircle.FadeIn(Math.Min(fadein * 2, preempt));
|
|
||||||
ApproachCircle.ScaleTo(0.6f, preempt);
|
|
||||||
|
|
||||||
Delay(preempt, true);
|
|
||||||
|
|
||||||
ApproachCircle.FadeOut();
|
ApproachCircle.FadeOut();
|
||||||
|
|
||||||
glow.FadeOut(400);
|
glow.FadeOut(400);
|
||||||
|
|
||||||
switch (state)
|
switch (state)
|
||||||
{
|
{
|
||||||
case ArmedState.Idle:
|
case ArmedState.Idle:
|
||||||
Delay(osuObject.Duration + 500);
|
Delay(osuObject.Duration + TIME_PREEMPT);
|
||||||
FadeOut(500);
|
FadeOut(TIME_FADEOUT);
|
||||||
|
|
||||||
explosion?.Expire();
|
explosion?.Expire();
|
||||||
explosion = null;
|
explosion = null;
|
||||||
|
@ -11,6 +11,10 @@ namespace osu.Game.Modes.Osu.Objects.Drawables
|
|||||||
{
|
{
|
||||||
public class DrawableOsuHitObject : DrawableHitObject
|
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)
|
public DrawableOsuHitObject(OsuHitObject hitObject)
|
||||||
: base(hitObject)
|
: base(hitObject)
|
||||||
{
|
{
|
||||||
@ -20,7 +24,29 @@ namespace osu.Game.Modes.Osu.Objects.Drawables
|
|||||||
|
|
||||||
protected override void UpdateState(ArmedState state)
|
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)
|
protected override void UpdateState(ArmedState state)
|
||||||
{
|
{
|
||||||
if (!IsLoaded) return;
|
base.UpdateState(state);
|
||||||
|
|
||||||
Flush(true); //move to DrawableHitObject
|
Delay(HitObject.Duration);
|
||||||
|
|
||||||
Alpha = 0;
|
|
||||||
|
|
||||||
Delay(HitObject.StartTime - 450 - Time.Current, true);
|
|
||||||
|
|
||||||
FadeIn(300);
|
|
||||||
Delay(450 + HitObject.Duration);
|
|
||||||
FadeOut(100);
|
FadeOut(100);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user