Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
99 changes: 99 additions & 0 deletions RaceOverlay/API/Overlays/Electronics/Electronics.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
<!DOCTYPE html>

<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Electronics</title>
<style>
body {
background-color: transparent;
color: white;
font-family: sans-serif;
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
margin: 0;
}

.container {
background-color: #1E1E1E;
border-radius: 10px;
padding: 10px;
transform: scale(1); /* Corresponds to ScaleTransform */
}

.grid {
display: grid;
grid-template-columns: repeat(6, auto);
grid-template-rows: repeat(2, auto);
text-align: center;
}

.grid-item {
padding: 10px;
}

</style>
</head>
<body>

<div class="container">
<div class="grid">
<div class="grid-item" style="grid-column: 1; grid-row: 1;">ABS</div>
<div class="grid-item" style="grid-column: 1; grid-row: 2;" id="absValue">5</div>

<div class="grid-item" style="grid-column: 2; grid-row: 1;">TC1</div>
<div class="grid-item" style="grid-column: 2; grid-row: 2;" id="tc1Value">3</div>

<div class="grid-item" style="grid-column: 3; grid-row: 1;">TC2</div>
<div class="grid-item" style="grid-column: 3; grid-row: 2;" id="tc2Value">1</div>

<div class="grid-item" style="grid-column: 4; grid-row: 1;">BB</div>
<div class="grid-item" style="grid-column: 4; grid-row: 2;" id="bbValue">54.2</div>

<div class="grid-item" style="grid-column: 5; grid-row: 1;">ARB F</div>
<div class="grid-item" style="grid-column: 5; grid-row: 2;" id="ARBFValue">4</div>

<div class="grid-item" style="grid-column: 6; grid-row: 1;">ARB R</div>
<div class="grid-item" style="grid-column: 6; grid-row: 2;" id="ARBRValue">2</div>
</div>

</div>

<script>
async function updateInputs() {
try {
const response = await fetch('/overlay/electronics/data');
const data = await response.json();

// Update pedal bars
document.getElementById('absValue').textContent = data.abs_value;

// Update gear
document.getElementById('tc1Value').textContent = data.tc1;

// Update gear
document.getElementById('tc2Value').textContent = data.tc2;

// Update gear
document.getElementById('bbValue').textContent = data.bb.toFixed(2);

// Update gear
document.getElementById('ARBFValue').textContent = data.abrf;

// Update gear
document.getElementById('ARBRValue').textContent = data.abrr;

} catch (error) {
console.error('Failed to update EnergyInfo:', error);
}
}

// Update every 16ms (approximately 60fps)
setInterval(updateInputs, 16);
</script>

</body>
</html>
25 changes: 25 additions & 0 deletions RaceOverlay/API/Overlays/Electronics/ElectronicsModel.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
using RaceOverlay.Data.Models;

namespace RaceOverlay.API.Overlays.Electronics;

public class ElectronicsModel
{
public int abs_value { get; set; }
public int tc1 { get; set; }
public int tc2 { get; set; }
public float bb { get; set; }
public int abrf { get; set; }
public int abrr { get; set; }

public ElectronicsModel()
{
iRacingData iRacingData = MainWindow.IRacingData;
abs_value = (int) iRacingData.LocalCarTelemetry.Abs;
tc1 = (int) iRacingData.LocalCarTelemetry.Tc1;
tc2 = (int) iRacingData.LocalCarTelemetry.Tc2;
bb = iRacingData.LocalCarTelemetry.BrakeBias;
abrf = (int) iRacingData.LocalCarTelemetry.ARBFront;
abrr = (int) iRacingData.LocalCarTelemetry.ARBRear;
}

}
30 changes: 30 additions & 0 deletions RaceOverlay/API/StartAPI.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using RaceOverlay.API.Overlays.Electronics;
using RaceOverlay.API.Overlays.EnergyInfo;
using RaceOverlay.API.Overlays.LaptimeDelta;
using RaceOverlay.API.Overlays.SetupHider;
Expand Down Expand Up @@ -147,6 +148,35 @@ public static IHost StartApiServer()
});


//
// Last Lap time Delta
//

endpoints.MapGet("/overlay/electronics", () =>
{
var assembly = typeof(StartAPI).Assembly;
var resourceName = "RaceOverlay.API.Overlays.Electronics.Electronics.html";

using var stream = assembly.GetManifestResourceStream(resourceName);
if (stream == null)
{
return Results.NotFound("Overlay file not found");
}

using var reader = new StreamReader(stream);
var htmlContent = reader.ReadToEnd();
return Results.Content(htmlContent, "text/html");
})
.WithName("GetElectronicsOverlay");

endpoints.MapGet("/overlay/electronics/data", () =>
{
Debug.WriteLine("GetElectronicsData");
ElectronicsModel data = new ElectronicsModel();
return Results.Ok(data);
});


//
//
// Weather Info
Expand Down
1 change: 1 addition & 0 deletions RaceOverlay/MainWindow.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,7 @@ private void _initOverlays()
// Add here every Stream Overlay
//StreamOverlays.Add(new Test());
StreamOverlays.Add(new BestLaptimeDelta());
StreamOverlays.Add(new StreamOverlay.Electronics.Electronics());
StreamOverlays.Add(new StreamOverlay.EnergyInfo.EnergyInfo());
StreamOverlays.Add(new StreamOverlay.Inputs.Inputs());
StreamOverlays.Add(new LastLaptimeDelta());
Expand Down
2 changes: 1 addition & 1 deletion RaceOverlay/Overlays/Electronics/Electronics.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@

private iRacingData _data;

public Electronics(): base("Electronics", "An Overlay for displaying the in car adjustments of ABS, TC1, TC2 and Brake Bias(BB).")
public Electronics(): base("Electronics", "An Overlay for displaying the in car adjustments of ABS, TC1, TC2, Brake Bias(BB) and Anit Roll Bars (ARB) Front and Rear.")

Check warning on line 33 in RaceOverlay/Overlays/Electronics/Electronics.xaml.cs

View workflow job for this annotation

GitHub Actions / test

Non-nullable field '_data' must contain a non-null value when exiting constructor. Consider adding the 'required' modifier or declaring the field as nullable.
{
InitializeComponent();
_getConfig();
Expand Down
2 changes: 2 additions & 0 deletions RaceOverlay/RaceOverlay.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,8 @@
<EmbeddedResource Include="API\Overlays\LaptimeDelta\LastLaptimeDelta.html" />
<None Remove="API\Overlays\WeatherInfo\WeatherInfo.html" />
<EmbeddedResource Include="API\Overlays\WeatherInfo\WeatherInfo.html" />
<None Remove="API\Overlays\Electronics\Electronics.html" />
<EmbeddedResource Include="API\Overlays\Electronics\Electronics.html" />
</ItemGroup>

<ItemGroup>
Expand Down
10 changes: 10 additions & 0 deletions RaceOverlay/StreamOverlay/Electronics/Electronics.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
namespace RaceOverlay.StreamOverlay.Electronics;

public class Electronics: Internals.StreamOverlay
{
public Electronics() : base("Electronics",
"An Overlay for displaying the in car adjustments of ABS, TC1, TC2, Brake Bias(BB) and Anit Roll Bars (ARB) Front and Rear.",
"http://localhost:5480/overlay/electronics")
{
}
}
Loading