public void DrawUI(CanvasRenderingContext2D canvas, bool showImages, int selectedPieceIndex, LevelObject levelObject)
{
canvas.Save();
if (!showImages)
{
canvas.StrokeStyle = "#000000";
canvas.LineWidth = 2;
canvas.BeginPath();
canvas.MoveTo(-1000, 0);
canvas.LineTo(1000, 0);
canvas.ClosePath();
canvas.Stroke();
canvas.BeginPath();
canvas.MoveTo(0, -1000);
canvas.LineTo(0, 1000);
canvas.ClosePath();
canvas.Stroke();
for (var i = 1; i < Pieces.Count; i++)
{
var j = Pieces[i];
canvas.BeginPath();
canvas.MoveTo(j.X, j.Y);
canvas.LineTo(Pieces[i - 1].X, Pieces[i - 1].Y);
canvas.Stroke();
}
}
foreach (var levelObjectPieceLayoutPiece in Pieces)
{
if (showImages)
{
LevelObjectPiece piece = levelObject.Pieces[levelObjectPieceLayoutPiece.PieceIndex];
var asset = levelObject.Assets[piece.AssetIndex];
if (asset.Frames.Count > 0)
{
var frm = asset.Frames[0];
frm.DrawUI(canvas,
new Point(levelObjectPieceLayoutPiece.X - frm.OffsetX, levelObjectPieceLayoutPiece.Y - frm.OffsetY),
false,
false,
false,
false,
piece.Xflip,
piece.Yflip);
}
}
else
{
CanvasGradient drawRadial;
drawRadial = SonicManager.Instance.mainCanvas.Context.CreateRadialGradient(0, 0, 0, 10, 10, 50);
drawRadial.AddColorStop(0, "white");
if (selectedPieceIndex == levelObjectPieceLayoutPiece.PieceIndex)
drawRadial.AddColorStop(1, "yellow");
else
drawRadial.AddColorStop(1, "red");
canvas.FillStyle = drawRadial;
canvas.BeginPath();
canvas.Arc(levelObjectPieceLayoutPiece.X, levelObjectPieceLayoutPiece.Y, 10, 0, Math.PI * 2, true);
canvas.ClosePath();
canvas.Fill();
}
}
canvas.Restore();
}