using System; using System.Collections; using System.Collections.Generic; using System.Linq; namespace Assets.Common { [Serializable] public class MapSite : IHasMetadata { public Metadata Metadata { get; } = new Metadata(); public MapSite(Point center, IEnumerable<int> boundary) { Center = center; Boundary = boundary; } public int Index { get; internal set; } public Point Center { get; set; } public ISet<string> Tags { get; set; } = new HashSet<string> { CommonTags.Empty }; public IEnumerable<int> Boundary { get; set; } public IEnumerable<(int, int)> Edges => Boundary.RotateRight().Zip(Boundary, (a, b) => (a, b)); [field: NonSerialized] public Map Map { get; internal set; } } }