From 6459af0ecec1cead4a96e43d5a9966127528d5f4 Mon Sep 17 00:00:00 2001
From: ConnorMolz <114417919+ConnorMolz@users.noreply.github.com>
Date: Mon, 2 Jun 2025 15:37:09 +0200
Subject: [PATCH 1/2] Basic Implementation of the P2PInfo
---
RaceOverlay/Data/Mapper.cs | 11 ++++
RaceOverlay/Data/Models/LocalCarTelemetry.cs | 4 ++
RaceOverlay/MainWindow.xaml.cs | 2 +
RaceOverlay/Overlays/P2PInfo/P2PInfo.xaml | 61 ++++++++++++++++++++
RaceOverlay/Overlays/P2PInfo/P2PInfo.xaml.cs | 60 +++++++++++++++++++
5 files changed, 138 insertions(+)
create mode 100644 RaceOverlay/Overlays/P2PInfo/P2PInfo.xaml
create mode 100644 RaceOverlay/Overlays/P2PInfo/P2PInfo.xaml.cs
diff --git a/RaceOverlay/Data/Mapper.cs b/RaceOverlay/Data/Mapper.cs
index 16bd390..f1c8b8f 100644
--- a/RaceOverlay/Data/Mapper.cs
+++ b/RaceOverlay/Data/Mapper.cs
@@ -170,6 +170,17 @@ public static iRacingData MapData(IRacingSdk irsdkSharper)
// ignored
}
+ // P2P (Indycar Only)
+ try
+ {
+ data.LocalCarTelemetry.P2PLeft = irsdkSharper.Data.GetFloat("P2P_Count");
+ data.LocalCarTelemetry.P2POn = irsdkSharper.Data.GetBool("P2P_Status");
+ }
+ catch (Exception e)
+ {
+ // ignored
+ }
+
// Lap Data
data.LocalCarTelemetry.Lap = irsdkSharper.Data.GetInt("Lap");
diff --git a/RaceOverlay/Data/Models/LocalCarTelemetry.cs b/RaceOverlay/Data/Models/LocalCarTelemetry.cs
index 06664e7..2ca119e 100644
--- a/RaceOverlay/Data/Models/LocalCarTelemetry.cs
+++ b/RaceOverlay/Data/Models/LocalCarTelemetry.cs
@@ -41,6 +41,10 @@ public LocalCarTelemetry()
// Battery (GPT Only)
public float EngeryLevelPct { get; set; } = 0;
+ // Indy car Series Only
+ public float P2PLeft { get; set; } = 0; // P2P = Push to Pass, only available in Indy car series
+ public bool P2POn { get; set; } = false; // P2P = Push to Pass, only available in Indy car series
+
// Lap data
public int Lap { get; set; }
diff --git a/RaceOverlay/MainWindow.xaml.cs b/RaceOverlay/MainWindow.xaml.cs
index 6e6aeec..da99c33 100644
--- a/RaceOverlay/MainWindow.xaml.cs
+++ b/RaceOverlay/MainWindow.xaml.cs
@@ -15,6 +15,7 @@
using RaceOverlay.Overlays.FuelCalculator;
using RaceOverlay.Overlays.LaptimeDelta;
using RaceOverlay.Overlays.Leaderboard;
+using RaceOverlay.Overlays.P2PInfo;
using RaceOverlay.Overlays.PitstopInfo;
using RaceOverlay.Overlays.Relative;
using RaceOverlay.Overlays.WeatherInfo;
@@ -70,6 +71,7 @@ private void _initOverlays()
Overlays.Add(new Inputs());
Overlays.Add(new LaptimeDelta());
Overlays.Add(new Standings());
+ Overlays.Add(new P2PInfo());
Overlays.Add(new PitstopInfo());
Overlays.Add(new Relative());
//Overlays.Add(new SessionInfo());
diff --git a/RaceOverlay/Overlays/P2PInfo/P2PInfo.xaml b/RaceOverlay/Overlays/P2PInfo/P2PInfo.xaml
new file mode 100644
index 0000000..44468f6
--- /dev/null
+++ b/RaceOverlay/Overlays/P2PInfo/P2PInfo.xaml
@@ -0,0 +1,61 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/RaceOverlay/Overlays/P2PInfo/P2PInfo.xaml.cs b/RaceOverlay/Overlays/P2PInfo/P2PInfo.xaml.cs
new file mode 100644
index 0000000..554ec55
--- /dev/null
+++ b/RaceOverlay/Overlays/P2PInfo/P2PInfo.xaml.cs
@@ -0,0 +1,60 @@
+using System.Diagnostics;
+using System.Windows;
+using RaceOverlay.Internals;
+
+namespace RaceOverlay.Overlays.P2PInfo;
+
+public partial class P2PInfo : Overlay
+{
+ private float _p2pLeft;
+ public P2PInfo(): base("P2P Info", "Displays the current P2P status and remaining time.")
+ {
+ InitializeComponent();
+ _setWindowSize(200, 35);
+ Thread updateThread = new Thread(UpdateThreadMethod);
+ updateThread.IsBackground = true;
+ updateThread.Start();
+ }
+
+ public override void _updateWindow()
+ {
+ if (_p2pLeft < 201)
+ {
+ P2PBar.Width = 200;
+ }
+ else
+ {
+ P2PBar.Width = _p2pLeft;
+ }
+
+
+
+ }
+
+ public override void _getData()
+ {
+ if (_devMode)
+ {
+ InCar = true;
+ }
+ else
+ {
+ InCar = MainWindow.IRacingData.InCar;
+ }
+
+ _p2pLeft = MainWindow.IRacingData.LocalCarTelemetry.P2PLeft;
+ }
+
+ protected override void _scaleWindow(double scale)
+ {
+ try
+ {
+ ContentScaleTransform.ScaleX = scale;
+ ContentScaleTransform.ScaleY = scale;
+ }
+ catch (Exception e)
+ {
+ Debug.WriteLine(e);
+ }
+ }
+}
\ No newline at end of file
From 8e6ff96b339577d0b186bca1984969b8883da31f Mon Sep 17 00:00:00 2001
From: ConnorMolz <114417919+ConnorMolz@users.noreply.github.com>
Date: Mon, 2 Jun 2025 16:13:42 +0200
Subject: [PATCH 2/2] Finish up P2P Overlay
---
RaceOverlay/Overlays/P2PInfo/P2PInfo.xaml | 15 ++++++++++----
RaceOverlay/Overlays/P2PInfo/P2PInfo.xaml.cs | 21 ++++++++++++++++----
2 files changed, 28 insertions(+), 8 deletions(-)
diff --git a/RaceOverlay/Overlays/P2PInfo/P2PInfo.xaml b/RaceOverlay/Overlays/P2PInfo/P2PInfo.xaml
index 44468f6..7c576cb 100644
--- a/RaceOverlay/Overlays/P2PInfo/P2PInfo.xaml
+++ b/RaceOverlay/Overlays/P2PInfo/P2PInfo.xaml
@@ -38,16 +38,23 @@
RadiusX="10"
RadiusY="10"/>
-
+
-
+
+
+
+
+
+
+ 200)
{
P2PBar.Width = 200;
}
@@ -26,9 +28,19 @@ public override void _updateWindow()
{
P2PBar.Width = _p2pLeft;
}
-
-
-
+
+ P2PText.Text = _p2pLeft.ToString("f0");
+ if (_p2pOn)
+ {
+ P2PActive.Visibility = Visibility.Visible;
+ P2PInactive.Visibility = Visibility.Collapsed;
+ }
+ {
+ P2PActive.Visibility = Visibility.Collapsed;
+ P2PInactive.Visibility = Visibility.Visible;
+ }
+
+
}
public override void _getData()
@@ -43,6 +55,7 @@ public override void _getData()
}
_p2pLeft = MainWindow.IRacingData.LocalCarTelemetry.P2PLeft;
+ _p2pOn = MainWindow.IRacingData.LocalCarTelemetry.P2POn;
}
protected override void _scaleWindow(double scale)