/** * Gets all faces connected to this vertex. * - This will be used for calculating which players will receive what resources. */ public List <Face> GetFacesFromVertexCoordinate(int col, int row, VertexSpecifier vertexSpec) { List <Face> faces = new List <Face>(); switch (vertexSpec) { case VertexSpecifier.L: if (gridFaces[col - 1, row + 1] != null) { faces.Add(gridFaces[col - 1, row + 1]); } if (gridFaces[col - 1, row] != null) { faces.Add(gridFaces[col - 1, row]); } if (gridFaces[col, row] != null) { faces.Add(gridFaces[col, row]); } break; case VertexSpecifier.R: if (gridFaces[col, row] != null) { faces.Add(gridFaces[col, row]); } if (gridFaces[col + 1, row] != null) { faces.Add(gridFaces[col + 1, row]); } if (gridFaces[col + 1, row - 1] != null) { faces.Add(gridFaces[col + 1, row - 1]); } break; } return(faces); }
/** * Get all edges connected to a vertex. * - This will be used to calculate validity of placement of settlements. */ public List <Edge> GetAdjacentEdgesFromVertex(int col, int row, VertexSpecifier vertexSpec) { List <Edge> edges = new List <Edge>(); switch (vertexSpec) { case VertexSpecifier.L: if (gridEdges[col - 1, row, (int)EdgeSpecifier.N] != null) { edges.Add(gridEdges[col - 1, row, (int)EdgeSpecifier.N]); } // Lower Left if (gridEdges[col, row, (int)EdgeSpecifier.W] != null) { edges.Add(gridEdges[col, row, (int)EdgeSpecifier.W]); } // Top if (gridEdges[col - 1, row, (int)EdgeSpecifier.E] != null) { edges.Add(gridEdges[col - 1, row, (int)EdgeSpecifier.E]); } // Lower Right break; case VertexSpecifier.R: if (gridEdges[col + 1, row - 1, (int)EdgeSpecifier.W] != null) { edges.Add(gridEdges[col + 1, row - 1, (int)EdgeSpecifier.W]); } if (gridEdges[col, row, (int)EdgeSpecifier.E] != null) { edges.Add(gridEdges[col, row, (int)EdgeSpecifier.E]); } if (gridEdges[col + 1, row - 1, (int)EdgeSpecifier.N] != null) { edges.Add(gridEdges[col + 1, row - 1, (int)EdgeSpecifier.N]); } break; } return(edges); }
/** * Get all vertices adjacent to a vertex. * - This will be used to calculate validity of placement of settlements. */ public List <Vertex> GetAdjacentVerticesFromVertex(int col, int row, VertexSpecifier vertexSpec) { List <Vertex> vertices = new List <Vertex>(); switch (vertexSpec) { case VertexSpecifier.L: if (gridVertices[col - 2, row + 1, (int)VertexSpecifier.R] != null) { vertices.Add(gridVertices[col - 2, row + 1, (int)VertexSpecifier.R]); } if (gridVertices[col - 1, row + 1, (int)VertexSpecifier.R] != null) { vertices.Add(gridVertices[col - 1, row + 1, (int)VertexSpecifier.R]); } if (gridVertices[col - 1, row, (int)VertexSpecifier.R] != null) { vertices.Add(gridVertices[col - 1, row, (int)VertexSpecifier.R]); } break; case VertexSpecifier.R: if (gridVertices[col + 1, row, (int)VertexSpecifier.L] != null) { vertices.Add(gridVertices[col + 1, row, (int)VertexSpecifier.L]); } if (gridVertices[col + 1, row - 1, (int)VertexSpecifier.L] != null) { vertices.Add(gridVertices[col + 1, row - 1, (int)VertexSpecifier.L]); } if (gridVertices[col + 2, row - 1, (int)VertexSpecifier.L] != null) { vertices.Add(gridVertices[col + 2, row - 1, (int)VertexSpecifier.L]); } break; } return(vertices); }
/** * Create a vertex */ public void CreateVertex(int col, int row, VertexSpecifier vertexSpecifier) { gridVertices[col, row, (int)vertexSpecifier] = new Vertex(); }
/** * Obtain a vertex from this grid. */ public Vertex GetVertex(int col, int row, VertexSpecifier vertexSpec) { return(gridVertices[col, row, (int)vertexSpec]); }