public GameState BuildFirstSettlement(Player player, Intersection intersection)
{
if (board.GetPiece(intersection) != null)
throw new IllegalBuildPositionException("The chosen position is occupied by another building");
if (!board.HasNoNeighbors(intersection))
throw new IllegalBuildPositionException("The chosen position violates the distance rule");
if (!board.CanBuildPiece(intersection))
throw new IllegalBuildPositionException("The chosen position is not valid");
player.SettlementsLeft--;
board = board.PlacePiece(intersection, new Piece(Token.Settlement, player.Id));
return CurrentGamestate();
}