public void LoadMaze() { Logger.Log("Load maze (in editor)"); if (string.IsNullOrWhiteSpace(_mazeName)) { Logger.Warning(Logger.Datawriting, "In order to save the maze level, please fill in a maze name"); return; } bool mazeLevelNameExists = MazeLevelLoader.MazeLevelExists(_mazeName); if (mazeLevelNameExists) { MazeLevelGameplayManager.Instance.UnloadLevel(); MazeLevelData mazeLevelData = MazeLevelLoader.LoadMazeLevelData(_mazeName); MazeLevelLoader.LoadMazeLevelForEditor(mazeLevelData); } EditorSelectedMazeTileModifierContainer selectedTileModifierContainer = EditorCanvasUI.Instance.SelectedTileModifierContainer as EditorSelectedMazeTileModifierContainer; selectedTileModifierContainer?.SetInitialModifierValues(); EditorMazeTileModificationPanel.Instance?.Reset(); EditorMazeTileModificationPanel.Instance?.DestroyModifierActions(); }
public void GenerateTiles() { if (_gridWidth < 3) { Logger.Warning(Logger.Level, "Cannot generate a tile grid with a width of {0}. The minimum generatable grid width is 3", _gridWidth); return; } if (_gridWidth > 25) { Logger.Warning(Logger.Level, "Cannot generate a tile grid with a width of {0}. The maximum generatable grid width is 20", _gridWidth); return; } if (_gridHeight < 3) { Logger.Warning(Logger.Level, "Cannot generate a tile grid with a height of {0}. The minimum generatable grid height is 3", _gridHeight); return; } if (_gridHeight > 25) { Logger.Warning(Logger.Level, "Cannot generate a tile grid with a height of {0}. The maximum generatable grid height is 20", _gridHeight); return; } Logger.Log("Generate tile grid with a width of {0} and a height of {1}", _gridWidth, _gridHeight); // remove everything from the currently loaded level MazeLevelGameplayManager.Instance.UnloadLevel(); // Create a new level from scratch with a obstacle ring at the edges List <SerialisableTile> tiles = new List <SerialisableTile>(); for (int i = 0; i < _gridWidth; i++) { for (int j = 0; j < _gridHeight; j++) { string tileId = Guid.NewGuid().ToString(); GridLocation gridLocation = new GridLocation(i, j); List <SerialisableTileAttribute> tileAttributes = new List <SerialisableTileAttribute>(); List <SerialisableTileBackground> tileBackgrounds = new List <SerialisableTileBackground>(); List <SerialisableTileCornerFiller> tileCornerFillers = new List <SerialisableTileCornerFiller>(); SerialisableTileMainMaterial mainMaterial = new SerialisableTileMainMaterial("GroundMainMaterial", new SerialisableLandMaterial()); SerialisableTileObstacleAttribute edgeObstacle = TryAddEdgeObstacle(gridLocation); if (edgeObstacle != null) { tileAttributes.Add(new SerialisableTileAttribute(edgeObstacle.GetType().ToString(), edgeObstacle)); } SerialisableTilePathBackground mazeTilePath = TryAddPathsForNewMaze(gridLocation, tileAttributes); if (mazeTilePath != null) { tileBackgrounds.Add(new SerialisableTileBackground(mazeTilePath.GetType().ToString(), mazeTilePath)); } SerialisableTileBaseGround baseBackground = TryAddBaseBackgroundForNewMaze(tileBackgrounds, tileAttributes); if (baseBackground != null) { tileBackgrounds.Add(new SerialisableTileBackground(baseBackground.GetType().ToString(), baseBackground)); } SerialisableTile tile = new SerialisableTile(tileId, mainMaterial, tileAttributes, tileBackgrounds, tileCornerFillers, gridLocation.X, gridLocation.Y); tiles.Add(tile); } } MazeLevelData newMazeLevelData = new MazeLevelData(); newMazeLevelData.Tiles = tiles; MazeLevelLoader.LoadMazeLevelForEditor(newMazeLevelData); }