private void update(TriangleDirectiveScope scope) { var triangleModel = scope.TriangleModel; if (triangleModel == null) { return; } string strokeStyle = triangleModel.Selected ? "#FAFAFA" : (triangleModel.Glow ? "gold" : "black"); int lineWidth = triangleModel.Selected ? 18 : (triangleModel.Glow ? 16 : 14); var currentColor = triangleModel.Color; if (currentColor == null) { return; } string fillStyle = currentColor; if (scope.Element == null) { if (triangleModel.PointUp) { var x = (triangleModel.X) / 2.0f; var y = triangleModel.Y; var xxx = x * TriangleLength + x * spacing - spacing / 2.0f + TriangleGameController.Offset.X; var yyy = y * TriangleLength + y * (spacing - 3) / 2 + TriangleGameController.Offset.Y; scope.Element = paperService.GetCanvas().Context.Path("M" + xxx + " " + yyy + "L" + (xxx + TriangleLength / 2) + " " + (yyy + TriangleLength) + "L" + (xxx - TriangleLength / 2) + " " + (yyy + TriangleLength) + "L" + (xxx) + " " + (yyy)); } else { var x = (triangleModel.X - 1) / 2.0f; var y = triangleModel.Y; var xxx = x * TriangleLength + x * spacing + TriangleGameController.Offset.X; var yyy = y * TriangleLength + y * (spacing - 3) / 2 + TriangleGameController.Offset.Y; scope.Element = paperService.GetCanvas().Context.Path("M" + xxx + " " + yyy + "L" + (xxx + TriangleLength) + " " + (yyy) + "L" + (xxx + TriangleLength / 2) + " " + (yyy + TriangleLength) + "L" + (xxx) + " " + (yyy)); } scope.Element.Attribute(new RaphaelElementAttributes() { StrokeLineCap = RaphaelLineCap.Round, StrokeLineJoin = RaphaelLineJoin.Round }); scope.Element.MouseDown((e) => { var pointer = Help.GetCursorPosition(e); scope.OnMouseDown(new { pointer, triangle = scope.TriangleModel }); }); scope.Element.MouseOver((e) => { scope.OnMouseOver(new { triangle = scope.TriangleModel }); }); bool touched; scope.Element.TouchStart((e) => { var pointer = Help.GetCursorPosition(e); touched = true; Window.SetTimeout(() => { if (touched) { pointer.Right = true; scope.OnMouseDown(new { pointer, triangle = scope.TriangleModel }); } }, 500);//right click scope.OnMouseDown(new { pointer, triangle = scope.TriangleModel }); e.PreventDefault(); }); scope.Element.TouchEnd((e) => { touched = false; e.PreventDefault(); }); scope.Element.TouchMove((e) => { scope.OnMouseOver(new { triangle = scope.TriangleModel }); e.PreventDefault(); }); } scope.Element.Attribute(new RaphaelElementAttributes() { Fill = fillStyle, StrokeWidth = lineWidth, Stroke = strokeStyle }); }