コード例 #1
0
        private void intersectionControl_TrafficLightClick(object sender, TrafficLightClickEventArgs e)
        {
            IntersectionControl intersection = (IntersectionControl)sender;
            TrafficLight        trafficLight = intersection.GetTrafficLight(e.LaneId);

            if (trafficLight.State == SignalState.GO)
            {
                trafficLight.SwitchTo(SignalState.STOP);
            }
            else
            {
                trafficLight.SwitchTo(SignalState.GO);
            }
        }
コード例 #2
0
ファイル: RandomRoadUsers.cs プロジェクト: fabestine1/MyThing
        /// <summary>
        /// Statistieken bijwerken.
        /// </summary>
        /// <param name="roadUser"></param>
        /// <param name="intersection"></param>
        private void UpdateStats(RoadUser roadUser, IntersectionControl intersection)
        {
            lastRoadUser = roadUser;
            lastIC       = intersection;

            StatsTotal++;

            if (roadUser.MaxSpeed >= 4)
            {
                StatsTotalSpeed++;
            }
            if (roadUser.RedLight)
            {
                StatsTotalRedLight++;
            }

            if (intersection.IntersectionType == IntersectionType.TYPE_1)
            {
                StatsTotalPerIntersection[0]++;
            }
            else if (intersection.IntersectionType == IntersectionType.TYPE_2)
            {
                StatsTotalPerIntersection[1]++;
            }
            else if (intersection.IntersectionType == IntersectionType.TYPE_3)
            {
                StatsTotalPerIntersection[2]++;
            }
            else if (intersection.IntersectionType == IntersectionType.TYPE_4)
            {
                StatsTotalPerIntersection[3]++;
            }
            else if (intersection.IntersectionType == IntersectionType.TYPE_5)
            {
                StatsTotalPerIntersection[4]++;
            }
            else if (intersection.IntersectionType == IntersectionType.TYPE_RAILWAY)
            {
                StatsTotalPerIntersection[5]++;
            }
        }
