using System.Collections.Generic; using System.Linq; using Assets.Common; using Assets.Voronoi; namespace Assets.Cities { public class City { public Graph startGraph; public List sites; public Graph roads = new Graph(); public Graph fieldBoundaries = new Graph(); public List fields = new List(); public List<(int, int)> edges; public City(Graph startGraph) { this.startGraph = startGraph; this.sites = new List(); this.edges = new List<(int, int)>(); } public City(Graph startGraph, List sitesList) : this(startGraph) { this.sites = sitesList; } 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(); } } }