Exemple #1
0
        /// <summary>
        /// A container for keeping track of DrawableHitObjects.
        /// </summary>
        /// <param name="customWidth">Whether we want our internal coordinate system to be scaled to a specified width.</param>
        protected Playfield(float?customWidth = null)
        {
            AlwaysReceiveInput = true;

            // Default height since we force relative size axes
            Size = Vector2.One;

            AddInternal(ScaledContent = new ScaledContainer
            {
                CustomWidth      = customWidth,
                RelativeSizeAxes = Axes.Both,
                Children         = new[]
                {
                    content = new Container
                    {
                        AlwaysReceiveInput = true,
                        RelativeSizeAxes   = Axes.Both,
                    }
                }
            });

            HitObjects = new HitObjectContainer <DrawableHitObject <TObject, TJudgement> >
            {
                RelativeSizeAxes = Axes.Both,
            };
        }
Exemple #2
0
        private void load()
        {
            HitObjects = CreateHitObjectContainer();
            HitObjects.RelativeSizeAxes = Axes.Both;

            Add(HitObjects);
        }
Exemple #3
0
        /// <summary>
        /// Adds a <see cref="HitObjectLifetimeEntry"/> for a pooled <see cref="HitObject"/> to this <see cref="Playfield"/>.
        /// </summary>
        /// <param name="hitObject"></param>
        public virtual void Add(HitObject hitObject)
        {
            var entry = CreateLifetimeEntry(hitObject);

            lifetimeEntryMap[entry.HitObject] = entry;

            HitObjectContainer.Add(entry);
            OnHitObjectAdded(entry.HitObject);
        }
Exemple #4
0
        /// <summary>
        /// Remove a DrawableHitObject from this Playfield.
        /// </summary>
        /// <param name="h">The DrawableHitObject to remove.</param>
        public virtual bool Remove(DrawableHitObject h)
        {
            if (!HitObjectContainer.Remove(h))
            {
                return(false);
            }

            OnHitObjectRemoved(h.HitObject);
            return(false);
        }
Exemple #5
0
        public virtual void Add(DrawableHitObject h)
        {
            if (!h.IsInitialized)
            {
                onNewDrawableHitObject(h);
            }

            HitObjectContainer.Add(h);
            OnHitObjectAdded(h.HitObject);
        }
Exemple #6
0
        public GameplaySampleTriggerSource(HitObjectContainer hitObjectContainer)
        {
            this.hitObjectContainer = hitObjectContainer;

            InternalChild = hitSounds = new Container <SkinnableSound>
            {
                Name = "concurrent sample pool",
                ChildrenEnumerable = Enumerable.Range(0, max_concurrent_hitsounds).Select(_ => new PausableSkinnableSound())
            };
        }
Exemple #7
0
        public virtual bool Remove(HitObject hitObject)
        {
            if (lifetimeEntryMap.Remove(hitObject, out var entry))
            {
                HitObjectContainer.Remove(entry);
                OnHitObjectRemoved(hitObject);
                return(true);
            }

            return(nestedPlayfields.Any(p => p.Remove(hitObject)));
        }
Exemple #8
0
        /// <summary>
        /// Adds a DrawableHitObject to this Playfield.
        /// </summary>
        /// <param name="h">The DrawableHitObject to add.</param>
        public virtual void Add(DrawableHitObject h)
        {
            if (h.IsInitialized)
            {
                throw new InvalidOperationException($"{nameof(Add)} doesn't support {nameof(DrawableHitObject)} reuse. Use pooling instead.");
            }

            onNewDrawableHitObject(h);

            HitObjectContainer.Add(h);
            OnHitObjectAdded(h.HitObject);
        }
Exemple #9
0
        /// <summary>
        /// Removes a <see cref="HitObjectLifetimeEntry"/> for a pooled <see cref="HitObject"/> from this <see cref="Playfield"/>.
        /// </summary>
        /// <param name="hitObject"></param>
        /// <returns>Whether the <see cref="HitObject"/> was successfully removed.</returns>
        public virtual bool Remove(HitObject hitObject)
        {
            if (lifetimeEntryMap.Remove(hitObject, out var entry))
            {
                HitObjectContainer.Remove(entry);
                OnHitObjectRemoved(hitObject);
                return(true);
            }

            bool removedFromNested = false;

            if (nestedPlayfields.IsValueCreated)
            {
                removedFromNested = nestedPlayfields.Value.Any(p => p.Remove(hitObject));
            }

            return(removedFromNested);
        }
Exemple #10
0
        /// <summary>
        /// A container for keeping track of DrawableHitObjects.
        /// </summary>
        /// <param name="customWidth">Whether we want our internal coordinate system to be scaled to a specified width.</param>
        protected Playfield(float?customWidth = null)
        {
            // Default height since we force relative size axes
            Size = Vector2.One;

            AddInternal(ScaledContent = new ScaledContainer
            {
                CustomWidth      = customWidth,
                RelativeSizeAxes = Axes.Both,
                Children         = new[]
                {
                    content = new Container
                    {
                        RelativeSizeAxes = Axes.Both,
                    }
                }
            });

            HitObjects = new HitObjectContainer
            {
                RelativeSizeAxes = Axes.Both,
            };
        }
Exemple #11
0
 /// <summary>
 /// Remove a DrawableHitObject from this Playfield.
 /// </summary>
 /// <param name="h">The DrawableHitObject to remove.</param>
 public virtual bool Remove(DrawableHitObject h) => HitObjectContainer.Remove(h);
Exemple #12
0
 /// <summary>
 /// Adds a DrawableHitObject to this Playfield.
 /// </summary>
 /// <param name="h">The DrawableHitObject to add.</param>
 public virtual void Add(DrawableHitObject h) => HitObjectContainer.Add(h);
Exemple #13
0
 /// <summary>
 /// Adds a DrawableHitObject to this Playfield.
 /// </summary>
 /// <param name="h">The DrawableHitObject to add.</param>
 public virtual void Add(DrawableHitObject h)
 {
     HitObjectContainer.Add(h);
     OnHitObjectAdded(h.HitObject);
 }