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, courseObjRatio * 0.75F, appearance, 0, new PointF(location.X, location.Y - 0.8F), CrossHairOptions.NoCrossHair); break; case ControlPointKind.Finish: courseObj = new FinishCourseObj(controlId, courseControlId, courseObjRatio * 0.75F, appearance, null, location, CrossHairOptions.NoCrossHair); break; case ControlPointKind.Normal: courseObj = new ControlNumberCourseObj(controlId, courseControlId, courseObjRatio, appearance, control.code, location); break; case ControlPointKind.CrossingPoint: courseObj = new CrossingCourseObj(controlId, courseControlId, Id <Special> .None, courseObjRatio * 1.5F, appearance, 0, location); break; case ControlPointKind.MapIssue: courseObj = new MapIssueCourseObj(controlId, courseControlId, courseObjRatio * 1.5F, appearance, -90, new PointF(location.X - 0.8F, location.Y), MapIssueCourseObj.RenderStyle.WithTail); break; default: Debug.Fail("bad control kind"); return; } courseObj.layer = layer; courseLayout.AddCourseObject(courseObj); }
public void FinishOffset() { CourseObj courseobj = new FinishCourseObj(ControlId(0), CourseControlId(0), 1.0F, defaultCourseAppearance, null, new PointF(0.1F, 0.4F), CrossHairOptions.HighlightCrossHair); SingleObjectOffset(courseobj, "finish_circle_offset"); }
public void FinishSpecial() { CourseObj courseobj = new FinishCourseObj(ControlId(0), CourseControlId(0), 1.0F, specialAppearance, null, new PointF(0, 0), CrossHairOptions.HighlightCrossHair); SingleObject(courseobj, "finish_circle_special"); }
public void FinishGapsSpecial() { CourseObj courseobj = new FinishCourseObj(ControlId(0), CourseControlId(0), 1.0F, specialAppearance, CircleGap.ComputeCircleGaps(0xF0FF83FF), new PointF(0, 0), CrossHairOptions.HighlightCrossHair); SingleObject(courseobj, "finish_circle_gaps_special"); }
public void FinishGapsHighlight() { CourseObj courseobj = new FinishCourseObj(ControlId(0), CourseControlId(0), 1.0F, defaultCourseAppearance, CircleGap.ComputeCircleGaps(0xF0FF83FF), new PointF(0.1F, 0.4F), CrossHairOptions.HighlightCrossHair); SingleObjectHighlight(courseobj, "finish_circle_gaps_highlight"); }
public void FinishDump() { CourseObj courseobj = new FinishCourseObj(ControlId(11), CourseControlId(0), 1.0F, defaultCourseAppearance, new CircleGap[]{new CircleGap(-10, 40), new CircleGap(90, 270)}, new PointF(-1, 0), CrossHairOptions.HighlightCrossHair); AssertDump(courseobj, @"Finish: control:11 scale:1 location:(-1,0) gaps:-10:40,90:270"); }
public void FinishDistance() { CourseObj courseobj = new FinishCourseObj(ControlId(0), CourseControlId(0), 1.0F, defaultCourseAppearance, null, new PointF(1, 1), CrossHairOptions.HighlightCrossHair); Assert.AreEqual(1.5, courseobj.DistanceFromPoint(new PointF(4, -3))); Assert.AreEqual(0.0, courseobj.DistanceFromPoint(new PointF(1.5F, -0.5F))); courseobj = new FinishCourseObj(ControlId(0), CourseControlId(0), 0.5F, defaultCourseAppearance, null, new PointF(1, 1), CrossHairOptions.HighlightCrossHair); Assert.AreEqual(3.25, courseobj.DistanceFromPoint(new PointF(4, -3))); Assert.AreEqual(0.0, courseobj.DistanceFromPoint(new PointF(1.2F, -0.3F))); }
public void PointObjectEquals() { CourseObj courseobj = new ControlCourseObj(ControlId(0), CourseControlId(0), 1.0F, defaultCourseAppearance, null, new PointF(0.5F, 0.5F)); CourseObj courseobj2 = new ControlCourseObj(ControlId(0), CourseControlId(0), 1.0F, defaultCourseAppearance, null, new PointF(0.5F, 0.5F)); CourseObj courseobj3 = new ControlCourseObj(ControlId(0), CourseControlId(0), 1.0F, defaultCourseAppearance, new CircleGap[] {new CircleGap(10,20)}, new PointF(0.5F, 0.5F)); CourseObj courseobj4 = new ControlCourseObj(ControlId(0), CourseControlId(0), 1.0F, defaultCourseAppearance, null, new PointF(0.5F, 0.6F)); CourseObj courseobj5 = new ControlCourseObj(ControlId(1), CourseControlId(0), 1.0F, defaultCourseAppearance, null, new PointF(0.5F, 0.5F)); CourseObj courseobj6 = new ControlCourseObj(ControlId(0), CourseControlId(1), 1.0F, defaultCourseAppearance, null, new PointF(0.5F, 0.5F)); CourseObj courseobj7 = new ControlCourseObj(ControlId(0), CourseControlId(0), 0.5F, defaultCourseAppearance, null, new PointF(0.5F, 0.5F)); CourseObj courseobj8 = new FinishCourseObj(ControlId(0), CourseControlId(0), 1.0F, defaultCourseAppearance, null, new PointF(0.5F, 0.5F), CrossHairOptions.HighlightCrossHair); CourseObj courseobj9 = new StartCourseObj(ControlId(0), CourseControlId(0), 1.0F, defaultCourseAppearance, 14, new PointF(0.5F, 0.5F), CrossHairOptions.HighlightCrossHair); CourseObj courseobj10 = new StartCourseObj(ControlId(0), CourseControlId(0), 1.0F, defaultCourseAppearance, 14, new PointF(0.5F, 0.5F), CrossHairOptions.HighlightCrossHair); CourseObj courseobj11 = new StartCourseObj(ControlId(0), CourseControlId(0), 1.0F, defaultCourseAppearance, 17, new PointF(0.5F, 0.5F), CrossHairOptions.HighlightCrossHair); CourseObj courseobj12 = new ControlCourseObj(ControlId(0), CourseControlId(0), 1.0F, defaultCourseAppearance, null, new PointF(0.5F, 0.5F)); courseobj12.layer = CourseLayer.Descriptions; Assert.AreEqual(courseobj, courseobj); Assert.AreEqual(courseobj, courseobj2); Assert.AreNotEqual(courseobj, courseobj3); Assert.AreNotEqual(courseobj, courseobj4); Assert.AreNotEqual(courseobj, courseobj5); Assert.AreNotEqual(courseobj, courseobj6); Assert.AreNotEqual(courseobj, courseobj7); Assert.AreNotEqual(courseobj, courseobj8); Assert.AreEqual(courseobj9, courseobj10); Assert.AreNotEqual(courseobj9, courseobj11); Assert.AreNotEqual(courseobj, courseobj12); }