// 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); }
// 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); }
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)); }
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)); } }
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)); } }