Ejemplo n.º 1
0
 public void Build(MapSupervisor mapSupervisor)
 {
     if (!_isBuilt)
     {
         CreateOrAssignNeighbors(mapSupervisor);
         CreateOrAssignVerticesAndEdgesFromNeighbour();
         ConnectVerticesAndEdges();
         _isBuilt = true;
         foreach (var neighbor in Neighbours)
         {
             neighbor?.Build(mapSupervisor);
         }
     }
 }
Ejemplo n.º 2
0
        private void CreateOrAssignNeighbors(MapSupervisor mapSupervisor)
        {
            foreach (Direction direction in Enum.GetValues(typeof(Direction)))
            {
                var directionAsInt             = (int)direction;
                var neighborHexagonCoordinates = direction.GetNeighbourCoordinates(Coordinates);
                if (neighborHexagonCoordinates.IsWithinBoundaries(mapSupervisor.MapSettings))
                {
                    var alreadyExists =
                        mapSupervisor.Map.TryGetValue(neighborHexagonCoordinates, out var neighborHexagon);
                    if (!alreadyExists)
                    {
                        neighborHexagon = new Hexagon {
                            Coordinates = neighborHexagonCoordinates
                        };
                        mapSupervisor.Map.Add(neighborHexagonCoordinates, neighborHexagon);
                    }

                    Neighbours[directionAsInt] = neighborHexagon;
                }
            }
        }