mirror of
https://github.com/MaSzyna-EU07/StarterNG.git
synced 2026-09-01 03:19:18 +02:00
Sync setting defaults with eu07 engine, drop dead options
Cross-checked against ../maszyna: several StarterNG defaults didn't match the simulator's actual defaults (Globals.h), and three exposed options never mapped to a real eu07.ini key. - Correct defaults to match the engine: VSync=false, LiveTraction=true, VirtualShunting(ai.trainman)=true, DynamicLights=7 fallback, CabShadowsRange=0, GfxResourceSweep=true, FeedbackMode=1, ShadowMapResolution=2048, ReflectionsFidelity=0, Volume=50. - Remove Post-processing (gfx.postfx.tonemapping), onboard-screen refresh rate (pyscreenrendererpriority), and volume-during-pause (sound.volume.paused) — none of these keys exist in the simulator. - Only apply parsed UART feature tokens when eu07.ini actually has an uartfeature line; otherwise fall back to the engine's own defaults instead of all-false.
This commit is contained in:
@@ -46,13 +46,13 @@ public sealed class Settings
|
|||||||
public bool Fullscreen; // fullscreen
|
public bool Fullscreen; // fullscreen
|
||||||
public bool PauseWhenInactive = true; // inactivepause
|
public bool PauseWhenInactive = true; // inactivepause
|
||||||
public bool PauseOnStart; // pause
|
public bool PauseOnStart; // pause
|
||||||
public int CursorSensitivity = 3; // |mousescale x|
|
public int CursorSensitivity = 2; // |mousescale x|
|
||||||
public bool InvertMouseHorizontal; // mousescale x < 0
|
public bool InvertMouseHorizontal; // mousescale x < 0
|
||||||
public bool InvertMouseVertical; // mousescale y < 0
|
public bool InvertMouseVertical; // mousescale y < 0
|
||||||
|
|
||||||
// ── Communication ─────────────────────────────────────────────────────
|
// ── Communication ─────────────────────────────────────────────────────
|
||||||
public bool IgnoreGamepad; // input.gamepad (inverted)
|
public bool IgnoreGamepad; // input.gamepad (inverted)
|
||||||
public int FeedbackMode; // feedbackmode (0-5)
|
public int FeedbackMode = 1; // feedbackmode (0-5)
|
||||||
public int FeedbackPort = 888; // feedbackport
|
public int FeedbackPort = 888; // feedbackport
|
||||||
public bool UartEnabled; // uart presence
|
public bool UartEnabled; // uart presence
|
||||||
public string UartPort = ""; // uart
|
public string UartPort = ""; // uart
|
||||||
@@ -64,7 +64,7 @@ public sealed class Settings
|
|||||||
public bool SelectExeAutomatically = true; // starter.exe.auto (launcher-only)
|
public bool SelectExeAutomatically = true; // starter.exe.auto (launcher-only)
|
||||||
public string ExecutablePath = "eu07.exe"; // starter.exe.path (launcher-only)
|
public string ExecutablePath = "eu07.exe"; // starter.exe.path (launcher-only)
|
||||||
public bool DebugMode; // debugmode
|
public bool DebugMode; // debugmode
|
||||||
public bool VirtualShunting; // ai.trainman
|
public bool VirtualShunting = true; // ai.trainman
|
||||||
public bool LogMissingVehicleFiles; // starter.logmissingvehicles (launcher-only; not yet wired to any load/export codepath)
|
public bool LogMissingVehicleFiles; // starter.logmissingvehicles (launcher-only; not yet wired to any load/export codepath)
|
||||||
|
|
||||||
// ── Graphics ──────────────────────────────────────────────────────────
|
// ── Graphics ──────────────────────────────────────────────────────────
|
||||||
@@ -77,27 +77,25 @@ public sealed class Settings
|
|||||||
public int TextureFiltering = 8; // anisotropicfiltering (1/2/4/8/16)
|
public int TextureFiltering = 8; // anisotropicfiltering (1/2/4/8/16)
|
||||||
public int Multisampling = 2; // multisampling (0-3)
|
public int Multisampling = 2; // multisampling (0-3)
|
||||||
public int DynamicLights = 7; // dynamiclights (0-7)
|
public int DynamicLights = 7; // dynamiclights (0-7)
|
||||||
public double DrawRangeFactor = 1.0; // gfx.drawrange.factor.max
|
public double DrawRangeFactor = 3.0; // gfx.drawrange.factor.max
|
||||||
public bool VSync = true; // vsync
|
public bool VSync; // vsync
|
||||||
public bool Smoke = true; // gfx.smoke
|
public bool Smoke = true; // gfx.smoke
|
||||||
public int SmokeFidelity = 1; // gfx.smoke.fidelity (1-4)
|
public int SmokeFidelity = 1; // gfx.smoke.fidelity (1-4)
|
||||||
public int Tonemapping; // gfx.postfx.tonemapping (NOTE: 0=reinhard,1=aces)
|
public bool ChromaticAberration = true; // gfx.postfx.chromaticaberration.enabled
|
||||||
public bool ChromaticAberration; // gfx.postfx.chromaticaberration.enabled
|
|
||||||
public bool MotionBlur = true; // gfx.postfx.motionblur.enabled
|
public bool MotionBlur = true; // gfx.postfx.motionblur.enabled
|
||||||
public bool ExtraEffects = true; // gfx.extraeffects
|
public bool ExtraEffects = true; // gfx.extraeffects
|
||||||
public bool EnvMap = true; // gfx.envmap.enabled
|
public bool EnvMap = true; // gfx.envmap.enabled
|
||||||
public bool UseVbo = true; // usevbo
|
public bool UseVbo = true; // usevbo
|
||||||
public bool RenderShadows = true; // shadows + gfx.shadowmap.enabled
|
public bool RenderShadows = true; // shadows + gfx.shadowmap.enabled
|
||||||
public int ReflectionsFramerate = 60; // gfx.reflections.framerate
|
public int ReflectionsFramerate = 60; // gfx.reflections.framerate
|
||||||
public int ShadowMapResolution = 4096; // shadowtune[0]
|
public int ShadowMapResolution = 2048; // shadowtune[0]
|
||||||
public int ShadowProjectionRange = 250; // shadowtune[1]
|
public int ShadowProjectionRange = 250; // shadowtune[1]
|
||||||
public int CabShadowsRange = 30; // gfx.shadows.cab.range
|
public int CabShadowsRange; // gfx.shadows.cab.range
|
||||||
public int ShadowRankCutoff = 3; // gfx.shadow.rank.cutoff (NOTE)
|
public int ShadowRankCutoff = 3; // gfx.shadow.rank.cutoff (NOTE)
|
||||||
public int ReflectionsFidelity = 2; // gfx.reflections.fidelity (0-2)
|
public int ReflectionsFidelity; // gfx.reflections.fidelity (0-2)
|
||||||
public int FieldOfView = 45; // fieldofview (15-75) NOTE: 'fovSlider' in XAML
|
public int FieldOfView = 45; // fieldofview (15-75) NOTE: 'fovSlider' in XAML
|
||||||
public bool PythonScreens = true; // python.enabled
|
public bool PythonScreens = true; // python.enabled
|
||||||
public bool PythonThreadedUpload = true; // python.threadedupload
|
public bool PythonThreadedUpload = true; // python.threadedupload
|
||||||
public int ScreenRendererPriority = 4; // pyscreenrendererpriority (1-5, see ScreenPriorities)
|
|
||||||
public bool FpsLimitEnabled; // fpslimit (presence)
|
public bool FpsLimitEnabled; // fpslimit (presence)
|
||||||
public int FpsLimit = 30; // fpslimit (1-100)
|
public int FpsLimit = 30; // fpslimit (1-100)
|
||||||
public double ShadowAngleLimit = 0.2; // gfx.shadow.angle.min (0.2-1.0)
|
public double ShadowAngleLimit = 0.2; // gfx.shadow.angle.min (0.2-1.0)
|
||||||
@@ -108,7 +106,7 @@ public sealed class Settings
|
|||||||
public int SplineFidelity = 1; // splinefidelity (1-4)
|
public int SplineFidelity = 1; // splinefidelity (1-4)
|
||||||
public bool FullPhysics = true; // fullphysics
|
public bool FullPhysics = true; // fullphysics
|
||||||
public bool EnableTraction = true; // enabletraction (pantograph can break)
|
public bool EnableTraction = true; // enabletraction (pantograph can break)
|
||||||
public bool LiveTraction; // livetraction
|
public bool LiveTraction = true; // livetraction
|
||||||
public bool PhysicsLog; // physicslog (speedometer tapes)
|
public bool PhysicsLog; // physicslog (speedometer tapes)
|
||||||
public bool DebugLog = true; // debuglog (3 / 0)
|
public bool DebugLog = true; // debuglog (3 / 0)
|
||||||
public bool MultipleLogs; // multiplelogs
|
public bool MultipleLogs; // multiplelogs
|
||||||
@@ -116,16 +114,15 @@ public sealed class Settings
|
|||||||
public bool CrashDamage = true; // crashdamage
|
public bool CrashDamage = true; // crashdamage
|
||||||
public double Friction = 1.0; // friction (0.1-3.0)
|
public double Friction = 1.0; // friction (0.1-3.0)
|
||||||
public double BrakeStep = 1.0; // brakestep (0.4-3.0)
|
public double BrakeStep = 1.0; // brakestep (0.4-3.0)
|
||||||
public double BrakeSpeed = 1.0; // brakespeed (0.4-3.0)
|
public double BrakeSpeed = 3.0; // brakespeed (0.4-3.0)
|
||||||
|
|
||||||
// ── Sound ─────────────────────────────────────────────────────────────
|
// ── Sound ─────────────────────────────────────────────────────────────
|
||||||
public bool SoundEnabled = true; // soundenabled
|
public bool SoundEnabled = true; // soundenabled
|
||||||
public int Volume = 100; // sound.volume (0-2 → 0-100)
|
public int Volume = 50; // sound.volume (0-2 → 0-100)
|
||||||
public int RadioVolume = 80; // sound.volume.radio (0-1 → 0-100)
|
public int RadioVolume = 75; // sound.volume.radio (0-1 → 0-100)
|
||||||
public int VehiclesVolume = 100; // sound.volume.vehicle
|
public int VehiclesVolume = 100; // sound.volume.vehicle
|
||||||
public int PositionalVolume = 100; // sound.volume.positional
|
public int PositionalVolume = 100; // sound.volume.positional
|
||||||
public int AmbientVolume = 80; // sound.volume.ambient
|
public int AmbientVolume = 100; // sound.volume.ambient
|
||||||
public int PausedVolume; // sound.volume.paused
|
|
||||||
|
|
||||||
// ── Advanced ──────────────────────────────────────────────────────────
|
// ── Advanced ──────────────────────────────────────────────────────────
|
||||||
public bool CompressTextures = true; // compresstex
|
public bool CompressTextures = true; // compresstex
|
||||||
@@ -135,7 +132,7 @@ public sealed class Settings
|
|||||||
public bool ScreenMipmaps = true; // python.mipmaps
|
public bool ScreenMipmaps = true; // python.mipmaps
|
||||||
public bool ExtendedModelConversion; // convertmodels ("143"/"0")
|
public bool ExtendedModelConversion; // convertmodels ("143"/"0")
|
||||||
public bool GfxResourceMove; // gfx.resource.move
|
public bool GfxResourceMove; // gfx.resource.move
|
||||||
public bool GfxResourceSweep; // gfx.resource.sweep
|
public bool GfxResourceSweep = true; // gfx.resource.sweep
|
||||||
public int TrainPhysicsThreads; // async.trainThreads
|
public int TrainPhysicsThreads; // async.trainThreads
|
||||||
public bool IgnoreIrrelevantTrains; // starter.ignoreirrelevant (launcher-only)
|
public bool IgnoreIrrelevantTrains; // starter.ignoreirrelevant (launcher-only)
|
||||||
|
|
||||||
@@ -157,12 +154,8 @@ public sealed class Settings
|
|||||||
/// <summary>Anisotropic-filtering steps for the texture-quality slider (1-5).</summary>
|
/// <summary>Anisotropic-filtering steps for the texture-quality slider (1-5).</summary>
|
||||||
public static readonly int[] AnisotropySteps = { 1, 2, 4, 8, 16 };
|
public static readonly int[] AnisotropySteps = { 1, 2, 4, 8, 16 };
|
||||||
|
|
||||||
/// <summary>pyscreenrendererpriority tokens indexed by the slider value (1-5).</summary>
|
|
||||||
public static readonly string[] ScreenPriorities =
|
|
||||||
{ "off", "idle", "lowest", "lower", "normal" };
|
|
||||||
|
|
||||||
// Tokens of mousescale / shadowtune that the UI does not edit but must keep.
|
// Tokens of mousescale / shadowtune that the UI does not edit but must keep.
|
||||||
private double _mouseScaleYMagnitude = 0.5;
|
private double _mouseScaleYMagnitude = 0.2;
|
||||||
private string[] _shadowTuneExtra = { "400", "300" }; // tokens [2], [3]
|
private string[] _shadowTuneExtra = { "400", "300" }; // tokens [2], [3]
|
||||||
|
|
||||||
private ConfigFile _config = new();
|
private ConfigFile _config = new();
|
||||||
@@ -368,22 +361,30 @@ public sealed class Settings
|
|||||||
|
|
||||||
// Communication
|
// Communication
|
||||||
IgnoreGamepad = !c.GetBool("input.gamepad", true);
|
IgnoreGamepad = !c.GetBool("input.gamepad", true);
|
||||||
FeedbackMode = Clamp(c.GetInt("feedbackmode", 0), 0, 5);
|
FeedbackMode = Clamp(c.GetInt("feedbackmode", 1), 0, 5);
|
||||||
FeedbackPort = c.GetInt("feedbackport", 888);
|
FeedbackPort = c.GetInt("feedbackport", 888);
|
||||||
UartEnabled = c.Has("uart");
|
UartEnabled = c.Has("uart");
|
||||||
UartPort = c.GetString("uart", "");
|
UartPort = c.GetString("uart", "");
|
||||||
UartTune = c.GetString("uarttune", "");
|
UartTune = c.GetString("uarttune", "");
|
||||||
UartDebug = c.GetBool("uartdebug", false);
|
UartDebug = c.GetBool("uartdebug", false);
|
||||||
|
if (c.Has("uartfeature"))
|
||||||
|
{
|
||||||
var uartTokens = (c.GetRaw("uartfeature") ?? "").Split('|', StringSplitOptions.RemoveEmptyEntries);
|
var uartTokens = (c.GetRaw("uartfeature") ?? "").Split('|', StringSplitOptions.RemoveEmptyEntries);
|
||||||
var uf = new HashSet<string>(uartTokens, StringComparer.OrdinalIgnoreCase);
|
var uf = new HashSet<string>(uartTokens, StringComparer.OrdinalIgnoreCase);
|
||||||
UartMain = uf.Contains("main"); UartScnd = uf.Contains("scnd"); UartTrain = uf.Contains("train");
|
UartMain = uf.Contains("main"); UartScnd = uf.Contains("scnd"); UartTrain = uf.Contains("train");
|
||||||
UartLocal = uf.Contains("local"); UartRadioVolume = uf.Contains("radiovolume"); UartRadioChannel = uf.Contains("radiochannel");
|
UartLocal = uf.Contains("local"); UartRadioVolume = uf.Contains("radiovolume"); UartRadioChannel = uf.Contains("radiochannel");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
UartMain = UartScnd = UartTrain = UartLocal = true;
|
||||||
|
UartRadioVolume = UartRadioChannel = false;
|
||||||
|
}
|
||||||
|
|
||||||
// Other
|
// Other
|
||||||
SelectExeAutomatically = c.GetBool("starter.exe.auto", true);
|
SelectExeAutomatically = c.GetBool("starter.exe.auto", true);
|
||||||
ExecutablePath = c.GetString("starter.exe.path", "eu07.exe");
|
ExecutablePath = c.GetString("starter.exe.path", "eu07.exe");
|
||||||
DebugMode = c.GetBool("debugmode", false);
|
DebugMode = c.GetBool("debugmode", false);
|
||||||
VirtualShunting = c.GetBool("ai.trainman", false);
|
VirtualShunting = c.GetBool("ai.trainman", true);
|
||||||
LogMissingVehicleFiles = c.GetBool("starter.logmissingvehicles", false);
|
LogMissingVehicleFiles = c.GetBool("starter.logmissingvehicles", false);
|
||||||
|
|
||||||
// Graphics
|
// Graphics
|
||||||
@@ -396,12 +397,11 @@ public sealed class Settings
|
|||||||
TextureFiltering = c.GetInt("anisotropicfiltering", 8);
|
TextureFiltering = c.GetInt("anisotropicfiltering", 8);
|
||||||
Multisampling = Clamp(c.GetInt("multisampling", 2), 0, 3);
|
Multisampling = Clamp(c.GetInt("multisampling", 2), 0, 3);
|
||||||
DynamicLights = Clamp(c.GetInt("dynamiclights", 7), 0, 7);
|
DynamicLights = Clamp(c.GetInt("dynamiclights", 7), 0, 7);
|
||||||
DrawRangeFactor = c.GetDouble("gfx.drawrange.factor.max", 1.0);
|
DrawRangeFactor = c.GetDouble("gfx.drawrange.factor.max", 3.0);
|
||||||
VSync = c.GetBool("vsync", true);
|
VSync = c.GetBool("vsync", false);
|
||||||
Smoke = c.GetBool("gfx.smoke", true);
|
Smoke = c.GetBool("gfx.smoke", true);
|
||||||
SmokeFidelity = Clamp(c.GetInt("gfx.smoke.fidelity", 1), 1, 4);
|
SmokeFidelity = Clamp(c.GetInt("gfx.smoke.fidelity", 1), 1, 4);
|
||||||
Tonemapping = c.GetString("gfx.postfx.tonemapping", "reinhard").ToLowerInvariant() == "aces" ? 1 : 0;
|
ChromaticAberration = c.GetBool("gfx.postfx.chromaticaberration.enabled", true);
|
||||||
ChromaticAberration = c.GetBool("gfx.postfx.chromaticaberration.enabled", false);
|
|
||||||
MotionBlur = c.GetBool("gfx.postfx.motionblur.enabled", true);
|
MotionBlur = c.GetBool("gfx.postfx.motionblur.enabled", true);
|
||||||
ExtraEffects = c.GetBool("gfx.extraeffects", true);
|
ExtraEffects = c.GetBool("gfx.extraeffects", true);
|
||||||
EnvMap = c.GetBool("gfx.envmap.enabled", true);
|
EnvMap = c.GetBool("gfx.envmap.enabled", true);
|
||||||
@@ -410,17 +410,16 @@ public sealed class Settings
|
|||||||
ReflectionsFramerate = c.GetInt("gfx.reflections.framerate", 60);
|
ReflectionsFramerate = c.GetInt("gfx.reflections.framerate", 60);
|
||||||
|
|
||||||
var shadowTune = c.GetTokens("shadowtune");
|
var shadowTune = c.GetTokens("shadowtune");
|
||||||
if (shadowTune.Length >= 1) ShadowMapResolution = ParseInt(shadowTune[0], 4096);
|
if (shadowTune.Length >= 1) ShadowMapResolution = ParseInt(shadowTune[0], 2048);
|
||||||
if (shadowTune.Length >= 2) ShadowProjectionRange = ParseInt(shadowTune[1], 250);
|
if (shadowTune.Length >= 2) ShadowProjectionRange = ParseInt(shadowTune[1], 250);
|
||||||
if (shadowTune.Length >= 4) _shadowTuneExtra = new[] { shadowTune[2], shadowTune[3] };
|
if (shadowTune.Length >= 4) _shadowTuneExtra = new[] { shadowTune[2], shadowTune[3] };
|
||||||
|
|
||||||
CabShadowsRange = (int)Math.Round(c.GetDouble("gfx.shadows.cab.range", 30));
|
CabShadowsRange = (int)Math.Round(c.GetDouble("gfx.shadows.cab.range", 0));
|
||||||
ShadowRankCutoff = c.GetInt("gfx.shadow.rank.cutoff", 3);
|
ShadowRankCutoff = c.GetInt("gfx.shadow.rank.cutoff", 3);
|
||||||
ReflectionsFidelity = Clamp(c.GetInt("gfx.reflections.fidelity", 2), 0, 2);
|
ReflectionsFidelity = Clamp(c.GetInt("gfx.reflections.fidelity", 0), 0, 2);
|
||||||
FieldOfView = Clamp((int)Math.Round(c.GetDouble("fieldofview", 45)), 15, 75);
|
FieldOfView = Clamp((int)Math.Round(c.GetDouble("fieldofview", 45)), 15, 75);
|
||||||
PythonScreens = c.GetBool("python.enabled", true);
|
PythonScreens = c.GetBool("python.enabled", true);
|
||||||
PythonThreadedUpload = c.GetBool("python.threadedupload", true);
|
PythonThreadedUpload = c.GetBool("python.threadedupload", true);
|
||||||
ScreenRendererPriority = IndexOf(ScreenPriorities, c.GetString("pyscreenrendererpriority", "lower"), 3) + 1;
|
|
||||||
FpsLimitEnabled = c.Has("fpslimit");
|
FpsLimitEnabled = c.Has("fpslimit");
|
||||||
FpsLimit = Clamp(c.GetInt("fpslimit", 30), 1, 100);
|
FpsLimit = Clamp(c.GetInt("fpslimit", 30), 1, 100);
|
||||||
ShadowAngleLimit = c.GetDouble("gfx.shadow.angle.min", 0.2);
|
ShadowAngleLimit = c.GetDouble("gfx.shadow.angle.min", 0.2);
|
||||||
@@ -431,7 +430,7 @@ public sealed class Settings
|
|||||||
SplineFidelity = Clamp(c.GetInt("splinefidelity", 1), 1, 4);
|
SplineFidelity = Clamp(c.GetInt("splinefidelity", 1), 1, 4);
|
||||||
FullPhysics = c.GetBool("fullphysics", true);
|
FullPhysics = c.GetBool("fullphysics", true);
|
||||||
EnableTraction = c.GetBool("enabletraction", true);
|
EnableTraction = c.GetBool("enabletraction", true);
|
||||||
LiveTraction = c.GetBool("livetraction", false);
|
LiveTraction = c.GetBool("livetraction", true);
|
||||||
PhysicsLog = c.GetBool("physicslog", false);
|
PhysicsLog = c.GetBool("physicslog", false);
|
||||||
DebugLog = c.GetInt("debuglog", 3) != 0;
|
DebugLog = c.GetInt("debuglog", 3) != 0;
|
||||||
MultipleLogs = c.GetBool("multiplelogs", false);
|
MultipleLogs = c.GetBool("multiplelogs", false);
|
||||||
@@ -439,16 +438,15 @@ public sealed class Settings
|
|||||||
CrashDamage = c.GetBool("crashdamage", true);
|
CrashDamage = c.GetBool("crashdamage", true);
|
||||||
Friction = c.GetDouble("friction", 1.0);
|
Friction = c.GetDouble("friction", 1.0);
|
||||||
BrakeStep = c.GetDouble("brakestep", 1.0);
|
BrakeStep = c.GetDouble("brakestep", 1.0);
|
||||||
BrakeSpeed = c.GetDouble("brakespeed", 1.0);
|
BrakeSpeed = c.GetDouble("brakespeed", 3.0);
|
||||||
|
|
||||||
// Sound
|
// Sound
|
||||||
SoundEnabled = c.GetBool("soundenabled", true);
|
SoundEnabled = c.GetBool("soundenabled", true);
|
||||||
Volume = Clamp((int)Math.Round(c.GetDouble("sound.volume", 1.5) * 50), 1, 100);
|
Volume = Clamp((int)Math.Round(c.GetDouble("sound.volume", 1.0) * 50), 1, 100);
|
||||||
RadioVolume = Clamp((int)Math.Round(c.GetDouble("sound.volume.radio", 0.8) * 100), 1, 100);
|
RadioVolume = Clamp((int)Math.Round(c.GetDouble("sound.volume.radio", 0.75) * 100), 1, 100);
|
||||||
VehiclesVolume = Clamp((int)Math.Round(c.GetDouble("sound.volume.vehicle", 1.0) * 100), 1, 100);
|
VehiclesVolume = Clamp((int)Math.Round(c.GetDouble("sound.volume.vehicle", 1.0) * 100), 1, 100);
|
||||||
PositionalVolume = Clamp((int)Math.Round(c.GetDouble("sound.volume.positional", 1.0) * 100), 1, 100);
|
PositionalVolume = Clamp((int)Math.Round(c.GetDouble("sound.volume.positional", 1.0) * 100), 1, 100);
|
||||||
AmbientVolume = Clamp((int)Math.Round(c.GetDouble("sound.volume.ambient", 0.8) * 100), 1, 100);
|
AmbientVolume = Clamp((int)Math.Round(c.GetDouble("sound.volume.ambient", 1.0) * 100), 1, 100);
|
||||||
PausedVolume = Clamp((int)Math.Round(c.GetDouble("sound.volume.paused", 0.0) * 100), 0, 100);
|
|
||||||
|
|
||||||
// Advanced
|
// Advanced
|
||||||
CompressTextures = c.GetBool("compresstex", true);
|
CompressTextures = c.GetBool("compresstex", true);
|
||||||
@@ -458,7 +456,7 @@ public sealed class Settings
|
|||||||
ScreenMipmaps = c.GetBool("python.mipmaps", true);
|
ScreenMipmaps = c.GetBool("python.mipmaps", true);
|
||||||
ExtendedModelConversion = c.GetInt("convertmodels", 0) != 0;
|
ExtendedModelConversion = c.GetInt("convertmodels", 0) != 0;
|
||||||
GfxResourceMove = c.GetBool("gfx.resource.move", false);
|
GfxResourceMove = c.GetBool("gfx.resource.move", false);
|
||||||
GfxResourceSweep = c.GetBool("gfx.resource.sweep", false);
|
GfxResourceSweep = c.GetBool("gfx.resource.sweep", true);
|
||||||
TrainPhysicsThreads = Clamp(c.GetInt("async.trainThreads", 0), 0, Environment.ProcessorCount);
|
TrainPhysicsThreads = Clamp(c.GetInt("async.trainThreads", 0), 0, Environment.ProcessorCount);
|
||||||
IgnoreIrrelevantTrains = c.GetBool("starter.ignoreirrelevant", false);
|
IgnoreIrrelevantTrains = c.GetBool("starter.ignoreirrelevant", false);
|
||||||
|
|
||||||
@@ -526,7 +524,6 @@ public sealed class Settings
|
|||||||
c.SetBool("vsync", VSync);
|
c.SetBool("vsync", VSync);
|
||||||
c.SetBool("gfx.smoke", Smoke);
|
c.SetBool("gfx.smoke", Smoke);
|
||||||
c.SetInt("gfx.smoke.fidelity", SmokeFidelity);
|
c.SetInt("gfx.smoke.fidelity", SmokeFidelity);
|
||||||
c.Set("gfx.postfx.tonemapping", Tonemapping == 1 ? "aces" : "reinhard");
|
|
||||||
c.SetBool("gfx.postfx.chromaticaberration.enabled", ChromaticAberration);
|
c.SetBool("gfx.postfx.chromaticaberration.enabled", ChromaticAberration);
|
||||||
c.SetBool("gfx.postfx.motionblur.enabled", MotionBlur);
|
c.SetBool("gfx.postfx.motionblur.enabled", MotionBlur);
|
||||||
c.SetBool("gfx.extraeffects", ExtraEffects);
|
c.SetBool("gfx.extraeffects", ExtraEffects);
|
||||||
@@ -544,8 +541,6 @@ public sealed class Settings
|
|||||||
c.SetInt("fieldofview", FieldOfView);
|
c.SetInt("fieldofview", FieldOfView);
|
||||||
c.SetBool("python.enabled", PythonScreens);
|
c.SetBool("python.enabled", PythonScreens);
|
||||||
c.SetBool("python.threadedupload", PythonThreadedUpload);
|
c.SetBool("python.threadedupload", PythonThreadedUpload);
|
||||||
c.Set("pyscreenrendererpriority",
|
|
||||||
ScreenPriorities[Clamp(ScreenRendererPriority - 1, 0, ScreenPriorities.Length - 1)]);
|
|
||||||
if (FpsLimitEnabled) c.SetInt("fpslimit", FpsLimit); else c.Remove("fpslimit");
|
if (FpsLimitEnabled) c.SetInt("fpslimit", FpsLimit); else c.Remove("fpslimit");
|
||||||
c.SetDouble("gfx.shadow.angle.min", ShadowAngleLimit);
|
c.SetDouble("gfx.shadow.angle.min", ShadowAngleLimit);
|
||||||
c.SetBool("fullscreenwindowed", FullscreenWindowed);
|
c.SetBool("fullscreenwindowed", FullscreenWindowed);
|
||||||
@@ -572,7 +567,6 @@ public sealed class Settings
|
|||||||
c.SetDouble("sound.volume.vehicle", VehiclesVolume / 100.0);
|
c.SetDouble("sound.volume.vehicle", VehiclesVolume / 100.0);
|
||||||
c.SetDouble("sound.volume.positional", PositionalVolume / 100.0);
|
c.SetDouble("sound.volume.positional", PositionalVolume / 100.0);
|
||||||
c.SetDouble("sound.volume.ambient", AmbientVolume / 100.0);
|
c.SetDouble("sound.volume.ambient", AmbientVolume / 100.0);
|
||||||
c.SetDouble("sound.volume.paused", PausedVolume / 100.0);
|
|
||||||
|
|
||||||
// Advanced
|
// Advanced
|
||||||
c.SetBool("compresstex", CompressTextures);
|
c.SetBool("compresstex", CompressTextures);
|
||||||
|
|||||||
@@ -200,13 +200,6 @@
|
|||||||
<Slider x:Name="SmokeParticlesSlider" Minimum="1" MaxWidth="400" HorizontalAlignment="Left"
|
<Slider x:Name="SmokeParticlesSlider" Minimum="1" MaxWidth="400" HorizontalAlignment="Left"
|
||||||
MinWidth="250" Maximum="4" TickFrequency="1" IsSnapToTickEnabled="True" Value="2" />
|
MinWidth="250" Maximum="4" TickFrequency="1" IsSnapToTickEnabled="True" Value="2" />
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
<StackPanel Spacing="8" Orientation="Horizontal">
|
|
||||||
<TextBlock VerticalAlignment="Center" FontSize="14" Text="{Binding [Postprocessing], Source={x:Static starterNg:App.Loc}}" />
|
|
||||||
<ComboBox x:Name="PostprocessingCb" MinWidth="150" MaxWidth="150" SelectedIndex="0">
|
|
||||||
<ComboBoxItem Content="{Binding [PPReinhard], Source={x:Static starterNg:App.Loc}}" />
|
|
||||||
<ComboBoxItem Content="{Binding [PPACES], Source={x:Static starterNg:App.Loc}}" />
|
|
||||||
</ComboBox>
|
|
||||||
</StackPanel>
|
|
||||||
<CheckBox x:Name="ChromaticAberrationCb" Content="{Binding [ChromaticAberration], Source={x:Static starterNg:App.Loc}}" />
|
<CheckBox x:Name="ChromaticAberrationCb" Content="{Binding [ChromaticAberration], Source={x:Static starterNg:App.Loc}}" />
|
||||||
<CheckBox x:Name="MotionBlurCb" Content="{Binding [MotionBlur], Source={x:Static starterNg:App.Loc}}" />
|
<CheckBox x:Name="MotionBlurCb" Content="{Binding [MotionBlur], Source={x:Static starterNg:App.Loc}}" />
|
||||||
<CheckBox x:Name="AdditionalShadersCb" Content="{Binding [AdditionalShadersEffects], Source={x:Static starterNg:App.Loc}}" />
|
<CheckBox x:Name="AdditionalShadersCb" Content="{Binding [AdditionalShadersEffects], Source={x:Static starterNg:App.Loc}}" />
|
||||||
@@ -262,11 +255,6 @@
|
|||||||
</StackPanel>
|
</StackPanel>
|
||||||
<CheckBox x:Name="RenderScreensCb" Content="{Binding [RenderScreens], Source={x:Static starterNg:App.Loc}}" />
|
<CheckBox x:Name="RenderScreensCb" Content="{Binding [RenderScreens], Source={x:Static starterNg:App.Loc}}" />
|
||||||
<CheckBox x:Name="RenderScreensThreadCb" Content="{Binding [RenderScreensThread], Source={x:Static starterNg:App.Loc}}" />
|
<CheckBox x:Name="RenderScreensThreadCb" Content="{Binding [RenderScreensThread], Source={x:Static starterNg:App.Loc}}" />
|
||||||
<StackPanel Spacing="8" Orientation="Horizontal">
|
|
||||||
<TextBlock VerticalAlignment="Center" FontSize="14" Text="{Binding [RenderScreensFramerate], Source={x:Static starterNg:App.Loc}}" />
|
|
||||||
<Slider x:Name="RenderScreensFramerateSlider" Minimum="1" MaxWidth="400" HorizontalAlignment="Left"
|
|
||||||
MinWidth="250" Maximum="5" TickFrequency="1" IsSnapToTickEnabled="True" Value="5" />
|
|
||||||
</StackPanel>
|
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</ScrollViewer>
|
</ScrollViewer>
|
||||||
</TabItem>
|
</TabItem>
|
||||||
@@ -337,11 +325,6 @@
|
|||||||
<Slider x:Name="AmbientVolumeSlider" Minimum="1" MaxWidth="400" HorizontalAlignment="Left"
|
<Slider x:Name="AmbientVolumeSlider" Minimum="1" MaxWidth="400" HorizontalAlignment="Left"
|
||||||
MinWidth="250" Maximum="100" TickFrequency="5" IsSnapToTickEnabled="True" Value="100" />
|
MinWidth="250" Maximum="100" TickFrequency="5" IsSnapToTickEnabled="True" Value="100" />
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
<StackPanel Spacing="8" Orientation="Horizontal">
|
|
||||||
<TextBlock VerticalAlignment="Center" FontSize="14" Text="{Binding [VolumeDuringPause], Source={x:Static starterNg:App.Loc}}" />
|
|
||||||
<Slider x:Name="PauseVolumeSlider" Minimum="0" MaxWidth="400" HorizontalAlignment="Left"
|
|
||||||
MinWidth="250" Maximum="100" TickFrequency="5" IsSnapToTickEnabled="True" Value="0" />
|
|
||||||
</StackPanel>
|
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</ScrollViewer>
|
</ScrollViewer>
|
||||||
</TabItem>
|
</TabItem>
|
||||||
|
|||||||
@@ -186,7 +186,6 @@ public partial class Settings : UserControl
|
|||||||
VSyncCb.IsChecked = s.VSync;
|
VSyncCb.IsChecked = s.VSync;
|
||||||
SmokeDisplayCb.IsChecked = s.Smoke;
|
SmokeDisplayCb.IsChecked = s.Smoke;
|
||||||
SmokeParticlesSlider.Value = s.SmokeFidelity;
|
SmokeParticlesSlider.Value = s.SmokeFidelity;
|
||||||
PostprocessingCb.SelectedIndex = s.Tonemapping;
|
|
||||||
ChromaticAberrationCb.IsChecked = s.ChromaticAberration;
|
ChromaticAberrationCb.IsChecked = s.ChromaticAberration;
|
||||||
MotionBlurCb.IsChecked = s.MotionBlur;
|
MotionBlurCb.IsChecked = s.MotionBlur;
|
||||||
AdditionalShadersCb.IsChecked = s.ExtraEffects;
|
AdditionalShadersCb.IsChecked = s.ExtraEffects;
|
||||||
@@ -202,7 +201,6 @@ public partial class Settings : UserControl
|
|||||||
fovSlider.Value = s.FieldOfView;
|
fovSlider.Value = s.FieldOfView;
|
||||||
RenderScreensCb.IsChecked = s.PythonScreens;
|
RenderScreensCb.IsChecked = s.PythonScreens;
|
||||||
RenderScreensThreadCb.IsChecked = s.PythonThreadedUpload;
|
RenderScreensThreadCb.IsChecked = s.PythonThreadedUpload;
|
||||||
RenderScreensFramerateSlider.Value = s.ScreenRendererPriority;
|
|
||||||
FpsLimitEnableCb.IsChecked = s.FpsLimitEnabled;
|
FpsLimitEnableCb.IsChecked = s.FpsLimitEnabled;
|
||||||
FpsLimitSlider.Value = s.FpsLimit;
|
FpsLimitSlider.Value = s.FpsLimit;
|
||||||
FpsLimitSlider.IsEnabled = s.FpsLimitEnabled;
|
FpsLimitSlider.IsEnabled = s.FpsLimitEnabled;
|
||||||
@@ -231,7 +229,6 @@ public partial class Settings : UserControl
|
|||||||
VehiclesVolumeSlider.Value = s.VehiclesVolume;
|
VehiclesVolumeSlider.Value = s.VehiclesVolume;
|
||||||
PositionalVolumeSlider.Value = s.PositionalVolume;
|
PositionalVolumeSlider.Value = s.PositionalVolume;
|
||||||
AmbientVolumeSlider.Value = s.AmbientVolume;
|
AmbientVolumeSlider.Value = s.AmbientVolume;
|
||||||
PauseVolumeSlider.Value = s.PausedVolume;
|
|
||||||
|
|
||||||
// Advanced
|
// Advanced
|
||||||
CompressTexturesCb.IsChecked = s.CompressTextures;
|
CompressTexturesCb.IsChecked = s.CompressTextures;
|
||||||
@@ -308,7 +305,6 @@ public partial class Settings : UserControl
|
|||||||
s.VSync = IsChecked(VSyncCb);
|
s.VSync = IsChecked(VSyncCb);
|
||||||
s.Smoke = IsChecked(SmokeDisplayCb);
|
s.Smoke = IsChecked(SmokeDisplayCb);
|
||||||
s.SmokeFidelity = (int)SmokeParticlesSlider.Value;
|
s.SmokeFidelity = (int)SmokeParticlesSlider.Value;
|
||||||
s.Tonemapping = Math.Max(0, PostprocessingCb.SelectedIndex);
|
|
||||||
s.ChromaticAberration = IsChecked(ChromaticAberrationCb);
|
s.ChromaticAberration = IsChecked(ChromaticAberrationCb);
|
||||||
s.MotionBlur = IsChecked(MotionBlurCb);
|
s.MotionBlur = IsChecked(MotionBlurCb);
|
||||||
s.ExtraEffects = IsChecked(AdditionalShadersCb);
|
s.ExtraEffects = IsChecked(AdditionalShadersCb);
|
||||||
@@ -324,7 +320,6 @@ public partial class Settings : UserControl
|
|||||||
s.FieldOfView = Clamp((int)fovSlider.Value, 15, 75);
|
s.FieldOfView = Clamp((int)fovSlider.Value, 15, 75);
|
||||||
s.PythonScreens = IsChecked(RenderScreensCb);
|
s.PythonScreens = IsChecked(RenderScreensCb);
|
||||||
s.PythonThreadedUpload = IsChecked(RenderScreensThreadCb);
|
s.PythonThreadedUpload = IsChecked(RenderScreensThreadCb);
|
||||||
s.ScreenRendererPriority = (int)RenderScreensFramerateSlider.Value;
|
|
||||||
s.FpsLimitEnabled = IsChecked(FpsLimitEnableCb);
|
s.FpsLimitEnabled = IsChecked(FpsLimitEnableCb);
|
||||||
s.FpsLimit = (int)FpsLimitSlider.Value;
|
s.FpsLimit = (int)FpsLimitSlider.Value;
|
||||||
s.ShadowAngleLimit = ShadowAngleLimitSlider.Value;
|
s.ShadowAngleLimit = ShadowAngleLimitSlider.Value;
|
||||||
@@ -352,7 +347,6 @@ public partial class Settings : UserControl
|
|||||||
s.VehiclesVolume = (int)VehiclesVolumeSlider.Value;
|
s.VehiclesVolume = (int)VehiclesVolumeSlider.Value;
|
||||||
s.PositionalVolume = (int)PositionalVolumeSlider.Value;
|
s.PositionalVolume = (int)PositionalVolumeSlider.Value;
|
||||||
s.AmbientVolume = (int)AmbientVolumeSlider.Value;
|
s.AmbientVolume = (int)AmbientVolumeSlider.Value;
|
||||||
s.PausedVolume = (int)PauseVolumeSlider.Value;
|
|
||||||
|
|
||||||
// Advanced
|
// Advanced
|
||||||
s.CompressTextures = IsChecked(CompressTexturesCb);
|
s.CompressTextures = IsChecked(CompressTexturesCb);
|
||||||
|
|||||||
@@ -268,10 +268,6 @@
|
|||||||
<String key="SmokeDisplay">Smoke display</String>
|
<String key="SmokeDisplay">Smoke display</String>
|
||||||
<String key="SmokeParticlesMultiplier">Smoke particles multiplier</String>
|
<String key="SmokeParticlesMultiplier">Smoke particles multiplier</String>
|
||||||
|
|
||||||
<String key="Postprocessing">Post-processing</String>
|
|
||||||
<String key="PPReinhard">Reinhard</String>
|
|
||||||
<String key="PPACES">ACES</String>
|
|
||||||
|
|
||||||
<String key="ChromaticAberration">Chromatic aberration</String>
|
<String key="ChromaticAberration">Chromatic aberration</String>
|
||||||
<String key="MotionBlur">Motion blur</String>
|
<String key="MotionBlur">Motion blur</String>
|
||||||
<String key="AdditionalShadersEffects">Additional shader effects</String>
|
<String key="AdditionalShadersEffects">Additional shader effects</String>
|
||||||
@@ -296,7 +292,6 @@
|
|||||||
<String key="FieldOfView">View angle</String>
|
<String key="FieldOfView">View angle</String>
|
||||||
<String key="RenderScreens">Render onboard computer screens</String>
|
<String key="RenderScreens">Render onboard computer screens</String>
|
||||||
<String key="RenderScreensThread">Render screens in a separate thread</String>
|
<String key="RenderScreensThread">Render screens in a separate thread</String>
|
||||||
<String key="RenderScreensFramerate">Onboard screens refresh rate</String>
|
|
||||||
|
|
||||||
<String key="Physics">Physics</String>
|
<String key="Physics">Physics</String>
|
||||||
|
|
||||||
@@ -320,7 +315,6 @@
|
|||||||
<String key="VehiclesVolume">Vehicles volume</String>
|
<String key="VehiclesVolume">Vehicles volume</String>
|
||||||
<String key="PositionedSoundsVolume">Positional sounds volume</String>
|
<String key="PositionedSoundsVolume">Positional sounds volume</String>
|
||||||
<String key="AmbientVolume">Ambient volume</String>
|
<String key="AmbientVolume">Ambient volume</String>
|
||||||
<String key="VolumeDuringPause">Volume during pause</String>
|
|
||||||
|
|
||||||
<String key="Advanced">Advanced</String>
|
<String key="Advanced">Advanced</String>
|
||||||
<String key="CompressTextures">Compress TGA textures</String>
|
<String key="CompressTextures">Compress TGA textures</String>
|
||||||
|
|||||||
@@ -268,10 +268,6 @@
|
|||||||
<String key="SmokeDisplay">Wyświetlanie dymu</String>
|
<String key="SmokeDisplay">Wyświetlanie dymu</String>
|
||||||
<String key="SmokeParticlesMultiplier">Mnożnik ilości cząsteczek dymu</String>
|
<String key="SmokeParticlesMultiplier">Mnożnik ilości cząsteczek dymu</String>
|
||||||
|
|
||||||
<String key="Postprocessing">Postprocessing</String>
|
|
||||||
<String key="PPReinhard">Reinhard</String>
|
|
||||||
<String key="PPACES">ACES</String>
|
|
||||||
|
|
||||||
<String key="ChromaticAberration">Aberracja chromatyczna</String>
|
<String key="ChromaticAberration">Aberracja chromatyczna</String>
|
||||||
<String key="MotionBlur">Rozmycie podczas ruchu</String>
|
<String key="MotionBlur">Rozmycie podczas ruchu</String>
|
||||||
<String key="AdditionalShadersEffects">Dodatkowe efekty shaderów</String>
|
<String key="AdditionalShadersEffects">Dodatkowe efekty shaderów</String>
|
||||||
@@ -296,7 +292,6 @@
|
|||||||
<String key="FieldOfView">Kąt widzenia</String>
|
<String key="FieldOfView">Kąt widzenia</String>
|
||||||
<String key="RenderScreens">Renderowanie ekranów komputerów pokładowych</String>
|
<String key="RenderScreens">Renderowanie ekranów komputerów pokładowych</String>
|
||||||
<String key="RenderScreensThread">Renderowanie ekranów w osobnym wątku</String>
|
<String key="RenderScreensThread">Renderowanie ekranów w osobnym wątku</String>
|
||||||
<String key="RenderScreensFramerate">Częstotliwość odświeżania ekranów komputerów pokładowych</String>
|
|
||||||
|
|
||||||
<String key="Physics">Fizyka</String>
|
<String key="Physics">Fizyka</String>
|
||||||
|
|
||||||
@@ -320,7 +315,6 @@
|
|||||||
<String key="VehiclesVolume">Głośność pojazdów</String>
|
<String key="VehiclesVolume">Głośność pojazdów</String>
|
||||||
<String key="PositionedSoundsVolume">Głośność dżwięków pozycjonowanych</String>
|
<String key="PositionedSoundsVolume">Głośność dżwięków pozycjonowanych</String>
|
||||||
<String key="AmbientVolume">Głośność otoczenia</String>
|
<String key="AmbientVolume">Głośność otoczenia</String>
|
||||||
<String key="VolumeDuringPause">Głośność podczas pauzy</String>
|
|
||||||
|
|
||||||
<String key="Advanced">Zaawansowane</String>
|
<String key="Advanced">Zaawansowane</String>
|
||||||
<String key="CompressTextures">Kompresuj tekstury TGA</String>
|
<String key="CompressTextures">Kompresuj tekstury TGA</String>
|
||||||
|
|||||||
Reference in New Issue
Block a user