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
34 changes: 34 additions & 0 deletions RaceOverlay/Data/Mapper.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,36 @@

namespace RaceOverlay.Data;

[Flags]
public enum IrsdkFlags : uint
{
None = 0x00000000,
Checkered = 0x00000001,
White = 0x00000002,
Green = 0x00000004,
Yellow = 0x00000008,
Red = 0x00000010,
Blue = 0x00000020,
Debris = 0x00000040,
Crossed = 0x00000080,
YellowWaving = 0x00000100,
OneLapToGreen = 0x00000200,
GreenHeld = 0x00000400,
TenToGo = 0x00000800,
FiveToGo = 0x00001000,
RandomWaving = 0x00002000,
Caution = 0x00004000,
CautionWaving = 0x00008000,
Black = 0x00010000,
Disqualify = 0x00020000,
Servicible = 0x00040000,
Furled = 0x00080000,
Repair = 0x00100000,
StartHidden = 0x10000000,
StartReady = 0x20000000,
StartSet = 0x40000000
}

public class Mapper
{
public static double LogNumber { get; } = 1600 / Math.Log(2);
Expand Down Expand Up @@ -296,6 +326,10 @@ public static iRacingData MapData(IRacingSdk irsdkSharper)

data.InGarage = irsdkSharper.Data.GetBool("IsInGarage");

var Flag = irsdkSharper.Data.GetValue("SessionFlags");

data.LocalDriver.CurrentIrsdkFlags = (IrsdkFlags)Flag;
Console.WriteLine(data.LocalDriver.CurrentIrsdkFlags);

// Return Dataset
return data;
Expand Down
1 change: 1 addition & 0 deletions RaceOverlay/Data/Models/LocalDriver.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,5 @@ public class LocalDriver
{
public float LastLapDelta { get; set; }
public float BestLapDelta { get; set; }
public IrsdkFlags CurrentIrsdkFlags { get; set; }
}
38 changes: 38 additions & 0 deletions RaceOverlay/Internals/Overlay.cs
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
using System.ComponentModel;
using System.Diagnostics;
using System.IO;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using Newtonsoft.Json.Linq;
using RaceOverlay.Data;

Expand Down Expand Up @@ -753,5 +755,41 @@ protected virtual void OnPropertyChanged([CallerMemberName] string? propertyName
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}

protected void LoadEmbeddedImage(Canvas targetCanvas, string manifestResourceName)
{
if (targetCanvas == null) return;

// Get the current assembly where the code is executing
var assembly = Assembly.GetExecutingAssembly();

// The 'using' statement ensures the stream is properly closed and disposed of
using (var stream = assembly.GetManifestResourceStream(manifestResourceName))
{
if (stream == null)
{
// If the stream is null, the resource was not found.
// This is a critical debugging step!
Console.WriteLine($"ERROR: Embedded resource not found: {manifestResourceName}");
return;
}

var image = new BitmapImage();

// --- This is the standard way to load a BitmapImage from a stream ---
image.BeginInit();
image.StreamSource = stream;
image.CacheOption = BitmapCacheOption.OnLoad; // Important for closing the stream
image.EndInit();
// ---------------------------------------------------------------------

var brush = new ImageBrush(image) { Stretch = Stretch.Uniform };

// Freeze for performance
brush.Freeze();

targetCanvas.Background = brush;
}
}


}
2 changes: 2 additions & 0 deletions RaceOverlay/MainWindow.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
using RaceOverlay.Internals;
using RaceOverlay.Overlays.EnergyInfo;
using RaceOverlay.Overlays.Electronics;
using RaceOverlay.Overlays.FlagPanel;
using RaceOverlay.Overlays.FuelCalculator;
using RaceOverlay.Overlays.LaptimeDelta;
using RaceOverlay.Overlays.Leaderboard;
Expand Down Expand Up @@ -64,6 +65,7 @@ private void _initOverlays()
// Add here every Overlay
Overlays.Add(new Electronics());
Overlays.Add(new EnergyInfo());
Overlays.Add(new FlagPanel());
Overlays.Add(new FuelCalculator());
Overlays.Add(new Inputs());
Overlays.Add(new LaptimeDelta());
Expand Down
54 changes: 54 additions & 0 deletions RaceOverlay/Overlays/FlagPanel/FlagPanel.xaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
<internals:Overlay x:Class="RaceOverlay.Overlays.FlagPanel.FlagPanel"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:RaceOverlay.Overlays.FlagPanel"
xmlns:internals="clr-namespace:RaceOverlay.Internals"
mc:Ignorable="d"
Title="FlagPanel"
Height="{Binding windowHeight}" Width="{Binding windowWidth}"
Background="Transparent"
Foreground="White"
WindowStyle="None"
WindowStartupLocation="Manual"
ResizeMode="NoResize"
Topmost="True">
<Border Background="#FF1E1E1E" CornerRadius="10">
<Grid Margin="0">
<Grid.LayoutTransform>
<ScaleTransform x:Name="ContentScaleTransform" ScaleX="1" ScaleY="1" />
</Grid.LayoutTransform>

<Canvas Width="{Binding windowWidth}" Height="{Binding windowHeight}">
<Canvas.Resources>
<Style TargetType="TextBlock">
<Setter Property="FontSize" Value="16"/>
<Setter Property="Foreground" Value="White"/>
</Style>
</Canvas.Resources>

<!-- Additional UI elements can be added here -->
<Canvas Width="80" Height="80" Margin="10" Name="FlagCanvas">
<Canvas.Resources>
<Style TargetType="Canvas">
<Setter Property="Background" Value="#FF393939"></Setter>
</Style>
</Canvas.Resources>
</Canvas>
<Canvas Width="80" Height="80" Margin="10" Name="CheckeredFlag" Visibility="Collapsed">

</Canvas>
<Canvas Width="80" Height="80" Margin="10" Name="DsqFlag" Visibility="Collapsed">

</Canvas>
<Canvas Width="80" Height="80" Margin="10" Name="RepairFlag" Visibility="Collapsed">
</Canvas>
<Canvas Width="80" Height="80" Margin="10" Name="DebrisFlag" Visibility="Collapsed">
</Canvas>
</Canvas>


</Grid>
</Border>
</internals:Overlay>
Loading
Loading