OpenRA.Mods.Common.Widgets.TerrainTemplatePreviewWidget.Draw C# (CSharp) Method

Draw() public method

public Draw ( ) : void
return void
        public override void Draw()
        {
            if (template == null)
                return;

            var grid = Game.ModData.Manifest.Get<MapGrid>();
            var ts = grid.TileSize;
            var gridType = grid.Type;
            var scale = GetScale();

            var sb = new Rectangle((int)(scale * bounds.X), (int)(scale * bounds.Y), (int)(scale * bounds.Width), (int)(scale * bounds.Height));
            var origin = RenderOrigin + new int2((RenderBounds.Size.Width - sb.Width) / 2 - sb.X, (RenderBounds.Size.Height - sb.Height) / 2 - sb.Y);

            var i = 0;
            for (var y = 0; y < Template.Size.Y; y++)
            {
                for (var x = 0; x < Template.Size.X; x++)
                {
                    var tile = new TerrainTile(Template.Id, (byte)(i++));
                    var tileInfo = tileset.GetTileInfo(tile);

                    // Empty tile
                    if (tileInfo == null)
                        continue;

                    var sprite = worldRenderer.Theater.TileSprite(tile, 0);
                    var size = new float2(sprite.Size.X * scale, sprite.Size.Y * scale);

                    var u = gridType == MapGridType.Rectangular ? x : (x - y) / 2f;
                    var v = gridType == MapGridType.Rectangular ? y : (x + y) / 2f;
                    var pos = origin + scale * (new float2(u * ts.Width, (v - 0.5f * tileInfo.Height) * ts.Height) - 0.5f * sprite.Size);
                    var palette = Template.Palette ?? TileSet.TerrainPaletteInternalName;
                    Game.Renderer.SpriteRenderer.DrawSprite(sprite, pos, worldRenderer.Palette(palette), size);
                }
            }
        }