Beispiel #1
0
 /// <summary>
 /// Connects all adjacent nodes. Adjacencies are defined by the injected IDirectionsInfoContainer
 /// which describes the directions in which the IGraphNodes can be connected, and the X and Y
 /// offsets that each human-friendly direction defines in terms of a grid. Grid/graph boundaries are
 /// determined by null adjacent IGraphNodes.
 /// </summary>
 private void ConnectAllNodes()
 {
     for (int x = 0; x <= _upperRightCoordinateBoundary.CoordinatesX; x++)
     {
         for (int y = 0; y <= _upperRightCoordinateBoundary.CoordinatesY; y++)
         {
             IGraphNode currentNode = _graphData[x.ToString() + y];
             foreach (IDirectionsInformation directionsInformation in _directionsInfoContainer.DirectionsInformation.Values)
             {
                 int xTotal = currentNode.XCoord + directionsInformation.XOffset;
                 int yTotal = currentNode.YCoord + directionsInformation.YOffset;
                 if (xTotal < 0 || xTotal > _upperRightCoordinateBoundary.CoordinatesX)
                 {
                     currentNode.PutAdjacentNode(_directionsInfoContainer.GetDirectionInteger(directionsInformation.Name), null);
                 }
                 else if (yTotal < 0 || yTotal > _upperRightCoordinateBoundary.CoordinatesY)
                 {
                     currentNode.PutAdjacentNode(_directionsInfoContainer.GetDirectionInteger(directionsInformation.Name), null);
                 }
                 else
                 {
                     currentNode.PutAdjacentNode(
                         _directionsInfoContainer.GetDirectionInteger(directionsInformation.Name),
                         _graphData[xTotal.ToString() + yTotal]);
                 }
             }
         }
     }
 }