示例#1
0
        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);
        }
示例#5
0
 public abstract void Tick(TrafficSim sim);
示例#6
0
        private void simulateTrafficToolStripMenuItem_Click(object sender, EventArgs e)
        {
            var trafficSim = new TrafficSim();

            trafficSim.Show(this);
        }