public ClearenceDeliveryWindow() { InitializeComponent(); simulation = new TrafficSim(); Title = $"{AirportConfig.AirportIcao} - Clearence"; airportIcaoLbl.Content = $"Airport: {AirportConfig.AirportIcao}"; controllerPositionLbl.Content = $"Position: Clearence"; frequency1Lbl.Content = $"{AirportConfig.AirportIcao} {AirportConfig.Frequencies[0].ShortName}:"; frequency2Lbl.Content = $"{AirportConfig.AirportIcao} {AirportConfig.Frequencies[1].ShortName}:"; frequency3Lbl.Content = $"{AirportConfig.AirportIcao} {AirportConfig.Frequencies[2].ShortName}:"; frequency4Lbl.Content = $"{AirportConfig.AirportIcao} {AirportConfig.Frequencies[3].ShortName}:"; frequency5Lbl.Content = $"{AirportConfig.AirportIcao} {AirportConfig.Frequencies[4].ShortName}:"; frequency6Lbl.Content = $"{AirportConfig.AirportIcao} {AirportConfig.Frequencies[5].ShortName}:"; frequency1ValueLbl.Content = $"{AirportConfig.Frequencies[0].Value}"; frequency2ValueLbl.Content = $"{AirportConfig.Frequencies[1].Value}"; frequency3ValueLbl.Content = $"{AirportConfig.Frequencies[2].Value}"; frequency4ValueLbl.Content = $"{AirportConfig.Frequencies[3].Value}"; frequency5ValueLbl.Content = $"{AirportConfig.Frequencies[4].Value}"; frequency6ValueLbl.Content = $"{AirportConfig.Frequencies[5].Value}"; simulation.Run(); var timer = new Timer((e) => { trafficsList = simulation.trafficList; }, null, TimeSpan.Zero, TimeSpan.FromSeconds(5)); }
public TrafficLight(TrafficSim sim, RoadConnectionGroup[] groups) { foreach (var group in groups) { TrafficGroups.Add(new TrafficGroupState(group)); foreach (var connection in group.Connections) { Road internalRoad = new Road(connection.From.RoadEnd, connection.To.RoadStart); TrafficGroups.Last().AddInternalRoad(internalRoad); sim.AddRoad(internalRoad); connection.From.SetIntersection(this); connection.From.AddOutgoingRoad(internalRoad); internalRoad.AddOutgoingRoad(connection.To); } } }
public override void Tick(TrafficSim sim) { var group = TrafficGroups[TrafficStateIndex]; TrafficStateCounter++; if (TrafficStateCounter == STATE_TICK_DURATION) { TrafficStateCounter = 0; TrafficGroupStateChangeIndex++; } group.State = StateOrder[TrafficGroupStateChangeIndex]; if (TrafficGroupStateChangeIndex == StateOrder.Length - 1) { TrafficGroupStateChangeIndex = 0; TrafficStateIndex = (TrafficStateIndex + 1) % TrafficGroups.Count; } }
public override void Tick(TrafficSim sim) { //if the car has driven to its destination then remove the car //from the simulation if (NextRoad == null) { sim.RemoveVehicle(this); return; } Vector2 roadDir = Vector2.Normalize(CurrentRoad.RoadEnd - CurrentRoad.RoadStart); Vector2 newCarPos = Pos + roadDir * MaxVelocity; //if car is still on the same road then just move the car if (CurrentRoad.PosWithinRoad(newCarPos)) { Pos = newCarPos; return; } //car position puts it at the next road so ask the //intersection if the car can be moved to the next road if (!CurrentRoad.CanPassIntersection(NextRoad)) { Pos = CurrentRoad.RoadEnd; return; } //move car to the next road CurrentRoad.RemoveVehicle(this); CurrentRoad = NextRoad; CurrentRoad.AddVehicle(this); //car moved to th next road so remove it from the path Path.RemoveAt(0); }
public abstract void Tick(TrafficSim sim);
private void simulateTrafficToolStripMenuItem_Click(object sender, EventArgs e) { var trafficSim = new TrafficSim(); trafficSim.Show(this); }