Add Burglin' Gnomes BepInEx ultrawide UI plugin

Config-driven so values are tunable without recompiling or pasting console
scripts. Camera is deliberately untouched - it is orthographic with constant
orthographicSize, which is already correct Hor+ at 32:9.

Fixes the two UI families separately, each via the lever that actually works:
- HUD (ScreenSpaceOverlay/ScaleWithScreenSize): match=1 + referenceResolution.y
  raised by HudScale, shrinking the HUD while giving the layout more room.
- World labels (WorldSpace): canvas transform localScale, because
  CanvasScaler.scaleFactor is overwritten by HandleWorldCanvas every frame.

Baselines are cached per canvas so periodic re-apply never compounds.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-07-21 16:08:11 -04:00
co-authored by Claude Opus 4.8
parent b9e68fd284
commit cbcc53c2e9
3 changed files with 203 additions and 0 deletions
@@ -0,0 +1,57 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.1</TargetFramework>
<AssemblyName>BurglinGnomes.UltraWideFix</AssemblyName>
<RootNamespace>BurglinGnomes.UltraWideFix</RootNamespace>
<Version>1.0.0</Version>
<LangVersion>latest</LangVersion>
<!-- Plugin references the game's own assemblies; nothing is redistributed. -->
<AssemblySearchPaths>$(AssemblySearchPaths);$(GameManaged)</AssemblySearchPaths>
<EnableDefaultCompileItems>false</EnableDefaultCompileItems>
<GenerateAssemblyInfo>true</GenerateAssemblyInfo>
<NoWarn>$(NoWarn);CS0436</NoWarn>
</PropertyGroup>
<ItemGroup>
<Compile Include="UltraWideFix.cs" />
</ItemGroup>
<!--
GameDir must point at the Burglin' Gnomes install. Override on the CLI:
dotnet build -c Release -p:GameDir="/path/to/Burglin' Gnomes"
-->
<PropertyGroup>
<GameDir Condition="'$(GameDir)' == ''">/media/ckoch/Data/steam/steamapps/common/Burglin' Gnomes</GameDir>
<GameManaged>$(GameDir)/Gnomium_Data/Managed</GameManaged>
<BepInExCore>$(GameDir)/BepInEx/core</BepInExCore>
</PropertyGroup>
<ItemGroup>
<Reference Include="BepInEx">
<HintPath>$(BepInExCore)/BepInEx.dll</HintPath>
<Private>false</Private>
</Reference>
<Reference Include="0Harmony">
<HintPath>$(BepInExCore)/0Harmony.dll</HintPath>
<Private>false</Private>
</Reference>
<Reference Include="UnityEngine">
<HintPath>$(GameManaged)/UnityEngine.dll</HintPath>
<Private>false</Private>
</Reference>
<Reference Include="UnityEngine.CoreModule">
<HintPath>$(GameManaged)/UnityEngine.CoreModule.dll</HintPath>
<Private>false</Private>
</Reference>
<Reference Include="UnityEngine.UI">
<HintPath>$(GameManaged)/UnityEngine.UI.dll</HintPath>
<Private>false</Private>
</Reference>
<Reference Include="UnityEngine.UIModule">
<HintPath>$(GameManaged)/UnityEngine.UIModule.dll</HintPath>
<Private>false</Private>
</Reference>
</ItemGroup>
</Project>