public Car(Telemetry telemetry, int carIdx) { this.telemetry = telemetry; this.carIdx = carIdx; this.driver = telemetry.SessionData.DriverInfo.Drivers.FirstOrDefault(d => d.CarIdx == carIdx); this.Details = new CarDetails(telemetry, carIdx); }
public Car(Telemetry telemetry, int carIdx) { this.telemetry = telemetry; this.carIdx = carIdx; this.driver = telemetry.SessionData.DriverInfo.CompetingDrivers[carIdx]; this.Details = new CarDetails(telemetry, carIdx); }
public void Direct(DataSample data) { if (isWatchingRandomDriver) return; isWatchingRandomDriver = true; finishWatchingRandomDriverAt = data.Telemetry.SessionTimeSpan + stickyTime; camera = cameraControl.FindACamera(new[] { CameraAngle.LookingInfrontOfCar, CameraAngle.LookingAtCar, CameraAngle.LookingAtTrack }); car = FindADriver(data); TraceInfo.WriteLine("{0} Changing camera to random driver: {1}; camera: {2}", data.Telemetry.SessionTimeSpan, car.UserName, camera.CameraName); cameraControl.CameraOnDriver((short)car.CarNumberRaw, camera.CameraNumber); }
public BattleState(BattlePosition state, CarDetails driver) { this.State = state; this.Driver = driver; }
static CarDetails ChangeCarForCamera(DataSample data, CarDetails driver) { if (driver == null) return null; var car = driver.Car(data); var otherCar = data.Telemetry.Cars.FirstOrDefault(c => c.Position == car.Position - 1); if( otherCar == null) return null; return otherCar.Details; }
void SwitchToBattle(DataSample data, CarDetails newFollower, bool establishingShot = false) { if (establishingShot) TraceInfo.WriteLine("{0} New Battle started - Searching for a LookingAtCar camera", data.Telemetry.SessionTimeSpan); var cameraTypes = establishingShot ? new[] { CameraAngle.LookingAtCar } : new[] { CameraAngle.LookingInfrontOfCar, CameraAngle.LookingBehindCar, CameraAngle.LookingAtCar }; var newFollowerPosition = newFollower.Car(data).Position; battleLeader = data.Telemetry.Cars.First(c => c.Position == newFollowerPosition - 1).Details; battleFollower = newFollower; car = newFollower; camera = cameraControl.FindACamera(cameraTypes, adjustedCamera, 2); if (establishingShot) adjustedCamera = camera; else adjustedCamera = null; if (camera.CameraAngle == CameraAngle.LookingBehindCar) { TraceInfo.WriteLine("{0} Changing to forward car, with reverse camera", data.Telemetry.SessionTimeSpan); car = battleLeader; } TraceInfo.WriteLine("{0} Changing camera to driver: {1}; camera: {2}; within {3}", data.Telemetry.SessionTimeSpan, car.UserName, camera.CameraName, battleGap); cameraControl.CameraOnDriver(car.CarNumberRaw, camera.CameraNumber); }
void UpdateBattleCamera(DataSample data) { if (data.Telemetry.SessionTimeSpan <= cameraChangeTime) return; cameraChangeTime = data.Telemetry.SessionTimeSpan + this.battleCameraChangePeriod; var otherCar = ChangeCarForCamera(data, battleFollower); var cameraSet = otherCar == null ? new [] {CameraAngle.LookingInfrontOfCar, CameraAngle.LookingAtCar} : new [] { CameraAngle.LookingInfrontOfCar, CameraAngle.LookingBehindCar, CameraAngle.LookingAtCar }; camera = cameraControl.FindACamera(cameraSet, adjustedCamera, 2); adjustedCamera = null; if (camera.CameraAngle == CameraAngle.LookingBehindCar) { TraceInfo.WriteLine("{0} Changing to forward car, with reverse camera", data.Telemetry.SessionTimeSpan); car = otherCar; } else { car = battleFollower; } TraceInfo.WriteLine("{0} Changing camera to driver: {1}; camera: {2}", data.Telemetry.SessionTimeSpan, car.UserName, camera.CameraName); cameraControl.CameraOnDriver(car.CarNumberRaw, camera.CameraNumber); }
internal static bool IsInBattle(DataSample data, TimeSpan battleGap, CarDetails follower, CarDetails leader) { var leaderCar = leader.Car(data); var followerCar = follower.Car(data); if (Settings.Default.FocusOnPreferedDriver) { if (!(preferredCarIdxs.Contains(leaderCar.CarIdx) || preferredCarIdxs.Contains(followerCar.CarIdx))) { Trace.WriteLine("Current race battle does not include drivers within preferred list"); return false; } } if (leaderCar.Position == followerCar.Position + 1) return false; var timeGap = (leaderCar.TotalDistance - followerCar.TotalDistance) * data.Telemetry.Session.ResultsAverageLapTime; return timeGap < battleGap.TotalSeconds; }
private static int? GetPositionFor(DataSample data, CarDetails carDetails) { var car = carDetails.Car(data); if (data.Telemetry.RaceDistance > 1.10) return car.Position; var session = data.SessionData.SessionInfo.Sessions.Qualifying(); if (session == null || session.ResultsPositions == null) return null; var qualifyingResult = session.ResultsPositions.FirstOrDefault(p => p.CarIdx == car.CarIdx); if (qualifyingResult == null) return null; return (int)qualifyingResult.Position; }
void SwitchToBattle(DataSample data, CarDetails newFollower) { var newFollowerPosition = newFollower.Car(data).Position; battleLeader = data.Telemetry.Cars.First(c => c.Position == newFollowerPosition - 1).Details; battleFollower = newFollower; car = newFollower; //.Car(data).Details; camera = cameraControl.FindACamera(CameraAngle.LookingInfrontOfCar, CameraAngle.LookingBehindCar, CameraAngle.LookingAtCar); if (camera.CameraAngle == CameraAngle.LookingBehindCar) { TraceInfo.WriteLine("{0} Changing to forward car, with reverse camera", data.Telemetry.SessionTimeSpan); car = battleLeader; } TraceInfo.WriteLine("{0} Changing camera to driver: {1}; camera: {2}; within {3}", data.Telemetry.SessionTimeSpan, car.UserName, camera.CameraName, battleGap); cameraControl.CameraOnDriver(car.CarNumberRaw, camera.CameraNumber); }