using System.Collections.Generic; using System.Linq; using Assets.Common; using Assets.Voronoi; namespace Assets.Cities { public class City { public List Sites { get; set; } = new List(); public Graph Roads { get; set; } = new Graph(); public Graph FieldBoundaries { get; set; } = new Graph(); public List Fields { get; } = new List(); public List<(int, int)> Edges = new List<(int, int)>(); public City() { } public City(List sites) { Sites = sites; } public void AddSite(MapSite site) { Sites.Add(site); FixBoundaryEdges(site); } private void FixBoundaryEdges(MapSite site) { var a = Edges; var b = site.Edges.Select(x => x.Item1 < x.Item2 ? x : (x.Item2, x.Item1)); Edges = a.Union(b).Except(a.Intersect(b)).ToList(); } } }