Classes.Driver ReadDriverFromForm() { Classes.Driver driver = new Classes.Driver(); driver.Age = int.Parse(txtDriverAge.Text); driver.Aggressiveness = int.Parse(txtDriverAgg.Text); driver.Charisma = int.Parse(txtDriverCharisma.Text); driver.Concentration = int.Parse(txtDriverConcentration.Text); driver.Energy = int.Parse(txtDriverEnergy.Text); driver.Experience = int.Parse(txtDriverExperience.Text); driver.Motivation = int.Parse(txtDriverMotivation.Text); driver.RacesLeft = int.Parse(txtDriverRacesLeft.Text); driver.Reputation = int.Parse(txtDriverReputation.Text); decimal salary = 0; if (decimal.TryParse(txtDriverSalary.Text, out salary)) { driver.Salary = (int)salary;; } else { MessageBox.Show("Could not parse {0}", txtDriverSalary.Text); } driver.Stamina = int.Parse(txtDriverStamina.Text); driver.Talent = int.Parse(txtDriverTalent.Text); driver.TechnicalInsight = int.Parse(txtDriverTI.Text); driver.Weight = int.Parse(txtDriverWeight.Text); driver.Id = 1; return(driver); }
private void txtRaceLaps_TextChanged(object sender, EventArgs e) { if (finishedLoading) { int customLaps; if (!int.TryParse(((TextBox)sender).Text, out customLaps)) { customLaps = 0; } int fuelConsumption = 0; int tyreWear = 0; //Get Track details int distanceKm = int.Parse(dgvRaceTrack.Rows[0].Cells["DistanceKm"].Value.ToString()); int trackLaps = int.Parse(dgvRaceTrack.Rows[0].Cells["Laps"].Value.ToString()); float fuelConstant = float.Parse(dgvRaceTrack.Rows[0].Cells["Fuel Constant"].Value.ToString()); float lapDistance = distanceKm / trackLaps; Classes.Driver driver = ReadDriverFromForm(); Classes.Car car = ReadCarFromForm(); Classes.RaceTab rt = ReadRaceTabFromForm(); //If dry lap, perhaps adding a bool argument for rain in future fuelConsumption = (int)Classes.Fuel.ConsumptionDryLap(lapDistance, fuelConstant, (byte)(car.EngineLevel), (byte)car.ElectronicsLevel, (byte)driver.Experience, (byte)driver.TechnicalInsight, (byte)driver.Aggressiveness); int stintDistance = (int)(customLaps * lapDistance); float tyreDistance = TyreDistance( DB.Track.ReadTrackFromDB(rt.SeasonTrackIndex), ReadTyreFromSkillTab(), driver, car, rt); tyreWear = (int)(stintDistance / tyreDistance * 100); if (((TextBox)sender).Name == "txtRaceLaps1") { lblRaceFuel1.Text = (fuelConsumption * customLaps).ToString(); lblRaceTyre1.Text = tyreWear.ToString() + "%"; } else { lblRaceFuel2.Text = (fuelConsumption * customLaps).ToString(); lblRaceTyre2.Text = tyreWear.ToString() + "%"; } } }
float GetFuelPerLap(Classes.Track track, Classes.Car car, Classes.Driver driver, float lapDistance) { double fuelPerLap = lapDistance / ( track.FuelConstant + car.EngineLevel * 0.028 + car.ElectronicsLevel * 0.01 + driver.Experience * 0.00025 + driver.TechnicalInsight * 0.0005 - driver.Aggressiveness * 0.00015 ); //for dry races return((float)fuelPerLap); }
void CalculateDriverOA(Classes.Driver driver) { int OA = (int)Math.Round(driver.Concentration / 6 + driver.Talent / 4 + driver.Aggressiveness / 6.86 + driver.Experience / 12 + driver.TechnicalInsight / 8 + driver.Stamina / 6.86 + driver.Charisma / 12 + driver.Motivation / 12 - driver.Weight / 12 , 0); lblDriverOA.Text = OA.ToString(); }
float TyreDistance(Classes.Track track, Classes.TyresSupplier tyre, Classes.Driver driver, Classes.Car car, Classes.RaceTab rt) { double tyreDistance = 1 / ( 0.008f + (int)track.TyresWear * 0.0011357f + rt.Temp * 0.000117f + tyre.Durability * -0.0003848391f + rt.Compound * -0.0022681289f + driver.Aggressiveness * 1.98713674683317E-06f + driver.Experience * -1.98047770495874E-06f + car.SuspensionLevel * -0.0001644978f + rt.CT * 2.58125503524434E-05f ); return((float)tyreDistance); }
void SaveSkills()//testing car { //Read values from form Classes.Car car = ReadCarFromForm(); Classes.Driver driver = ReadDriverFromForm(); Classes.TechnicalDirector td = ReadTdFromForm(); Classes.StaffFacilities sf = ReadSfFromForm(); Classes.Weather weather = ReadWeatherFromForm(); int activeTyreCode = GetTyreCodeFromSkillTab(); //Call the Save methods DB.Car.UpdateCarToDb(car); DB.Driver.UpdateDriverToDb(driver); DB.TechnicalDirector.UpdateTdToDb(td); DB.StaffFacilities.UpdateStaffFacilitiesToDb(sf); DB.Weather.UpdateWeatherToDb(weather); DB.Tyres.UpdateTyreToDb(activeTyreCode); }
void InitiateSkillsTab() { Classes.Driver driver = DB.Driver.ReadDriverFromDB(); FillDriver(driver); Classes.Car car = DB.Car.ReadCarFromDB(); FillCar(car); Classes.TechnicalDirector td = DB.TechnicalDirector.ReadTdFromDB(); FillTd(td); Classes.StaffFacilities sf = DB.StaffFacilities.ReadStaffFacilitiesFromDB(); FillStaffFacilities(sf); UpdateStaffAndFacilitiesCost(sf); Classes.Weather w = DB.Weather.ReadWeatherFromDB(); FillWeather(w); int activeTyreSupplierId = DB.ActiveTyreSupplier.GetTyreSupplierId(); Classes.TyresSupplier tyre = DB.Tyres.ReadTyreFromSupplierDB(activeTyreSupplierId); FillActiveTyreSupplier(tyre); }
public static GOrganizer.Classes.Driver GetAverageDriver() { GOrganizer.Classes.Driver driver = new GOrganizer.Classes.Driver(); driver.Age = 25; driver.Aggressiveness = 125; driver.Charisma = 125; driver.Concentration = 125; driver.Energy = 125; driver.Experience = 125; driver.Motivation = 125; driver.RacesLeft = 125; driver.Reputation = 125; driver.Salary = 125; driver.Stamina = 125; driver.Talent = 125; driver.TechnicalInsight = 125; driver.Weight = 80; return(driver); }
void FillDriver(Classes.Driver driver) { //Pass driver to Skills tab txtDriverEnergy.Text = (driver.Energy).ToString(); txtDriverConcentration.Text = (driver.Concentration).ToString(); txtDriverTalent.Text = (driver.Talent).ToString(); txtDriverAgg.Text = (driver.Aggressiveness).ToString(); txtDriverExperience.Text = (driver.Experience).ToString(); txtDriverTI.Text = (driver.TechnicalInsight).ToString(); txtDriverStamina.Text = (driver.Stamina).ToString(); txtDriverCharisma.Text = (driver.Charisma).ToString(); txtDriverMotivation.Text = (driver.Motivation).ToString(); txtDriverWeight.Text = (driver.Weight).ToString(); txtDriverAge.Text = (driver.Age).ToString(); txtDriverSalary.Text = (driver.Salary).ToString(); txtDriverRacesLeft.Text = (driver.RacesLeft).ToString(); txtDriverReputation.Text = (driver.Reputation).ToString(); CalculateDriverOA(driver); }
float TyreDistance(Classes.Track track, Classes.TyresSupplier tyre, Classes.Driver driver, Classes.Car car, Classes.RaceTab rt, int compoundCode) { rt.Compound = compoundCode; return(TyreDistance(track, tyre, driver, car, rt)); }
void FillDgvRacingTimes() { //For Styling int[,] tyreWearArray = new int[5, 5]; //row, col Classes.RaceTab rt = ReadRaceTabFromForm(); int trackId = DB.SeasonTrack.GetTrackId(rt.SeasonTrackIndex + 1); Classes.Track track = DB.Track.ReadTrackFromDB(trackId); int supplierId = DB.ActiveTyreSupplier.GetTyreSupplierId(); Classes.TyresSupplier tyre = DB.Tyres.ReadTyreFromSupplierDB(supplierId); Classes.Car car = finishedLoading ? ReadCarFromForm() : DB.Car.ReadCarFromDB(); Classes.Driver driver = finishedLoading ? ReadDriverFromForm() : DB.Driver.ReadDriverFromDB(); float lapDistance = (float)track.DistanceKm / track.Laps; float totalFuel = GetFuelPerLap(track, car, driver, lapDistance) * track.Laps; float pitStopDriveTime = track.PitStopTime; float baseTime = track.baseTime; float tdc = track.TDCConstant * rt.Temp + tyre.TdcVariable; string[] o = new string[6]; for (int line = 0; line < 7; line++) { switch (line) { case 0: o[0] = "XSoft"; break; case 1: o[0] = "Soft"; break; case 2: o[0] = "Medium"; break; case 3: o[0] = "Hard"; break; case 4: o[0] = "Rain"; break; case 5: o[0] = "Fuel"; break; case 6: o[0] = "Laps/stop"; break; default: o[0] = "Error"; break; } for (int nStops = 0; nStops < 5; nStops++) { float stintDistance = (float)track.DistanceKm / (nStops + 1); if (line < 4) //Race Time { string raceTime = ""; float tyreDistance = TyreDistance(track, tyre, driver, car, rt, line); float tyreWear = stintDistance / tyreDistance * 100; if (tyreDistance > stintDistance) { int fuelPerStint = (int)(totalFuel / (1 + nStops)); raceTime = CalculateTotalRaceTime(nStops, fuelPerStint, track, tdc, tyre.WarmUpDistance, line, rt.Rain, rt.CT).ToString("0"); } tyreWearArray[line, nStops] = (int)tyreWear; o[nStops + 1] = raceTime; } else if (line == 5) //Fuel { int fuelPerStint = (int)(totalFuel / (1 + nStops)); string fuel = string.Format("{0:###.#}", fuelPerStint); o[nStops + 1] = fuel; } else if (line == 6) // Laps / Stint { string laps = string.Format("{0:##.#}", track.Laps / (nStops + 1)); o[nStops + 1] = laps; } } dtRacingTimes.Rows.Add(o); } dgvRacingTimes.DataSource = dtRacingTimes; foreach (DataGridViewColumn col in dgvRacingTimes.Columns) { col.Width = 45; } PaintDgvRacingTimesCells(tyreWearArray); }