Пример #1
0
 public void Update()
 {
     foreach (var hitObject in usageFinishedHitObjects)
     {
         HitObjectUsageFinished?.Invoke(hitObject);
     }
     usageFinishedHitObjects.Clear();
 }
Пример #2
0
        /// <summary>
        /// Registers a <see cref="Playfield"/> as a nested <see cref="Playfield"/>.
        /// This does not add the <see cref="Playfield"/> to the draw hierarchy.
        /// </summary>
        /// <param name="otherPlayfield">The <see cref="Playfield"/> to add.</param>
        protected void AddNested(Playfield otherPlayfield)
        {
            otherPlayfield.DisplayJudgements.BindTo(DisplayJudgements);

            otherPlayfield.NewResult              += (d, r) => NewResult?.Invoke(d, r);
            otherPlayfield.RevertResult           += (d, r) => RevertResult?.Invoke(d, r);
            otherPlayfield.HitObjectUsageBegan    += h => HitObjectUsageBegan?.Invoke(h);
            otherPlayfield.HitObjectUsageFinished += h => HitObjectUsageFinished?.Invoke(h);

            nestedPlayfields.Value.Add(otherPlayfield);
        }
Пример #3
0
        protected override void RemoveDrawable(HitObjectLifetimeEntry entry, DrawableHitObject drawable)
        {
            drawable.OnKilled();
            if (nonPooledDrawableMap.ContainsKey(entry))
            {
                return;
            }

            removeDrawable(drawable);
            HitObjectUsageFinished?.Invoke(entry.HitObject);
        }
Пример #4
0
        /// <summary>
        /// Creates a new <see cref="Playfield"/>.
        /// </summary>
        protected Playfield()
        {
            RelativeSizeAxes = Axes.Both;

            hitObjectContainerLazy = new Lazy <HitObjectContainer>(() => CreateHitObjectContainer().With(h =>
            {
                h.NewResult              += (d, r) => NewResult?.Invoke(d, r);
                h.RevertResult           += (d, r) => RevertResult?.Invoke(d, r);
                h.HitObjectUsageBegan    += o => HitObjectUsageBegan?.Invoke(o);
                h.HitObjectUsageFinished += o => HitObjectUsageFinished?.Invoke(o);
            }));
        }
Пример #5
0
        private void removeDrawable(HitObjectLifetimeEntry entry)
        {
            Debug.Assert(drawableMap.ContainsKey(entry));

            var drawable = drawableMap[entry];

            drawable.OnNewResult    -= onNewResult;
            drawable.OnRevertResult -= onRevertResult;
            drawable.OnKilled();

            drawableMap.Remove(entry);

            unbindStartTime(drawable);
            RemoveInternal(drawable);

            HitObjectUsageFinished?.Invoke(entry.HitObject);
        }
Пример #6
0
        private void removeDrawable(HitObjectLifetimeEntry entry)
        {
            Debug.Assert(drawableMap.ContainsKey(entry));

            var drawable = drawableMap[entry];

            // OnKilled can potentially change the hitobject's result, so it needs to run first before unbinding.
            drawable.OnKilled();
            drawable.OnNewResult    -= onNewResult;
            drawable.OnRevertResult -= onRevertResult;

            drawableMap.Remove(entry);

            OnRemove(drawable);
            unbindStartTime(drawable);
            RemoveInternal(drawable);

            HitObjectUsageFinished?.Invoke(entry.HitObject);
        }