static void Excavate(Path pPath) { // go through the nested path trees var walker = new Walker(Point.Empty, pPath.Walkables); // start coordinate rooms.Add(Point.Empty.ToCoordinateString(), new List <Direction>()); walker.Excavate(); int width = maxCoordinate.X - minCoordinate.X + 1; int height = maxCoordinate.Y - minCoordinate.Y + 1; map = new int[width, height]; foreach (var room in rooms) { var parts = room.Key.Split(new string[] { "," }, StringSplitOptions.None); var roomPoint = new Point(int.Parse(parts[0]) - minCoordinate.X, int.Parse(parts[1]) - minCoordinate.Y); int value = 0; foreach (var d in room.Value) { value |= (int)d; } map[roomPoint.X, roomPoint.Y] = value; } var start = new Point(-minCoordinate.X, -minCoordinate.Y); var path = Explore(start); //SaveMap(path); //DrawMap(); Console.WriteLine(); Console.WriteLine(); Console.WriteLine((path.Count - 1) + ". Done!"); Console.ReadKey(true); }