Exemplo n.º 1
0
        private void RefreshAll(PBSHighwayNode extraNode = null)
        {
            var relatedAreas =
                ConnectionHandler.InConnections
                .Concat(ConnectionHandler.OutConnections)
                .Select(c => c.TargetPbsObject).OfType <PBSHighwayNode>()
                .Select(n => new HighwaySegmentInfo
            {
                EndPosition  = n.CurrentPosition,
                Radius       = Math.Max(WorkRange, n.WorkRange),
                StatPosition = CurrentPosition
            })
                .Select(si => si.BoundingArea())
                .ToList();


            if (extraNode != null)
            {
                var s = new HighwaySegmentInfo
                {
                    EndPosition  = extraNode.CurrentPosition,
                    Radius       = Math.Max(WorkRange, extraNode.WorkRange),
                    StatPosition = CurrentPosition
                };

                var area = s.BoundingArea();
                relatedAreas.Add(area);
            }

            Zone.HighwayHandler.SubmitMore(relatedAreas);
        }
Exemplo n.º 2
0
        public List <HighwaySegmentInfo> GetOutgoingLiveSegments()
        {
            var mySegments = new List <HighwaySegmentInfo>();

            if (!IsGoodHighwayTarget())
            {
                return(mySegments);
            }

            foreach (var connectedHighwayNode in GetConnectedHighwayTargets())
            {
                if (!connectedHighwayNode.IsGoodHighwayTarget())
                {
                    continue;
                }

                var i = new HighwaySegmentInfo()
                {
                    StatPosition = CurrentPosition,
                    EndPosition  = connectedHighwayNode.CurrentPosition,
                    Radius       = Math.Max(WorkRange, connectedHighwayNode.WorkRange)
                };

                mySegments.Add(i);
            }

            return(mySegments);
        }