예제 #1
0
    /**
     * 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);
    }
예제 #2
0
    /**
     * 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);
    }
예제 #3
0
    /**
     * 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);
    }
예제 #4
0
 /**
  * Create a vertex
  */
 public void CreateVertex(int col, int row, VertexSpecifier vertexSpecifier)
 {
     gridVertices[col, row, (int)vertexSpecifier] = new Vertex();
 }
예제 #5
0
 /**
  * Obtain a vertex from this grid.
  */
 public Vertex GetVertex(int col, int row, VertexSpecifier vertexSpec)
 {
     return(gridVertices[col, row, (int)vertexSpec]);
 }