Esempio n. 1
0
        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);
            }
        }
Esempio n. 2
0
        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();
        }