Пример #1
0
    private static bool NextWaveIteration(ref List <Subregion> openSet, ref Region region)
    {
        if (openSet.Count == 0)
        {
            return(false);
        }

        for (int i = openSet.Count - 1; i >= 0; i--)
        {
            if (openSet[i].region != region)
            {
                if (openSet[i].region is null)
                {
                    region.AddSubregion(openSet[i]);
                    continue;
                }
            }
        }

        foreach (Subregion neighbour in openSet[0].neighbouringSubregions)
        {
            if (neighbour.region == region || openSet.Contains(neighbour))
            {
                continue;
            }
            openSet.Add(neighbour);
        }
        openSet.RemoveAt(0);

        return(true);
    }