public void Returning_to_pits_does_not_set_previous_lap_as_fastest() { // set outlap var manager = new TelemetryLapManager(); foreach (var packet in TelemetryLapHelper.CreateOutLap().Packets) { manager.ProcessIncomingPacket(packet); } // Add nearly all of a lap var firstLap = TelemetryLapHelper.CreatePopulatedLap(lapNumber: 1f, completeLap: true); for (var i = 0; i < firstLap.Packets.Count - 2; i++) { manager.ProcessIncomingPacket(firstLap.Packets[i]); } Assert.IsNull(manager.FastestLap); var garagePacket = new TelemetryPacket { Lap = 0f, Speed = 0f, LapDistance = -0.001f }; Assert.IsTrue(garagePacket.IsSittingInPits); manager.ProcessIncomingPacket(garagePacket); Assert.IsNull(manager.FastestLap); }
public TelemetryLapManager GetManager() { if (manager == null) { manager = new TelemetryLapManager(); } return(manager); }
public void SetUp() { _manager = new TelemetryLapManager(); foreach (var packet in TelemetryLapHelper.CreateOutLap().Packets) { _manager.ProcessIncomingPacket(packet); } foreach (var packet in TelemetryLapHelper.CreatePopulatedLap(lapNumber: 1f).Packets) { _manager.ProcessIncomingPacket(packet); } }
public ApiModule(TelemetryLapManagerFactory managerFactory) : base("/api") { _telemetryLapManager = managerFactory.GetManager(); Get["/packet"] = parameters => { var speedDelta = _telemetryLapManager.GetSpeedDelta(); var timeDelta = _telemetryLapManager.GetTimeDelta(); if (speedDelta == "--") { speedDelta = "+0"; } var speedPositive = speedDelta.Substring(0, 1) == "+"; var timePositive = timeDelta > 0; var speedAbs = speedDelta.Substring(1); var model = new DashViewModel { CircuitName = _telemetryLapManager.Circuit.Name, LapType = _telemetryLapManager.LapType ?? "", SpeedDelta = float.Parse(speedAbs), TimeDelta = timeDelta, IsSpeedDeltaPositive = speedPositive, IsTimeDeltaPositive = timePositive, WheelspinRearLeft = _telemetryLapManager.CurrentWheelSpin(WheelspinWheel.RearLeft), WheelspinRearRight = _telemetryLapManager.CurrentWheelSpin(WheelspinWheel.RearRight), WheelspinFrontLeft = _telemetryLapManager.CurrentWheelSpin(WheelspinWheel.FrontLeft), WheelspinFrontRight = _telemetryLapManager.CurrentWheelSpin(WheelspinWheel.FrontRight), Throttle = _telemetryLapManager.CurrentThrottle, Brake = _telemetryLapManager.CurrentBrake, CurrentLap = _telemetryLapManager.CurrentLapTime, LastLap = _telemetryLapManager.LastLapTime, Sector1 = new SectorTimeViewModel(_telemetryLapManager.Sector1), Sector2 = new SectorTimeViewModel(_telemetryLapManager.Sector2), Sector3 = new SectorTimeViewModel(_telemetryLapManager.Sector3) }; if (_telemetryLapManager.FastestLap == null) { model.FastestLap = 0f.AsTimeString(); } else { model.FastestLap = _telemetryLapManager.FastestLap.LapTime.AsTimeString(); } return(Response.AsJson(model)); }; }
public void Start_of_first_full_lap_does_not_set_fastest_lap() { var manager = new TelemetryLapManager(); foreach (var packet in TelemetryLapHelper.CreateOutLap().Packets) { manager.ProcessIncomingPacket(packet); } var fullLap = TelemetryLapHelper.CreatePopulatedLap(lapNumber: 1f); Assert.IsTrue(fullLap.IsFirstPacketStartLine); // Lap we just added must be a full lap manager.ProcessIncomingPacket(fullLap.Packets[0]); Assert.IsNull(manager.FastestLap); }
//[DllImport("user32.dll")] //[return: MarshalAs(UnmanagedType.Bool)] //public static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int X, int Y, int cx, int cy, uint uFlags); public Form1(TelemetryLapManager telemetryLapManager) { InitializeComponent(); manager = telemetryLapManager; var type = typeof(TelemetryPacket); var fields = type.GetFields(); cboField.Items.Clear(); foreach (var field in fields) { cboField.Items.Add(field.Name); } cboField.SelectedIndex = 0; // default to first item manager.CircuitChanged += (s, e) => UpdateCircuitName(e.CircuitName, e.LapType); manager.StartedLap += (s, e) => UpdateFuelStatus(); #if DEBUG this.Height = 800; manager.CompletedFullLap += (s, e) => writeLog(string.Format("Completed Full Lap. Last={0}...Current={1}", e.PreviousLapNumber, e.CurrentLapNumber)); manager.RemovedLap += (s, e) => writeLog(string.Format("Removed Lap. Number={0}", e.Lap != null ? e.Lap.LapNumber : -1)); manager.ReturnedToGarage += (s, e) => writeLog("Now in Garage"); manager.FinishedOutLap += (s, e) => writeLog("Completed Out Lap"); manager.StartedOutLap += (s, e) => writeLog("Started Out Lap"); manager.SetFastestLap += (s, e) => writeLog(string.Format("Set Fastest Lap={0}", e.Lap.LapTime.AsTimeString())); manager.PacketProcessed += (s, e) => writeLog(string.Format("Packet: {0}", e.Packet)); #else this.Height = 670; cboField.Visible = false; label8.Visible = false; LogBox.Visible = false; #endif writeLog("Listing on port " + PORTNUM + " for connections from " + (F1SpeedSettings.AllowConnectionsFromOtherMachines ? "ANY IP" : IP)); remoteIP = F1SpeedSettings.AllowConnectionsFromOtherMachines ? new IPEndPoint(IPAddress.Any, PORTNUM) : new IPEndPoint(IPAddress.Parse(IP), PORTNUM); foreach (var ctrl in this.Controls) { var grpBox = ctrl as GroupBox; if (grpBox == null) { continue; } if (grpBox.Name == "ControlsGroup") { continue; } grpBox.Paint += new PaintEventHandler(grpBox_Paint); } // Set up the socket for collecting game telemetry try { udpSocket = new UdpClient(); udpSocket.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true); udpSocket.ExclusiveAddressUse = false; udpSocket.Client.Bind(remoteIP); writeLog("Bound to socket on " + IP + ":" + PORTNUM.ToString()); StartListening(); } catch (Exception error) { writeLog(error.ToString()); // throw; } }