Exemple #1
0
    private void DoNextGenerationStep(List <MazeCell> activecells)
    {
        int currentIndex = activecells.Count - 1;

        MazeCell currentcell = activecells[currentIndex];

        if (currentcell.IsFullyInitialized)
        {
            activecells.RemoveAt(currentIndex);
            return;
        }
        MazeDirection direction   = currentcell.RandomUnitializedDirection;
        IntVector2    coordinates = currentcell.coordinates + direction.TointVector2();

        if (ContainsCoordinates(coordinates))
        {
            MazeCell neighbor = GetCell(coordinates);
            if (neighbor == null)
            {
                neighbor = CreatCell(coordinates);
                CreatePassage(currentcell, neighbor, direction);
                activecells.Add(neighbor);
            }
            else if (currentcell.room.settingIndex == neighbor.room.settingIndex)
            {
                CreatePassageInSameRoom(currentcell, neighbor, direction);
            }

            else
            {
                CreateWall(currentcell, neighbor, direction);
                //activecells.RemoveAt(currentIndex);
            }
        }
        else
        {
            CreateWall(currentcell, null, direction);
            // activecells.RemoveAt(currentIndex);
        }
    }