MingStar.SimUniversity.Game.Game.IsLegalToBuildLink C# (CSharp) Method

IsLegalToBuildLink() public method

public IsLegalToBuildLink ( EdgePosition pos ) : bool
pos MingStar.SimUniversity.Contract.EdgePosition
return bool
        public bool IsLegalToBuildLink(EdgePosition pos)
        {
            Edge edge = Board[pos];
            if (edge == null || edge.Color != null)
            {
                return false;
            }
            if (CurrentPhase == GamePhase.Play)
            {
                return edge.Adjacent.Edges.Any(e => e.Color == CurrentUniversityColor);
            }
            // links to own campus
            IVertex vertex =
                edge.Adjacent.Vertices.SingleOrDefault(
                    v => v.Campus != null && v.Campus.Color == CurrentUniversityColor);
            if (vertex == null)
            {
                return false;
            }
            // but not the same campus one as the other link
            return !edge.Adjacent.Edges.Any(e => e.Color == CurrentUniversityColor &&
                                                 e.Adjacent.Vertices.Contains(vertex));
        }