Example #1
0
        public override void Render(RenderGrid grid, Stream stream)
        {
            int width  = CalculateDimension(grid.ColumnCount);
            int height = CalculateDimension(grid.RowCount);

            using (var image = new Image <Rgba32>(width, height))
            {
                image.Mutate();
                image.Mutate(context =>
                {
                    var fullArea = new Rectangle(0, 0, width, height);

                    foreach (AreaRenderer backgroundRenderer in BackgroundRenderers)
                    {
                        backgroundRenderer.Render(context, fullArea);
                    }

                    foreach (RenderCell cell in grid.GetCells())
                    {
                        var cellArea = new Rectangle(
                            TranslateCoordWithMargin(cell.Column * Settings.CellSize),
                            TranslateCoordWithMargin(cell.Row * Settings.CellSize),
                            Settings.CellSize,
                            Settings.CellSize);

                        if (cell.RenderType == RenderType.Ground)
                        {
                            foreach (CellRenderer groundRenderer in GroundRenderers)
                            {
                                groundRenderer.Render(context, cellArea, cell);
                            }
                        }

                        if (cell.RenderType == RenderType.Wall)
                        {
                            foreach (CellRenderer wallRenderer in WallRenderers)
                            {
                                wallRenderer.Render(context, cellArea, cell);
                            }
                        }
                    }
                });

                image.Save(stream, ImageFormats.Png);
            }
        }