namespace MultiversalDiplomacy.Model; /// /// Represents a locus of connectivity in a province. Land-locked and ocean/sea provinces /// have one location. Coastal provinces have a land location and some number of named /// water locations. /// public class Location { /// /// The province to which this location belongs. public Province Province { get; } /// /// The location's full human-readable name. /// public string? Name { get; } /// /// The location's shorthand abbreviation. /// public string? Abbreviation { get; } /// /// The location's type. /// public LocationType Type { get; } /// /// The locations that border this location. /// public IEnumerable Adjacents => this.AdjacentList; private List AdjacentList { get; set; } public Location(Province province, string? name, string? abbreviation, LocationType type) { this.Province = province; this.Name = name; this.Abbreviation = abbreviation; this.Type = type; this.AdjacentList = new List(); } public override string ToString() { return this.Name == null ? $"{this.Province.Name} ({this.Type})" : $"{this.Province.Name} ({this.Type}:{this.Name}]"; } /// /// Set another location as bordering this location. /// public void AddBorder(Location other) { if (!this.AdjacentList.Contains(other)) this.AdjacentList.Add(other); if (!other.AdjacentList.Contains(this)) other.AdjacentList.Add(this); } }