public void DrawContent( Graphics g, SolidPenBrush color, int x, int y, TileBase content) { var contentType = _contentTypeService.GetContentType(content); var isDoor = _contentTypeService.IsDoor(content); const int TO_WALL_MARGIN = 4; var topCorner = new Point( x, y + TO_WALL_MARGIN); var bottomCorner = new Point( x, y + (HHeight * 2) - TO_WALL_MARGIN); var leftCorner = new Point( x - HWidth + (TO_WALL_MARGIN * 2), y + HHeight); var rightCorner = new Point( x + HWidth - (TO_WALL_MARGIN * 2), y + HHeight); switch (contentType) { case ContentTypes.Content: SetGroundPath(x, y); g.FillPath( color.Brush, _content); break; case ContentTypes.Ground: SetGroundPath(x, y); g.FillPath( color.LightBrush, _content); break; case ContentTypes.NorthFence: g.DrawLine( color.LightPen, topCorner, rightCorner); break; case ContentTypes.NorthWall: g.DrawLine( color.Pen, topCorner, rightCorner); if (isDoor) { g.DrawLine( color.Pen, topCorner, Point.Add(rightCorner, new Size(-10, 4))); } break; case ContentTypes.WestFence: g.DrawLine( color.LightPen, topCorner, leftCorner); break; case ContentTypes.WestWall: g.DrawLine( color.Pen, topCorner, leftCorner); if (isDoor) { g.DrawLine( color.Pen, Point.Add(topCorner, new Size(6, 8)), leftCorner); } break; case ContentTypes.NorthWallWithWindow: DrawWindow( g, color, topCorner, rightCorner); break; case ContentTypes.WestWallWithWindow: DrawWindow( g, color, topCorner, leftCorner); break; case ContentTypes.SouthWall: g.DrawLine( color.Pen, leftCorner, bottomCorner); break; case ContentTypes.EastWall: g.DrawLine( color.Pen, bottomCorner, rightCorner); break; case ContentTypes.NW_To_SE: g.DrawLine( color.Pen, topCorner, bottomCorner); break; case ContentTypes.NE_To_SW: g.DrawLine( color.Pen, leftCorner, rightCorner); break; case ContentTypes.NorthWestCorner: g.DrawLine( color.Pen, Point.Add(topCorner, new Size(-4, 0)), Point.Add(topCorner, new Size(4, 0))); break; case ContentTypes.NorthEastCorner: g.DrawLine( color.Pen, Point.Add(rightCorner, new Size(0, -4)), Point.Add(rightCorner, new Size(0, 4))); break; case ContentTypes.SouthEastCorner: g.DrawLine( color.Pen, Point.Add(bottomCorner, new Size(-4, 0)), Point.Add(bottomCorner, new Size(4, 0))); break; case ContentTypes.SouthWestCorner: g.DrawLine( color.Pen, Point.Add(leftCorner, new Size(0, -4)), Point.Add(leftCorner, new Size(0, 4))); break; } }