public EngineForm(Engine engine = null) { // Create form controls InitializeComponent(); headerPanel.BackColor = Color.FromArgb(51, 53, 53); chart1.ChartAreas[0].AxisX.Interval = 300; NewEngine = engine == null; Engine = engine ?? new Engine(); Sorter = new ListViewColumnSorter(truckListView) { Order = SortOrder.Ascending }; // Setup metrics if (Program.Config.UnitSystem == UnitSystem.Metric) { labelTorque.Text = "Newton Metres:"; labelPeakTorque.Text = "Peak N·m RPM:"; chart1.ChartAreas[0].AxisY.Title = "Newton Metres"; maxTorqueLabel.Text = "Max Newton Metres:"; } // Add each sound to the lists using (AppDatabase db = new AppDatabase()) { foreach (EngineSeries model in db.EngineSeries.OrderBy(x => x.ToString())) { engineModelBox.Items.Add(model); if (!NewEngine && model.Id == Engine.SeriesId) { engineModelBox.SelectedIndex = engineModelBox.Items.Count - 1; } } if (!NewEngine) { Ratios.AddRange(engine.TorqueRatios); } else { Ratios.Add(new TorqueRatio() { Ratio = 0, RpmLevel = 300 }); Ratios.Add(new TorqueRatio() { Ratio = 0.5, RpmLevel = 440 }); Ratios.Add(new TorqueRatio() { Ratio = 1, RpmLevel = 1100 }); Ratios.Add(new TorqueRatio() { Ratio = 1, RpmLevel = 1400 }); Ratios.Add(new TorqueRatio() { Ratio = 0.77, RpmLevel = 1900 }); Ratios.Add(new TorqueRatio() { Ratio = 0.5, RpmLevel = 2400 }); Ratios.Add(new TorqueRatio() { Ratio = 0, RpmLevel = 2600 }); } // Grab a list of trucks that use this engine List <int> trucks = new List <int>(); if (!NewEngine) { trucks.AddRange(engine.ItemOf.Select(x => x.TruckId)); } // Add trucks to the truck list foreach (var truck in db.Trucks) { ListViewItem item = new ListViewItem(truck.Name); item.Tag = truck.Id; item.Checked = trucks.Contains(truck.Id); truckListView.Items.Add(item); } } // Are we editing an engine? if (!NewEngine) { // Set form values unitNameBox.Text = engine.UnitName; engineNameBox.Text = engine.Name; unlockBox.Value = engine.Unlock; priceBox.Value = engine.Price; horsepowerBox.Value = engine.Horsepower; peakRPMBox.Value = engine.PeakRpm; idleRpmBox.Value = engine.IdleRpm; rpmLimitBox.Value = engine.RpmLimit; neutralRpmBox.Value = engine.RpmLimitNeutral; brakeStrengthBox.Value = engine.BrakeStrength; brakePositionsBox.Value = engine.BrakePositions; automaticDSCheckBox.Checked = engine.BrakeDownshift; rpmRangeBox1.Value = engine.MinRpmRange_LowGear; rpmRangeBox2.Value = engine.MaxRpmRange_LowGear; rpmRangeBox3.Value = engine.MinRpmRange_HighGear; rpmRangeBox4.Value = engine.MaxRpmRange_HighGear; rpmRangeBox5.Value = engine.LowRpmRange_PowerBoost; rpmRangeBox6.Value = engine.HighRpmRange_PowerBoost; fileDefaultsTextBox.Lines = engine.Defaults; fileOverridesTextBox.Lines = engine.Overrides; fileCommentTextBox.Lines = engine.Comment; filenameTextBox.Text = engine.FileName; conflictsTextBox.Lines = engine.Conflicts; engineBrakeLow.Value = engine.LowRpmRange_EngineBrake; engineBrakeHigh.Value = engine.HighRpmRange_EngineBrake; resistanceBox.Value = engine.ResistanceTorque; consumptionBox.Value = engine.FuelConsumption * 100; adBlueConsumption.Value = engine.AdblueConsumption; adBlueNoPowerLimit.Value = engine.NoAdbluePowerLimit; // Set torque last, to update the chart torqueBox.Value = (Program.Config.UnitSystem == UnitSystem.Imperial) ? engine.Torque : engine.NewtonMetres; } // Fill torque ratios PopulateTorqueRatios(); // Fill Conflicts PopulateTransmissions(); if (NewEngine) { // Force change to update graph torqueBox.Value = (Program.Config.UnitSystem == UnitSystem.Imperial) ? 1650 : Metrics.TorqueToNewtonMeters(1650m); } }
public TransmissionForm(Transmission transmission = null) { // Create form controls InitializeComponent(); headerPanel.BackColor = Color.FromArgb(51, 53, 53); chart1.ChartAreas[0].AxisX.Interval = 10; chart1.MouseWheel += Chart1_MouseWheel; NewTransmission = transmission == null; Transmission = transmission ?? new Transmission(); Sorter = new ListViewColumnSorter(truckListView) { Order = SortOrder.Ascending }; // Setup metrics if (Program.Config.UnitSystem == UnitSystem.Metric) { chart1.ChartAreas[0].AxisX.Title = "Speed (Kph)"; conflictListView.Columns[2].Text = "N·m"; suitsListView.Columns[2].Text = "N·m"; } // Add each sound to the lists using (AppDatabase db = new AppDatabase()) { foreach (var model in db.TransmissionSeries.OrderBy(x => x.ToString())) { seriesModelBox.Items.Add(model); if (!NewTransmission && model.Id == Transmission.SeriesId) { seriesModelBox.SelectedIndex = seriesModelBox.Items.Count - 1; } } if (!NewTransmission) { var gears = transmission.Gears.ToList(); ForwardGears.AddRange(gears.Where(x => !x.IsReverse)); ReverseGears.AddRange(gears.Where(x => x.IsReverse)); } else { ReverseGears.Add(new TransmissionGear() { Ratio = -5.55m }); ForwardGears.AddRange(new[] { new TransmissionGear() { Ratio = 4.7m }, new TransmissionGear() { Ratio = 2.21m }, new TransmissionGear() { Ratio = 1.53m }, new TransmissionGear() { Ratio = 1.0m }, new TransmissionGear() { Ratio = 0.76m }, new TransmissionGear() { Ratio = 0.67m } }); } // Grab a list of trucks that use this transmission List <int> trucks = new List <int>(); if (!NewTransmission) { trucks.AddRange(transmission.ItemOf.Select(x => x.TruckId)); } // Add trucks to the truck list foreach (var truck in db.Trucks) { ListViewItem item = new ListViewItem(truck.Name); item.Tag = truck.Id; item.Checked = trucks.Contains(truck.Id); truckListView.Items.Add(item); } } // Are we editing an engine? if (!NewTransmission) { // Set form values unitNameBox.Text = transmission.UnitName; transNameBox.Text = transmission.Name; unlockBox.Value = transmission.Unlock; priceBox.Value = transmission.Price; diffRatio.Value = transmission.DifferentialRatio; if (transmission.StallTorqueRatio > 0m) { stallRatio.Value = transmission.StallTorqueRatio; hasTorqueConverter.Checked = true; } if (transmission.Retarder > 0) { retardPositions.Value = transmission.Retarder; hasRetarder.Checked = true; } fileDefaultsTextBox.Lines = transmission.Defaults; fileCommentTextBox.Lines = transmission.Comment; filenameTextBox.Text = transmission.FileName; conflictsTextBox.Lines = transmission.Conflicts; suitablesTextBox.Lines = transmission.SuitableFor; } // Fill torque ratios PopulateGears(); PopulateEngines(); }