private void modifySetDefaultSpeeds_Click(object sender, EventArgs e)
        {
            try
            {
                double defMin = double.Parse(this.modifyDefaultMinimumSpeedTextBox.Text);
                double defMax = double.Parse(this.modifyDefaultMaximumSpeedTextBox.Text);

                this.Mission.SpeedLimits = new List <ArbiterSpeedLimit>();

                foreach (ArbiterSegment asg in this.RoadNetwork.ArbiterSegments.Values)
                {
                    ArbiterSpeedLimit asl = new ArbiterSpeedLimit();
                    asl.MinimumSpeed = defMin;
                    asl.MaximumSpeed = defMax;
                    asl.Area         = asg.SegmentId;
                    this.Mission.SpeedLimits.Add(asl);
                }

                foreach (ArbiterZone az in this.RoadNetwork.ArbiterZones.Values)
                {
                    ArbiterSpeedLimit asl = new ArbiterSpeedLimit();
                    asl.MinimumSpeed = defMin;
                    asl.MaximumSpeed = defMax;
                    asl.Area         = az.ZoneId;
                    this.Mission.SpeedLimits.Add(asl);
                }

                this.PopulateModifyTab();
            }
            catch (Exception ex)
            {
                EditorOutput.WriteLine(ex.ToString());
            }
        }
        private void setAreaSpeedButton_Click(object sender, EventArgs e)
        {
            try
            {
                if (this.selectAreaComboBox.SelectedIndex >= 0 &&
                    this.minAreaSpeedTextBox.Text != null && this.minAreaSpeedTextBox.Text != "" &&
                    this.maxAreaSpeedTextBox.Text != null && this.maxAreaSpeedTextBox.Text != "")
                {
                    string id = (string)this.selectAreaComboBox.Items[this.selectAreaComboBox.SelectedIndex];

                    if (this.CreateMissionNonDefaultSpeeds.ContainsKey(id))
                    {
                        this.CreateMissionNonDefaultSpeeds[id].MaximumSpeed = double.Parse(this.maxAreaSpeedTextBox.Text);
                        this.CreateMissionNonDefaultSpeeds[id].MinimumSpeed = double.Parse(this.minAreaSpeedTextBox.Text);
                    }
                    else
                    {
                        ArbiterSpeedLimit asl = new ArbiterSpeedLimit();
                        asl.MaximumSpeed = double.Parse(this.maxAreaSpeedTextBox.Text);
                        asl.MinimumSpeed = double.Parse(this.minAreaSpeedTextBox.Text);
                        this.CreateMissionNonDefaultSpeeds.Add(id, asl);
                    }
                }
            }
            catch (Exception ex)
            {
                EditorOutput.WriteLine(ex.ToString());
            }
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Generates mission
        /// </summary>
        /// <param name="mdf"></param>
        /// <returns></returns>
        public ArbiterMissionDescription GenerateMission(IMdf mdf, ArbiterRoadNetwork arn)
        {
            Queue <ArbiterCheckpoint> checks = new Queue <ArbiterCheckpoint>();
            List <ArbiterSpeedLimit>  speeds = new List <ArbiterSpeedLimit>();

            // checkpoints
            foreach (string s in mdf.CheckpointOrder)
            {
                int num = int.Parse(s);
                checks.Enqueue(new ArbiterCheckpoint(num, arn.Checkpoints[num].AreaSubtypeWaypointId));
            }

            // speeds
            foreach (SpeedLimit sl in mdf.SpeedLimits)
            {
                ArbiterSpeedLimit asl = new ArbiterSpeedLimit();
                asl.MaximumSpeed = sl.MaximumVelocity * 0.44704;
                asl.MinimumSpeed = sl.MinimumVelocity * 0.44704;
                asl.Traveled     = false;

                ArbiterSegmentId asi = new ArbiterSegmentId(int.Parse(sl.SegmentID));
                ArbiterZoneId    azi = new ArbiterZoneId(int.Parse(sl.SegmentID));

                if (arn.ArbiterZones.ContainsKey(azi))
                {
                    asl.Area = azi;
                }
                else if (arn.ArbiterSegments.ContainsKey(asi))
                {
                    asl.Area = asi;
                }
                else
                {
                    throw new Exception("Unknown area id: " + sl.SegmentID);
                }

                speeds.Add(asl);
            }

            // return
            return(new ArbiterMissionDescription(checks, speeds));
        }