Files
StarterNG/StarterNG/StarterNG.csproj
maj00r e530b95352 Play back the black box of the simulator: map, cab, timeline, timetable and a summary
The simulator writes a black box of each run to physicslog/*.blackbox
(blackbox_doc.md in the maszyna repository). Three new projects read and
show it:

- Eu07.BlackBox: the reader of the records, the recording as a whole
  (the user's vehicle and consist at a time, the timetable shown, the
  progress along it with arrival and departure delays, whether the
  train stood at the platform), the light patterns Pc 1, Pc 2, Pc 5 and
  Tb 1 with the ones the run asks for, and a summary of the driving.
- Eu07.BlackBox.Views: the player window, with the scenery map (tracks,
  signals, W4 stop points with their heading and W32, the train, the
  cameras), the cab, the timeline of speed against the AI's reference,
  the events, the timetable and the summary.
- Eu07.BlackBox.Viewer: the window on its own, with options for the
  time, following the train and screenshots.

The tapes window of the starter lists the black boxes of each session
beside the Hasler tapes and opens them in the player.
2026-11-11 00:39:35 +01:00

80 lines
3.9 KiB
XML

<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<PublishAot>true</PublishAot>
<PublishTrimmed>true</PublishTrimmed>
<IsAotCompatible>true</IsAotCompatible>
<TargetFramework>net9.0</TargetFramework>
<Nullable>enable</Nullable>
<BuiltInComInteropSupport>true</BuiltInComInteropSupport>
<ApplicationManifest>app.manifest</ApplicationManifest>
<ApplicationIcon>Assets\starter.ico</ApplicationIcon>
<AvaloniaUseCompiledBindingsByDefault>true</AvaloniaUseCompiledBindingsByDefault>
<!-- Major and minor only: CI adds the patch, the number of commits, so every
build of main is a higher version without anyone bumping it. -->
<VersionPrefix>1.5</VersionPrefix>
<AssemblyName>Starter</AssemblyName>
<Company>eu07.pl</Company>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
<PlatformTarget>AnyCPU</PlatformTarget>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
<PlatformTarget>AnyCPU</PlatformTarget>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Avalonia" Version="12.1.4" />
<PackageReference Include="Avalonia.Desktop" Version="12.1.4" />
<PackageReference Include="Avalonia.Themes.Fluent" Version="12.1.4" />
<PackageReference Include="Avalonia.Fonts.Inter" Version="12.1.4" />
<!--Condition below is needed to remove Avalonia.Diagnostics package from build output in Release configuration.-->
<PackageReference Include="Avalonia.Diagnostics" Version="11.3.17">
<IncludeAssets Condition="'$(Configuration)' != 'Debug'">none</IncludeAssets>
<PrivateAssets Condition="'$(Configuration)' != 'Debug'">all</PrivateAssets>
</PackageReference>
<PackageReference Include="HotAvalonia" Version="3.0.2" />
<PackageReference Include="Material.Icons.Avalonia" Version="3.0.2" />
</ItemGroup>
<ItemGroup>
<!-- The black box of the simulator: its reader and the window it is played back in. -->
<ProjectReference Include="..\Eu07.BlackBox\Eu07.BlackBox.csproj" />
<ProjectReference Include="..\Eu07.BlackBox.Views\Eu07.BlackBox.Views.csproj" />
</ItemGroup>
<ItemGroup>
<Folder Include="Assets\Logo\" />
</ItemGroup>
<ItemGroup>
<None Remove="Assets\Logo\Other\Discord.svg" />
<AvaloniaResource Include="Assets\Logo\Other\Discord.svg" />
<!-- Logo bitmaps (splash.png + maszyna_black/white.png). Globbed so newly
added PNGs are embedded automatically without editing this file. -->
<None Remove="Assets\Logo\*.png" />
<AvaloniaResource Include="Assets\Logo\*.png" />
<None Remove="Assets\Test\ep07p.bmp" />
<AvaloniaResource Include="Assets\Test\ep07p.bmp" />
<None Remove="Assets\starter.ico" />
<AvaloniaResource Include="Assets\starter.ico" />
</ItemGroup>
<ItemGroup>
<!-- Translations are plain XML loaded at runtime (LocalizationService), not
compiled into the assembly. They are copied verbatim into a starter/lang/
folder next to the executable so they can be edited or extended without a
rebuild. XmlReader parsing is AOT-safe, unlike the Avalonia XAML loader. -->
<Content Include="startercfg\lang\*.xml">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<Link>startercfg\lang\%(Filename)%(Extension)</Link>
</Content>
<!-- Default key-binding layout, used as a template when the user has no
eu07_input-keyboard.ini yet (and for "Restore defaults"). -->
<Content Include="startercfg\eu07_input-keyboard.ini">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<Link>startercfg\eu07_input-keyboard.ini</Link>
</Content>
</ItemGroup>
</Project>