コード例 #3
0
ファイル: RandomRoadUsers.cs プロジェクト: fabestine1/MyThing
        /// <summary>
        /// Nieuwe roaduser spawnen
        /// </summary>
        public void SpawnRoadUser()
        {
            RoadUser newRoadUser    = null;
            int      totalRoadusers = 0;

            foreach (IntersectionControl ic in Intersections)
            {
                totalRoadusers += ic.RoadUsers.Count;
            }

            IntersectionControl intersection = Intersections[random.Next(6)];

            if (totalRoadusers < 300)
            {
                if (intersection.IntersectionType == IntersectionType.TYPE_1)
                {
                    switch (random.Next(4))
                    {
                    case 0:
                        //south inbound left pedestrian
                        newRoadUser = new Pedestrian(new Point(130, 405), 1);
                        newRoadUser.FaceTo(new Point(130, 0));
                        break;

                    case 1:
                        //south inbound left road
                        newRoadUser = pickRandomCar(216, 418);
                        newRoadUser.FaceTo(new Point(216, 0));
                        break;

                    case 2:
                        //south inbound right road
                        newRoadUser = pickRandomCar(244, 418);
                        newRoadUser.FaceTo(new Point(244, 0));
                        break;

                    case 3:
                        //south inbound right pedestrian
                        newRoadUser = new Pedestrian(new Point(266, 405), 1);
                        newRoadUser.FaceTo(new Point(266, 0));
                        break;
                    }
                }
                else if (intersection.IntersectionType == IntersectionType.TYPE_2)
                {
                    switch (random.Next(8))
                    {
                    case 0:
                        //north inbound left pedestrian
                        newRoadUser = new Pedestrian(new Point(266, -5), 1);
                        newRoadUser.FaceTo(new Point(266, 400));
                        break;

                    case 1:
                        //north inbound right lane
                        newRoadUser = pickRandomCar(156, -18);
                        newRoadUser.FaceTo(new Point(156, 400));
                        break;

                    case 2:
                        //north inbound left lane
                        newRoadUser = pickRandomCar(186, -18);
                        newRoadUser.FaceTo(new Point(186, 400));
                        break;

                    case 3:
                        //north inbound right pedestrian
                        newRoadUser = new Pedestrian(new Point(130, -5), 1);
                        newRoadUser.FaceTo(new Point(130, 400));
                        break;

                    case 4:
                        //west inbound left pedestrian
                        newRoadUser = new Pedestrian(new Point(-5, 130), 1);
                        newRoadUser.FaceTo(new Point(400, 130));
                        break;

                    case 5:
                        //west inbound left lane
                        newRoadUser = pickRandomCar(-18, 216);
                        newRoadUser.FaceTo(new Point(400, 216));
                        break;

                    case 6:
                        //west inbound right lane
                        newRoadUser = pickRandomCar(-18, 244);
                        newRoadUser.FaceTo(new Point(400, 244));
                        break;

                    case 7:
                        //west inbound right pedestrian
                        newRoadUser = new Pedestrian(new Point(-5, 266), 1);
                        newRoadUser.FaceTo(new Point(400, 266));
                        break;
                    }
                }
                else if (intersection.IntersectionType == IntersectionType.TYPE_3)
                {
                    switch (random.Next(8))
                    {
                    case 0:
                        //south inbound left pedestrian
                        newRoadUser = new Pedestrian(new Point(130, 405), 1);
                        newRoadUser.FaceTo(new Point(130, 0));
                        break;

                    case 1:
                        //south inbound left lane
                        newRoadUser = pickRandomCar(216, 418);
                        newRoadUser.FaceTo(new Point(216, 0));
                        break;

                    case 2:
                        //south inbound right lane
                        newRoadUser = pickRandomCar(244, 418);
                        newRoadUser.FaceTo(new Point(244, 0));
                        break;

                    case 3:
                        //south inbound right pedestrian
                        newRoadUser = new Pedestrian(new Point(266, 405), 1);
                        newRoadUser.FaceTo(new Point(266, 0));
                        break;

                    case 4:
                        //west inbound left pedestrian
                        newRoadUser = new Pedestrian(new Point(-5, 130), 1);
                        newRoadUser.FaceTo(new Point(400, 130));
                        break;

                    case 5:
                        //west inbound left lane
                        newRoadUser = pickRandomCar(-18, 216);
                        newRoadUser.FaceTo(new Point(400, 216));
                        break;

                    case 6:
                        //west inbound right lane
                        newRoadUser = pickRandomCar(-18, 244);
                        newRoadUser.FaceTo(new Point(400, 244));
                        break;

                    case 7:
                        //west inbound right pedestrian
                        newRoadUser = new Pedestrian(new Point(-5, 266), 1);
                        newRoadUser.FaceTo(new Point(400, 266));
                        break;
                    }
                }
                else if (intersection.IntersectionType == IntersectionType.TYPE_4)
                {
                    switch (random.Next(8))
                    {
                    case 0:
                        //south inbound left pedestrian
                        newRoadUser = new Pedestrian(new Point(130, 405), 1);
                        newRoadUser.FaceTo(new Point(130, 0));
                        break;

                    case 1:
                        //south inbound left lane
                        newRoadUser = pickRandomCar(216, 418);
                        newRoadUser.FaceTo(new Point(216, 0));
                        break;

                    case 2:
                        //south inbound right lane
                        newRoadUser = pickRandomCar(244, 418);
                        newRoadUser.FaceTo(new Point(244, 0));
                        break;

                    case 3:
                        //south inbound right pedestrian
                        newRoadUser = new Pedestrian(new Point(266, 405), 1);
                        newRoadUser.FaceTo(new Point(266, 0));
                        break;

                    case 4:
                        //east inbound left pedestrian
                        newRoadUser = new Pedestrian(new Point(405, 130), 1);
                        newRoadUser.FaceTo(new Point(0, 130));
                        break;

                    case 5:
                        //east inbound right lane
                        newRoadUser = pickRandomCar(418, 156);
                        newRoadUser.FaceTo(new Point(0, 156));
                        break;

                    case 6:
                        //east inbound left lane
                        newRoadUser = pickRandomCar(418, 186);
                        newRoadUser.FaceTo(new Point(0, 186));
                        break;

                    case 7:
                        //east inbound right pedestrian
                        newRoadUser = new Pedestrian(new Point(405, 266), 1);
                        newRoadUser.FaceTo(new Point(0, 266));
                        break;
                    }
                }
                else if (intersection.IntersectionType == IntersectionType.TYPE_5)
                {
                    switch (random.Next(4))
                    {
                    case 0:
                        //north inbound left pedestrian
                        newRoadUser = new Pedestrian(new Point(130, -5), 1);
                        newRoadUser.FaceTo(new Point(130, 400));
                        break;

                    case 1:
                        //north inbound right lane
                        newRoadUser = pickRandomCar(156, -18);
                        newRoadUser.FaceTo(new Point(156, 400));
                        break;

                    case 2:
                        //north inbound left lane
                        newRoadUser = pickRandomCar(186, -18);
                        newRoadUser.FaceTo(new Point(186, 400));
                        break;

                    case 3:
                        //north inbound right pedestrian
                        newRoadUser = new Pedestrian(new Point(266, -5), 1);
                        newRoadUser.FaceTo(new Point(266, 400));
                        break;
                    }
                }
                else if (intersection.IntersectionType == IntersectionType.TYPE_RAILWAY)
                {
                    switch (random.Next(4))
                    {
                    case 0:
                        //east inbound left pedestrian
                        newRoadUser = new Pedestrian(new Point(405, 130), 1);
                        newRoadUser.FaceTo(new Point(0, 130));
                        break;

                    case 1:
                        //east inbound right lane
                        newRoadUser = pickRandomCar(418, 156);
                        newRoadUser.FaceTo(new Point(0, 156));
                        break;

                    case 2:
                        //east inbound left lane
                        newRoadUser = pickRandomCar(418, 186);
                        newRoadUser.FaceTo(new Point(0, 186));
                        break;

                    case 3:
                        //east inbound right pedestrian
                        newRoadUser = new Pedestrian(new Point(405, 266), 1);
                        newRoadUser.FaceTo(new Point(0, 266));
                        break;
                    }
                }

                if (newRoadUser != null)
                {
                    intersection.AddRoadUser(newRoadUser);
                    UpdateStats(newRoadUser, intersection);
                }
            }
        }