private async Task GenerateMaze() { BusyGeneratingMaze2.OnNext(false); await Task.Run(() => { var builder = new MazeBuilder() .SetMazeAlgorithm(this.SelectedMazeGenAlgorithm) .SetMazeDimensions(MazeWidth, MazeHeight) .RecordMazeTransformationSteps(); this._Maze = builder.Build(); var image = MazeImageCreator.GetMazeImage(_Maze, 10); this._MazeImage = ConvertToAvaloniaImage(image); // this.StepsToDraw = builder.GetMazeTransformationSteps(); Dispatcher.UIThread.Post(InvalidateVisual, DispatcherPriority.Background); BusyGeneratingMaze2.OnNext(true); }).ConfigureAwait(true); }
private static async Task CreateMazeImageAndGif(IMazeGenAlgorithm i) { MazeBuilder mazeBuilder = new MazeBuilder(); TileMapMaze drawMaze = new TileMapMaze(60, 60); drawMaze.OverrideAllMazeFields(); var maze = mazeBuilder .SetMazeAlgorithm(i) .SetDrawCallback(m => { if (i is RecursiveDivision) { //drawMaze.TransformMaze(m); //MazeImageCreator.CreateMazeImage(drawMaze, i.GetName(), 10, "./"); } }) .RecordMazeTransformationSteps(true) .SetMazeDimensions(60, 60) .Build(); await MazeImageCreator.CreateMazeAnimationGifAsync(mazeBuilder.GetMazeTransformationSteps(), drawMaze, i.GetName(), 5).ConfigureAwait(false); MazeImageCreator.CreateMazeImage(maze, i.GetName(), 5, "./"); Console.WriteLine($"Finished maze image and gif creation for algorithm={i.GetName()}."); }