Ejemplo n.º 1
0
        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);
        }
        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);
        }
Ejemplo n.º 4
0
        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);
        }