예제 #1
0
 private bool CheckEveryNeighbour(OutputGrid outputGrid)
 {
     for (int row = 0; row < outputGrid.height; row++)
     {
         for (int col = 0; col < outputGrid.width; col++)
         {
             Vector2Int        cellCoordinates = new Vector2Int(col, row);
             List <VectorPair> list            = new List <VectorPair>()
             {
                 new VectorPair(cellCoordinates, cellCoordinates + new Vector2Int(1, 0), Direction.Right, cellCoordinates),
                 new VectorPair(cellCoordinates, cellCoordinates + new Vector2Int(-1, 0), Direction.Left, cellCoordinates),
                 new VectorPair(cellCoordinates, cellCoordinates + new Vector2Int(0, 1), Direction.Up, cellCoordinates),
                 new VectorPair(cellCoordinates, cellCoordinates + new Vector2Int(0, -1), Direction.Down, cellCoordinates)
             };
             foreach (var item in list)
             {
                 if (item.CellToPropagatePosition.x >= 0 && item.CellToPropagatePosition.x < 3 && item.CellToPropagatePosition.y >= 0 && item.CellToPropagatePosition.y < 3 && outputGrid.CheckCellExists(item.CellToPropagatePosition))
                 {
                     var itemToCheck = outputGrid.GetPossibleValuesForPositon(item.CellToPropagatePosition).First();
                     var baseCell    = outputGrid.GetPossibleValuesForPositon(cellCoordinates).First();
                     if (patternManager.GetPossibleNeighboursForPatternInDIrection(baseCell, item.DiectionFromBase).Contains(itemToCheck) == false)
                     {
                         Debug.Log(baseCell + " cant have a neighbour " + itemToCheck + " at direction " + item.DiectionFromBase.ToString());
                         return(false);
                     }
                 }
             }
         }
     }
     return(true);
 }