public static Matrix GenerateMap(DeviceGroup[] deviceGroups, Device[] devices) { Node rootNode = new Node("Default", "", "Red"); DeviceGroup[] orderedDeviceGroups = deviceGroups.OrderBy(g => g.Level).ToArray(); List<Node> nodes = new List<Node>(); nodes.Add(rootNode); foreach (DeviceGroup deviceGroup in orderedDeviceGroups) { AddGroup(rootNode, deviceGroup, nodes, devices); } Matrix matrix = RoomGenerator.Generate(rootNode); matrix.Tiles[matrix.Tiles.Count/2][3].Add(new Tile(TileType.Player)); //Closing the front door foreach (var tiles in matrix.Tiles) { if (tiles[0].Any(t => t.TileType == TileType.Door)) { tiles[0].RemoveAll(t => t.TileType == TileType.Door); tiles[0].Add(new Tile(TileType.Wall)); } } return matrix; }