/// <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); } } }