private void CreateControlNumber(CourseView.ControlView controlView, ControlPosition controlPosition)
{
Id<ControlPoint> controlId = controlView.controlId;
Id<CourseControl> courseControlId = controlView.courseControlIds[0];
ControlPoint control = eventDB.GetControl(controlId);
PointF location = LocationFromAbstractPosition(controlPosition.x, controlPosition.y);
CourseLayer layer;
if (ControlViewInSpecificVariation(controlView))
layer = courseLayerSpecificVariation;
else
layer = courseLayerAllVariationsAndParts;
CourseObj courseObj;
switch (control.kind) {
case ControlPointKind.Start:
case ControlPointKind.MapExchange:
// Triangle looks best if we displace it down a bit (0.8 looks right).
courseObj = new StartCourseObj(controlId, courseControlId, scaleRatio * 0.75F, appearance, 0, new PointF(location.X, location.Y - 0.8F), CrossHairOptions.NoCrossHair);
break;
case ControlPointKind.Finish:
courseObj = new FinishCourseObj(controlId, courseControlId, scaleRatio * 0.75F, appearance, null, location, CrossHairOptions.NoCrossHair);
break;
case ControlPointKind.Normal:
courseObj = new ControlNumberCourseObj(controlId, courseControlId, scaleRatio, appearance, control.code, location);
break;
case ControlPointKind.CrossingPoint:
courseObj = new CrossingCourseObj(controlId, courseControlId, Id<Special>.None, scaleRatio * 1.5F, appearance, 0, location);
break;
default:
Debug.Fail("bad control kind");
return;
}
courseObj.layer = layer;
courseLayout.AddCourseObject(courseObj);
}