예제 #1
0
        // Calculates the total power level a driver has
        public static int GetPowerDriver(SeasonDriver driver, int modifiers, string trackspec)
        {
            if (driver is null || driver.SeasonTeam is null)
            {
                return(0);
            }

            int power = 0;

            power += driver.Skill;
            power += driver.SeasonTeam.Chassis;
            power += driver.SeasonTeam.Engine.Power;
            power += ((((int)driver.DriverStatus) * -2) + 2);
            power += modifiers;
            power += GetChassisBonus(CreateTeamSpecDictionary(driver.SeasonTeam), trackspec);
            return(power);
        }
예제 #2
0
        // Calculate a score generated in qualifying
        public int GetQualifyingResult(SeasonDriver driver, int qualyRNG, Track track, int qualypace)
        {
            if (driver is null || track is null)
            {
                throw new NullReferenceException();
            }

            var result = 0;

            result += driver.Skill;
            result += qualypace;
            result += driver.SeasonTeam.Chassis;
            result += driver.SeasonTeam.Engine.Power;
            result += Helpers.GetChassisBonus(Helpers.CreateTeamSpecDictionary(driver.SeasonTeam), track.Specification.ToString());
            result += _rng.Next(0, qualyRNG + 1);
            return(result);
        }
예제 #3
0
        public async Task <IActionResult> AddDriver(int seasonID, int globalDriverID)
        {
            var season = await Context.Seasons
                         .Include(s => s.Teams)
                         .SingleOrDefaultAsync(s => s.SeasonId == seasonID);

            var globalDriver = await Context.Drivers.SingleOrDefaultAsync(d => d.Id == globalDriverID);

            if (season is null || globalDriver is null)
            {
                return(NotFound());
            }

            var teams = season.Teams
                        .Select(t => new { t.SeasonTeamId, t.Name })
                        .ToList();

            ViewBag.teams    = new SelectList(teams, nameof(SeasonTeam.SeasonTeamId), nameof(SeasonTeam.Name));
            ViewBag.seasonId = seasonID;

            var seasonDriver = new SeasonDriver
            {
                Driver = globalDriver,
                Season = season
            };

            // Adds last previous used values from driver as default
            var allSeasonDrivers = await Context.SeasonDrivers.ToListAsync();

            var lastDriver = allSeasonDrivers
                             .LastOrDefault(ld => ld.DriverId == globalDriverID);

            if (lastDriver != null)
            {
                seasonDriver.Skill        = lastDriver.Skill;
                seasonDriver.Reliability  = lastDriver.Reliability;
                seasonDriver.DriverStatus = lastDriver.DriverStatus;
            }

            return(View("AddOrUpdateDriver", seasonDriver));
        }
예제 #4
0
        public async Task <IActionResult> UpdateDriver(int seasonID, int driverID, [Bind] SeasonDriver updatedDriver)
        {
            // Get and validate URL parameter objects.
            var season = await Context.Seasons
                         .Include(s => s.Drivers)
                         .ThenInclude(d => d.Driver)
                         .Include(s => s.Teams)
                         .SingleOrDefaultAsync(s => s.SeasonId == seasonID);

            var driver = season.Drivers
                         .SingleOrDefault(d => d.SeasonDriverId == driverID);

            if (season is null || driver is null || updatedDriver is null)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                driver.SeasonTeamId = updatedDriver.SeasonTeamId;
                driver.Reliability  = updatedDriver.Reliability;
                driver.Skill        = updatedDriver.Skill;
                driver.DriverStatus = updatedDriver.DriverStatus;
                driver.Dropped      = false;
                Context.Update(driver);
                await Context.SaveChangesAsync();

                return(RedirectToAction(nameof(Detail), new { seasonID }));
            }
            else
            {
                var teams = season.Teams
                            .Select(t => new { t.SeasonTeamId, t.Name })
                            .ToList();

                ViewBag.teams = new SelectList(teams, nameof(SeasonTeam.SeasonTeamId), nameof(SeasonTeam.Name));
                return(View("AddOrUpdateDriver", driver));
            }
        }
예제 #5
0
        public async Task <IActionResult> AddDriver(int seasonID, int globalDriverID, [Bind] SeasonDriver seasonDriver)
        {
            // Get and validate URL parameter objects.
            var season = await Context.Seasons
                         .Include(s => s.Drivers)
                         .Include(s => s.Teams)
                         .SingleOrDefaultAsync(s => s.SeasonId == seasonID);

            var globalDriver = await Context.Drivers.SingleOrDefaultAsync(d => d.Id == globalDriverID);

            if (season is null || globalDriver is null || seasonDriver is null)
            {
                return(NotFound());
            }

            if (season.Drivers.Select(d => d.DriverId).Contains(seasonDriver.DriverId))
            {
                return(UnprocessableEntity());
            }

            if (ModelState.IsValid)
            {
                // Set the Season and global Driver again as these are not bound in the view.
                seasonDriver.SeasonId = seasonID;
                seasonDriver.DriverId = globalDriverID;

                // Persist the new SeasonDriver and return to AddDrivers page.
                await Context.AddAsync(seasonDriver);

                await Context.SaveChangesAsync();

                return(RedirectToAction(nameof(AddDrivers), new { seasonID }));
            }
            else
            {
                var teams = season.Teams
                            .Select(t => new { t.SeasonTeamId, t.Name })
                            .ToList();

                ViewBag.teams = new SelectList(teams, nameof(SeasonTeam.SeasonTeamId), nameof(SeasonTeam.Name));
                return(View("AddOrUpdateDriver", seasonDriver));
            }
        }