コード例 #1
0
        protected GameLine CreateLine(
            TrackWriter trk,
            Vector2d start,
            Vector2d end,
            bool inv,
            bool snapstart,
            bool snapend)
        {
            GameLine added = null;

            switch (game.Canvas.ColorControls.Selected)
            {
            case LineType.Blue:
                added = new StandardLine(start, end, inv);
                break;

            case LineType.Red:
                var red = new RedLine(start, end, inv)
                {
                    Multiplier = game.Canvas.ColorControls.RedMultiplier
                };
                red.CalculateConstants();    //multiplier needs to be recalculated
                added = red;
                break;

            case LineType.Scenery:
                added = new SceneryLine(start, end)
                {
                    Width = game.Canvas.ColorControls.GreenMultiplier
                };
                break;
            }
            trk.AddLine(added);
            if (game.Canvas.ColorControls.Selected != LineType.Scenery)
            {
                if (snapstart)
                {
                    SnapLineEnd(trk, added, added.Position);
                }
                if (snapend)
                {
                    SnapLineEnd(trk, added, added.Position2);
                }
            }
            game.Track.Invalidate();
            return(added);
        }
コード例 #2
0
        private void Multiline(int count)
        {
            SimulationCell multilines = GetMultiLines(false);

            using (var trk = _editor.CreateTrackWriter())
            {
                var owner = (StandardLine)_ownerline;
                MakingChange();
                // owner line doesn't count, but our min bounds is 1
                var diff = (count - 1) - multilines.Count;
                if (diff < 0)
                {
                    for (int i = 0; i > diff; i--)
                    {
                        trk.RemoveLine(multilines.First());
                        multilines.RemoveLine(multilines.First().ID);
                    }
                }
                else if (diff > 0)
                {
                    if (_ownerline is RedLine redline)
                    {
                        for (int i = 0; i < diff; i++)
                        {
                            var red = new RedLine(owner.Position, owner.Position2, owner.inv)
                            {
                                Multiplier = ((RedLine)owner).Multiplier
                            };
                            red.CalculateConstants();
                            trk.AddLine(red);
                        }
                    }
                    else if (_ownerline is StandardLine blueline)
                    {
                        for (int i = 0; i < diff; i++)
                        {
                            var blue = new StandardLine(owner.Position, owner.Position2, owner.inv);
                            blue.CalculateConstants();
                            trk.AddLine(blue);
                        }
                    }
                }
            }
            _editor.NotifyTrackChanged();
        }
コード例 #3
0
        public override void Render()
        {
            base.Render();
            if (Active)
            {
                var   diff = _end - _start;
                var   x    = diff.X;
                var   y    = diff.Y;
                Color c    = Color.FromArgb(200, 150, 150, 150);
                if (Math.Abs(x) + Math.Abs(y) < MINIMUM_LINE)
                {
                    c = Color.Red;
                    var sz = 2f;
                    if (Swatch.Selected == LineType.Scenery)
                    {
                        sz *= Swatch.GreenMultiplier;
                    }
                    GameRenderer.RenderRoundedLine(_start, _end, c, sz);
                }
                else
                {
                    switch (Swatch.Selected)
                    {
                    case LineType.Blue:
                        StandardLine sl = new StandardLine(_start, _end, _addflip);
                        sl.CalculateConstants();
                        GameRenderer.DrawTrackLine(sl, c, Settings.Editor.RenderGravityWells, true);
                        break;

                    case LineType.Red:
                        RedLine rl = new RedLine(_start, _end, _addflip);
                        rl.Multiplier = Swatch.RedMultiplier;
                        rl.CalculateConstants();
                        GameRenderer.DrawTrackLine(rl, c, Settings.Editor.RenderGravityWells, true);
                        break;

                    case LineType.Scenery:
                        GameRenderer.RenderRoundedLine(_start, _end, c, 2 * Swatch.GreenMultiplier);
                        break;
                    }
                }
            }
        }
コード例 #4
0
        protected GameLine CreateLine( //Creates a line from a pair of vectors (modified from Tool.cs)
            TrackWriter trk,
            Vector2d start,
            Vector2d end,
            LineType type,
            bool inv,
            int multiplier = 1,    //Only applies to red lines (smh)
            float width    = 1.0f) //Width only applicable to green lines
        {
            GameLine added = null;

            switch (type)
            {
            case LineType.Blue:
                added = new StandardLine(start, end, inv);
                break;

            case LineType.Red:
                var red = new RedLine(start, end, inv)
                {
                    Multiplier = multiplier
                };
                red.CalculateConstants();    //multiplier needs to be recalculated
                added = red;
                break;

            case LineType.Scenery:
                added = new SceneryLine(start, end)
                {
                    Width = width
                };
                break;
            }
            trk.AddLine(added);
            game.Track.Invalidate();
            return(added);
        }