Example #1
0
        public void ChangeMode()
        {
            var hasLeftSegment    = TrafficPriority.HasLeftSegment(segmentId, nodeId) && TrafficPriority.HasLeftLane(nodeId, segmentId);
            var hasForwardSegment = TrafficPriority.HasForwardSegment(segmentId, nodeId) && TrafficPriority.HasForwardLane(nodeId, segmentId);
            var hasRightSegment   = TrafficPriority.HasRightSegment(segmentId, nodeId) && TrafficPriority.HasRightLane(nodeId, segmentId);

            if (CurrentMode == Mode.Simple)
            {
                if (!hasLeftSegment)
                {
                    CurrentMode = Mode.SingleRight;
                }
                else
                {
                    CurrentMode = Mode.SingleLeft;
                }
            }
            else if (CurrentMode == Mode.SingleLeft)
            {
                if (!hasForwardSegment || !hasRightSegment)
                {
                    CurrentMode = Mode.Simple;
                }
                else
                {
                    CurrentMode = Mode.SingleRight;
                }
            }
            else if (CurrentMode == Mode.SingleRight)
            {
                if (!hasLeftSegment)
                {
                    CurrentMode = Mode.Simple;
                }
                else
                {
                    CurrentMode = Mode.All;
                }
            }
            else
            {
                CurrentMode = Mode.Simple;
            }

            if (CurrentMode == Mode.Simple)
            {
                LightLeft       = LightMain;
                LightRight      = LightMain;
                LightPedestrian = _checkPedestrianLight();
            }
        }