Consolidates two standalone Railroader mods into one UMM "everything mod" with an optional-module framework. Modules are disabled by default and toggled per-module from the S3 settings page. Core framework: - IModule contract plus ModuleRegistry, with each module owning a Harmony instance scoped by its id so only enabled modules patch the game - Per-module flat JSON settings (SettingsStore). On this Mono runtime JsonUtility silently drops nested custom-class fields, so settings stay flat - Foldout-per-module settings panel plus a detector that offers to disable the old standalone mods if they are still installed Modules (moved over to parity, verified in-game): - Physics Optimizer (was RailroaderPhysicsOverhaul): LOD fast-path and auto-freeze, profiler overlay, debug car tinting, /rpf console commands - Map Popout (was RRPopout): native map detach window. Pure-UMM install that drops the winhttp proxy and LoadLibrary's RRPopout.dll from the mod folder. Native Win32 + D3D11 + Dear ImGui engine included. Fixes a latent break where the now-private MapBuilder.UpdateForZoom() is reached via Traverse. Build: dotnet for the managed assembly (netstandard2.1) and CMake for the native DLL. build-local.ps1 installs into the game, build-release.ps1 packages the UMM drag-install zip.
31 lines
1.1 KiB
PowerShell
31 lines
1.1 KiB
PowerShell
# Build S³ and package a drag-install zip for Forgejo downloads.
|
|
# .\dist\build-release.ps1
|
|
# Produces dist\SetonsSpecialSauce-<version>.zip with the layout:
|
|
# S3/Info.json
|
|
# S3/S3.dll
|
|
# S3/RRPopout.dll (when the native module is present)
|
|
|
|
param(
|
|
[string]$Configuration = "Release"
|
|
)
|
|
|
|
. (Join-Path $PSScriptRoot "build-common.ps1")
|
|
|
|
$managed = Invoke-ManagedBuild -Configuration $Configuration
|
|
$native = Invoke-NativeBuild -Configuration $Configuration
|
|
|
|
$stageRoot = Join-Path $PSScriptRoot "stage"
|
|
$modDir = Join-Path $stageRoot $ModId
|
|
if (Test-Path $stageRoot) { Remove-Item $stageRoot -Recurse -Force }
|
|
New-Item -ItemType Directory -Force -Path $stageRoot | Out-Null
|
|
|
|
New-ModLayout -DestModDir $modDir -ManagedDll $managed -NativeDll $native
|
|
|
|
$version = Get-ModVersion
|
|
$zip = Join-Path $PSScriptRoot "SetonsSpecialSauce-$version.zip"
|
|
if (Test-Path $zip) { Remove-Item $zip -Force }
|
|
|
|
# Zip the S3 folder itself so the archive root contains S3\ — what UMM expects.
|
|
Compress-Archive -Path $modDir -DestinationPath $zip -Force
|
|
|
|
Write-Host "=== Release zip ready: $zip ===" -ForegroundColor Green
|