public void Load(SegmentEntities entities, XElement element, Version version)
        {
            foreach (var spawnElement in element.Elements("spawn"))
            {
                var type    = spawnElement.Attribute("type");
                var spawner = default(Spawner);

                if (type != null)
                {
                    switch ((string)type)
                    {
                    case "LocationSpawner": spawner = new LocationSpawner(spawnElement); break;

                    case "RegionSpawner": spawner = new RegionSpawner(spawnElement); break;
                    }
                }

                if (spawner != null)
                {
                    foreach (var entryElement in spawnElement.Elements("entry"))
                    {
                        var entry = new SpawnEntry(entryElement);

                        var entity     = default(Entity);
                        var entityName = (string)entryElement.Attribute("entity");

                        if (!String.IsNullOrEmpty(entityName))
                        {
                            entity = entities.FirstOrDefault(
                                e => String.Equals(e.Name,
                                                   entityName, StringComparison.Ordinal));
                        }

                        entry.Entity = entity;

                        if (entry.Entity != null)
                        {
                            spawner.Entries.Add(entry);
                        }
                        else
                        {
                            throw new Exception($"Unable to load spawn entry '{entityName}'.");
                        }
                    }

                    if (spawner is LocationSpawner locationSpawner)
                    {
                        Location.Add(locationSpawner);
                    }
                    else if (spawner is RegionSpawner regionSpawner)
                    {
                        Region.Add(regionSpawner);
                    }
                }
            }
        }
        public void Load(SegmentEntities entities, ZipFile archive, Version version)
        {
            var archiveEntry = archive["spawns"];

            if (archiveEntry != null)
            {
                var spawnersElement = XDocument.Load(archiveEntry.OpenReader()).Root;

                if (spawnersElement != null)
                {
                    Load(entities, spawnersElement, version);
                }
            }
        }