Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- private void CheckForOvertaking(List<Driver> drivers, StringBuilder sb)
- {
- drivers = drivers.OrderByDescending(d => d.TotalTime).ToList();
- for (int count = 0; count < drivers.Count - 1; count++)
- {
- var firstDriver = drivers[count];
- var secondDriver = drivers[count + 1];
- var timeDifference = Math.Abs(firstDriver.TotalTime - secondDriver.TotalTime);
- if (firstDriver.GetType().Name == "AggressiveDriver" && firstDriver.Car.Tyre.Name == "Ultrasoft" && timeDifference <= 3)
- {
- if (this.Weather == "Foggy")
- {
- firstDriver.FailureReason = "Crashed";
- RemoveFailedDruiver(firstDriver, drivers, lostDrivers);
- }
- else
- {
- ChangeDriversPositions(firstDriver, secondDriver, 3);
- sb.Append(ReturningOvertakingInfo(firstDriver, secondDriver));
- count++;
- }
- }
- else if (firstDriver.GetType().Name == "EnduranceDriver" && firstDriver.Car.Tyre.Name == "Hard" && timeDifference <= 3)
- {
- if (this.Weather == "Rainy")
- {
- firstDriver.FailureReason = "Crashed";
- RemoveFailedDruiver(firstDriver, drivers, lostDrivers);
- }
- else
- {
- ChangeDriversPositions(firstDriver, secondDriver, 3);
- sb.Append(ReturningOvertakingInfo(firstDriver, secondDriver));
- }
- }
- else if (timeDifference <= 2)
- {
- ChangeDriversPositions(firstDriver, secondDriver, 2);
- sb.Append(ReturningOvertakingInfo(firstDriver, secondDriver));
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement