示例#1
0
        protected void FillDisconnectedRoomsWithDifferentValues(ArrayGrid <MapElement> map, ArrayGrid <int> valueMap, ref int countOfRoomsFilled)
        {
            IEnumerator <Vector2Int> mapIter = IterateOverMap(map);

            while (mapIter.MoveNext())
            {
                Vector2Int current = mapIter.Current;
                if (map[current] == defaultRoomElement)
                {
                    valueMap[current] = valueRoom;
                }
                else if (map[current] == defaultWallElement)
                {
                    valueMap[current] = valueWall;
                }
            }

            mapIter = IterateOverMap(map);
            int roomNumber = 0;

            while (mapIter.MoveNext())
            {
                Vector2Int current = mapIter.Current;
                if (valueMap[current] == valueRoom)
                {
                    valueMap.FloodFill(current, new List <int>()
                    {
                        valueWall
                    }, false, 1 + (roomNumber++));
                }
            }

            countOfRoomsFilled = roomNumber;
        }