private bool GenerateItemsFromTemplate(int xoffset, int yoffset, LevelInfo[,] levelStructure, LayoutGrid2D <int> layout) { var levelTemplate = new Dictionary <(int h, int w), List <List <List <LevelInfoDto> > > >(); var occupiedPoints = new List <AStar.Point>(); var firstRoom = layout.Rooms[0]; var lastRoom = layout.Rooms[layout.Rooms.Count - 1]; var indent = firstRoom.Transformation == Edgar.Geometry.TransformationGrid2D.Identity ? 1 : -1; var startPoint = levelStructure[xoffset + firstRoom.Position.X + 1, yoffset + firstRoom.Position.Y + indent]; startPoint.TileType = TileType.Player; indent = lastRoom.Transformation == Edgar.Geometry.TransformationGrid2D.Identity ? 1 : -1; var endPoint = levelStructure[xoffset + lastRoom.Position.X + 1, yoffset + lastRoom.Position.Y + indent]; endPoint.TileType = TileType.Exit; foreach (var room in layout.Rooms) { if (room == firstRoom || room == lastRoom || room.IsCorridor) { continue; } var roomHeight = room.Outline.BoundingRectangle.Height; var roomWidth = room.Outline.BoundingRectangle.Width; if (!levelTemplate.ContainsKey((roomHeight, roomWidth))) { var folderName = $@"RandomLevelParts\OrdinaryLevelParts\{roomHeight}_{roomWidth}"; var roomsTemplates = ResourcesManagment.LoadLevelStructureFromFolderInDto(folderName); levelTemplate.Add((roomHeight, roomWidth), roomsTemplates); } var roomTemplate = levelTemplate[(roomHeight, roomWidth)].OrderBy(a => UnityEngine.Random.value).FirstOrDefault();
public void OnLevelButtonClick(string level) { var newLevelStructure = ResourcesManagment.LoadLevelStructure($"Levels/Level{level}Structure"); Globals.SetLevelStructure(newLevelStructure); SceneManager.LoadScene(Globals.GameplaySceneName); }