Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
 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");
 }
Ejemplo n.º 3
0
 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");
 }
Ejemplo n.º 4
0
 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");
 }
Ejemplo n.º 5
0
 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");
 }
Ejemplo n.º 6
0
 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");
 }
Ejemplo n.º 7
0
 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)));
 }
Ejemplo n.º 8
0
        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);
        }