Esempio n. 1
0
        public void Dispose()
        {
            if (Disposed)
            {
                return;
            }

            Layer?.Remove(this, false);
            Disposed = true;

            // Remove this from parents
            if (ParentObjects != null)
            {
                foreach (var relevantObject in ParentObjects)
                {
                    relevantObject.ChildObjects.Remove(this);
                }
            }

            // Return if there are no children
            if (ChildObjects == null)
            {
                return;
            }

            // Kill all children
            var objectsToDispose = ChildObjects.ToArray();

            foreach (var t in objectsToDispose)
            {
                t.Dispose();
            }
        }
Esempio n. 2
0
        private void CycleQueue()
        {
            foreach (var screenObject in ChildObjects.ToArray())
            {
                screenObject.AutoMove();
                RemoveObjectIfOffscreen(screenObject);
            }

            AddOffscreenObjectToOnscreen();
        }
        private void LoadElements(XElement element, int parentTriggerIndex)
        {
            foreach (XElement subElement in element.Elements())
            {
                switch (subElement.Name.ToString().ToLowerInvariant())
                {
                case "sprite":
                    Sprites.Add(new Sprite(subElement, lazyLoad: true));
                    break;

                case "specularsprite":
                    SpecularSprites.Add(new Sprite(subElement, lazyLoad: true));
                    break;

                case "deformablesprite":
                    DeformableSprite = new DeformableSprite(subElement, lazyLoad: true);
                    break;

                case "overridecommonness":
                    string levelType = subElement.GetAttributeString("leveltype", "");
                    if (!OverrideCommonness.ContainsKey(levelType))
                    {
                        OverrideCommonness.Add(levelType, subElement.GetAttributeFloat("commonness", 1.0f));
                    }
                    break;

                case "leveltrigger":
                case "trigger":
                    OverrideProperties.Add(null);
                    LevelTriggerElements.Add(subElement);
                    LoadElements(subElement, LevelTriggerElements.Count - 1);
                    break;

                case "childobject":
                    ChildObjects.Add(new ChildObject(subElement));
                    break;

                case "overrideproperties":
                    var propertyOverride = new LevelObjectPrefab(subElement);
                    OverrideProperties[OverrideProperties.Count - 1] = propertyOverride;
                    if (!propertyOverride.Sprites.Any() && propertyOverride.DeformableSprite == null)
                    {
                        propertyOverride.Sprites          = Sprites;
                        propertyOverride.DeformableSprite = DeformableSprite;
                    }
                    break;

                case "body":
                case "physicsbody":
                    PhysicsBodyElement      = subElement;
                    PhysicsBodyTriggerIndex = parentTriggerIndex;
                    break;
                }
            }
        }
Esempio n. 4
0
        private void RemoveObjectIfOffscreen(GameObject gameObject)
        {
            if (!ObjectPastEndOfQueue(gameObject))
            {
                return;
            }

            ChildObjects.Remove(gameObject);
            _offScreenObjects.Add(new OffscreenQueueObject
            {
                DistanceToWait = GenerateDistance(),
                Object         = gameObject
            });
        }
        /// <summary>
        /// Removes an image from our overlay list
        /// </summary>
        private void Menu_Remove(object sender, EventArgs e)
        {
            if (SelectedOverlay == null)
            {
                return;
            }

            string msg = "Are you sure you want to remove " + SelectedOverlay.Name + "?";

            if (MessageBox.Show(msg, "Remove image",
                                MessageBoxButtons.YesNo, MessageBoxIcon.Question) != DialogResult.Yes)
            {
                return;
            }

            // Remove the image
            ChildObjects.Remove(SelectedOverlay);
            SelectedOverlay.Dispose();
            SelectedOverlay = null;
        }
Esempio n. 6
0
        private void AddOffscreenObjectToOnscreen()
        {
            var offscreenObjectToAdd = _offScreenObjects.FirstOrDefault();

            if (offscreenObjectToAdd == null)
            {
                return;
            }

            var distanceToLastObject = GetDistanceToLastObject();

            if (distanceToLastObject < offscreenObjectToAdd.DistanceToWait)
            {
                return;
            }

            _offScreenObjects.Remove(offscreenObjectToAdd);
            offscreenObjectToAdd.Object.ChangeSpawnPosition(Position);
            offscreenObjectToAdd.Object.Respawn();
            ChildObjects.Add(offscreenObjectToAdd.Object);
        }
Esempio n. 7
0
 public void AddChild(IEntity entity)
 {
     ChildObjects.Add(entity);
     entity.Parent = this;
     entity.Path   = Path + entity.DirectoryName;
 }
Esempio n. 8
0
        private void CreateQueueObject(ChildObjectCreateMethod factoryMethod, int xPos)
        {
            var newObject = factoryMethod(new Position(xPos, Position.YPos));

            ChildObjects.Add(newObject);
        }
Esempio n. 9
0
        protected override int GetDistanceToLastObject()
        {
            var lastxpos = ChildObjects.Min(m => m.Position.XPos);

            return((int)(lastxpos - Position.XPos));
        }