private void attemptHit() => Schedule(() => { if (HitEvent != null) { return; } // in case it was hit outside of display range, show immediately // so the user isn't confused. this.FadeIn(); approach.Expire(); circle .FadeOut(duration) .ScaleTo(1.5f, duration); HitEvent = new HitEvent(Clock.CurrentTime - HitTime, HitResult.Good, new HitObject { HitWindows = new HitWindows(), }, null, null); Hit?.Invoke(HitEvent.Value); this.Delay(duration).Expire(); });