AStarTest.Renderer.RenderTile C# (CSharp) Method

RenderTile() static private method

static private RenderTile ( System.Windows.Media.DrawingContext dc, int x, int y ) : void
dc System.Windows.Media.DrawingContext
x int
y int
return void
        void RenderTile(DrawingContext dc, int x, int y)
        {
            var data = m_renderData.Grid[y, x];

            var renderSize = new Size(1, 1);

            dc.DrawRectangle(data.Brush, s_edgePen, new Rect(renderSize));

            if (data.Stairs == Stairs.Down)
            {
                double tri = renderSize.Width / 3;
                dc.DrawLine(new Pen(Brushes.White, 0.05), new Point(tri, tri), new Point(tri * 2, renderSize.Height / 2));
                dc.DrawLine(new Pen(Brushes.White, 0.05), new Point(tri * 2, renderSize.Height / 2), new Point(tri, tri * 2));
            }
            else if (data.Stairs == Stairs.Up)
            {
                double tri = renderSize.Width / 3;
                dc.DrawLine(new Pen(Brushes.White, 0.05), new Point(tri * 2, tri), new Point(tri, renderSize.Height / 2));
                dc.DrawLine(new Pen(Brushes.White, 0.05), new Point(tri, renderSize.Height / 2), new Point(tri * 2, tri * 2));
            }

            if (m_renderDirection && data.From != Direction.None)
            {
                var iv = data.From.ToIntVector2();
                var v = new Vector(iv.X, iv.Y);
                v *= renderSize.Width / 4;
                Point mp = new Point(renderSize.Width / 2, renderSize.Height / 2);
                dc.DrawEllipse(Brushes.White, null, mp, 0.1, 0.1);
                dc.DrawLine(new Pen(Brushes.White, 0.05), mp, mp + new Vector(v.X, v.Y));
            }

            if (data.Weight != 0)
            {
                var ft = new FormattedText(data.Weight.ToString(), System.Globalization.CultureInfo.CurrentCulture,
                    FlowDirection.LeftToRight, new Typeface("Verdana"), 0.2, Brushes.White);
                dc.DrawText(ft, new Point(renderSize.Width - ft.Width - 0.02, 0));
            }

            if (m_renderTexts && (data.G != 0 || data.H != 0))
            {
                var ft = new FormattedText(data.G.ToString(), System.Globalization.CultureInfo.CurrentCulture,
                    FlowDirection.LeftToRight, new Typeface("Verdana"), 0.2, Brushes.White);
                dc.DrawText(ft, new Point(0.02, renderSize.Height - ft.Height - 0.02));

                ft = new FormattedText(data.H.ToString(), System.Globalization.CultureInfo.CurrentCulture,
                    FlowDirection.LeftToRight, new Typeface("Verdana"), 0.2, Brushes.White);
                dc.DrawText(ft, new Point(renderSize.Width - ft.Width - 0.02, renderSize.Height - ft.Height - 0.02));

                ft = new FormattedText((data.G + data.H).ToString(), System.Globalization.CultureInfo.CurrentCulture,
                    FlowDirection.LeftToRight, new Typeface("Verdana"), 0.2, Brushes.White);
                dc.DrawText(ft, new Point(0.02, 0.02));
            }
        }