コード例 #1
0
    private void DoNextGenerationStep(List <BoardSpace> activeSpaces)
    {
        int currentIndex = activeSpaces.Count - 1;
        //int currentIndex = Random.Range(0, activeSpaces.Count);
        BoardSpace currentSpace = activeSpaces[currentIndex];

        if (currentSpace.IsFullyInitialized)
        {
            activeSpaces.RemoveAt(currentIndex);
            return;
        }

        Direction  direction   = currentSpace.GetRandomUninitializedDirection();
        Vector2Int coordinates = currentSpace.coordinates + direction.ToCoordinates();

        if (ContainsCoordinates(coordinates))
        {
            BoardSpace neighbour = GetSpace(coordinates);
            if (neighbour == null)
            {
                neighbour = CreateSpace(coordinates);
                CreatePassage(currentSpace, neighbour, direction);
                activeSpaces.Add(neighbour);
            }
            else
            {
                CreateWall(currentSpace, neighbour, direction);
            }
        }
        else
        {
            CreateWall(currentSpace, null, direction);
        }
    }