Beispiel #1
0
        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);
        }
Beispiel #2
0
        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() + "%";
                }
            }
        }
Beispiel #3
0
        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);
        }
Beispiel #4
0
        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();
        }
Beispiel #5
0
        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);
        }
Beispiel #6
0
        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);
        }
Beispiel #7
0
        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);
        }
Beispiel #9
0
        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);
        }
Beispiel #10
0
 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));
 }
Beispiel #11
0
        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);
        }