コード例 #1
0
        public void RenderStraightTrack(ICanvas canvas, int width)
        {
            float plankGap = width / _parameters.NumPlanks;

            for (int i = 1; i < _parameters.NumPlanks + 1; i++)
            {
                float pos = (i * plankGap) - (plankGap / 2);
                DrawPlank(canvas, width, pos);
            }

            canvas.DrawRect(0, _parameters.TrackPadding, width, _parameters.TrackWidth, _straightTrackClear);
            canvas.DrawRect(0, width - _parameters.TrackPadding - _parameters.TrackWidth, width, _parameters.TrackWidth, _straightTrackClear);

            var trackPath = _pathFactory.Create();

            trackPath.MoveTo(0, _parameters.TrackPadding);
            trackPath.LineTo(width, _parameters.TrackPadding);
            trackPath.MoveTo(0, _parameters.TrackPadding + _parameters.TrackWidth);
            trackPath.LineTo(width, _parameters.TrackPadding + _parameters.TrackWidth);

            trackPath.MoveTo(0, width - _parameters.TrackPadding - _parameters.TrackWidth);
            trackPath.LineTo(width, width - _parameters.TrackPadding - _parameters.TrackWidth);
            trackPath.MoveTo(0, width - _parameters.TrackPadding);
            trackPath.LineTo(width, width - _parameters.TrackPadding);

            canvas.DrawPath(trackPath, _straightTrackPaint);
        }
コード例 #2
0
        public IPath BuildCornerTrackPath()
        {
            IPath trackPath = _pathFactory.Create();

            trackPath.MoveTo(0, _innerTrackOffset);
            trackPath.QuadTo(_innerTrackOffset, _innerTrackOffset, _innerTrackOffset, 0);
            trackPath.MoveTo(0, _outerTrackOffset);
            trackPath.QuadTo(_outerTrackOffset, _outerTrackOffset, _outerTrackOffset, 0);

            return(trackPath);
        }
コード例 #3
0
        private static IPath BuildCornerRailPath(IPathFactory pathFactory)
        {
            IPath path = pathFactory.Create();

            // Inner

            float innerRailA = RailingInset;
            float innerRailB = RailingInset + RailingBaseWidth;

            path.MoveTo(0, innerRailA);
            path.LineTo(0, innerRailB);
            path.ConicTo(innerRailB, innerRailB, innerRailB, 0, 0.75f);
            path.LineTo(innerRailA, 0);
            path.ConicTo(innerRailA, innerRailA, 0, innerRailA, 0.75f);

            // Outer

            float outerRailA = CanvasSize - RailingInset - RailingBaseWidth;
            float outerRailB = CanvasSize - RailingInset;

            path.MoveTo(0, outerRailA);
            path.LineTo(0, outerRailB);
            path.ConicTo(outerRailB, outerRailB, outerRailB, 0, 0.75f);
            path.LineTo(outerRailA, 0);
            path.ConicTo(outerRailA, outerRailA, 0, outerRailA, 0.75f);

            return(path);
        }
コード例 #4
0
        private static IPath BuildCornerPlankPath(IPathFactory pathFactory)
        {
            IPath path = pathFactory.Create();

            path.MoveTo(0, BridgeInset);
            path.LineTo(0, CanvasSize - BridgeInset);
            path.ConicTo(CanvasSize - BridgeInset, CanvasSize - BridgeInset, CanvasSize - BridgeInset, 0, 0.75f);
            path.LineTo(BridgeInset, 0);
            path.ConicTo(BridgeInset, BridgeInset, 0, BridgeInset, 0.75f);

            return(path);
        }
コード例 #5
0
        private static IPath BuildLightPath(IPathFactory pathFactory)
        {
            const int halfLightSpread = LightSpread / 2;

            IPath path = pathFactory.Create();

            path.LineTo(-LightLength, -halfLightSpread);
            path.ConicTo(-LightCurveLength, 0, -LightLength, halfLightSpread, 0.75f);
            path.LineTo(0, 0);

            return(path);
        }
コード例 #6
0
        public PathRepository(IPathFactory pathFactory, ITreeOfLifeSession session)
        {
            _session = session;

            _paths = new ReadOnlyCollection<Path>(new List<Path>
            {
                pathFactory.Create("Paths/1", 11, 1, 1, 2),
                pathFactory.Create("Paths/2", 12, 2, 1, 3),
                pathFactory.Create("Paths/3", 13, 3, 1, 6),
                pathFactory.Create("Paths/4", 14, 4, 2, 3),
                pathFactory.Create("Paths/5", 15, 5, 2, 6),
                pathFactory.Create("Paths/6", 16, 6, 2, 4),
                pathFactory.Create("Paths/7", 17, 7, 3, 6),
                pathFactory.Create("Paths/8", 18, 8, 3, 5),
                pathFactory.Create("Paths/9", 19, 9, 4, 5),
                pathFactory.Create("Paths/10", 20, 10, 4, 6),
                pathFactory.Create("Paths/11", 21, 11, 4, 7),
                pathFactory.Create("Paths/12", 22, 12, 5, 6),
                pathFactory.Create("Paths/13", 23, 13, 5, 8),
                pathFactory.Create("Paths/14", 24, 14, 6, 7),
                pathFactory.Create("Paths/15", 25, 15, 6, 9),
                pathFactory.Create("Paths/16", 26, 16, 6, 8),
                pathFactory.Create("Paths/17", 27, 17, 7, 8),
                pathFactory.Create("Paths/18", 28, 18, 7, 9),
                pathFactory.Create("Paths/19", 29, 19, 7, 10),
                pathFactory.Create("Paths/20", 30, 20, 8, 9),
                pathFactory.Create("Paths/21", 31, 21, 8, 10),
                pathFactory.Create("Paths/22", 32, 22, 9, 10)
            });
        }