using System.Text.Json.Serialization; using SPTarkov.Server.Core.Models.Eft.Common; namespace SPTarkov.Server.Core.Models.Spt.Server; public record SettingsBase { [JsonExtensionData] public Dictionary? ExtensionData { get; set; } [JsonPropertyName("config")] public Config Configuration { get; set; } } public record Config { [JsonExtensionData] public Dictionary? ExtensionData { get; set; } [JsonPropertyName("AFKTimeoutSeconds")] public int AFKTimeoutSeconds { get; set; } [JsonPropertyName("AdditionalRandomDelaySeconds")] public int AdditionalRandomDelaySeconds { get; set; } [JsonPropertyName("AudioSettings")] public AudioSettings AudioSettings { get; set; } [JsonPropertyName("ClientSendRateLimit")] public int ClientSendRateLimit { get; set; } [JsonPropertyName("CriticalRetriesCount")] public int CriticalRetriesCount { get; set; } [JsonPropertyName("DefaultRetriesCount")] public int DefaultRetriesCount { get; set; } [JsonPropertyName("FirstCycleDelaySeconds")] public int FirstCycleDelaySeconds { get; set; } [JsonPropertyName("FramerateLimit")] public FramerateLimit FramerateLimit { get; set; } [JsonPropertyName("GroupStatusInterval")] public int GroupStatusInterval { get; set; } [JsonPropertyName("GroupStatusButtonInterval")] public int GroupStatusButtonInterval { get; set; } [JsonPropertyName("KeepAliveInterval")] public int KeepAliveInterval { get; set; } [JsonPropertyName("LobbyKeepAliveInterval")] public int LobbyKeepAliveInterval { get; set; } [JsonPropertyName("Mark502and504AsNonImportant")] public bool Mark502and504AsNonImportant { get; set; } [JsonPropertyName("MemoryManagementSettings")] public MemoryManagementSettings MemoryManagementSettings { get; set; } [JsonPropertyName("NVidiaHighlights")] public bool NVidiaHighlights { get; set; } [JsonPropertyName("NextCycleDelaySeconds")] public int NextCycleDelaySeconds { get; set; } [JsonPropertyName("PingServerResultSendInterval")] public int PingServerResultSendInterval { get; set; } [JsonPropertyName("PingServersInterval")] public int PingServersInterval { get; set; } [JsonPropertyName("ReleaseProfiler")] public ReleaseProfiler ReleaseProfiler { get; set; } [JsonPropertyName("RequestConfirmationTimeouts")] public List RequestConfirmationTimeouts { get; set; } [JsonPropertyName("RequestsMadeThroughLobby")] public List RequestsMadeThroughLobby { get; set; } [JsonPropertyName("SecondCycleDelaySeconds")] public int SecondCycleDelaySeconds { get; set; } [JsonPropertyName("ShouldEstablishLobbyConnection")] public bool ShouldEstablishLobbyConnection { get; set; } [JsonPropertyName("TurnOffLogging")] public bool TurnOffLogging { get; set; } [JsonPropertyName("WeaponOverlapDistanceCulling")] public int WeaponOverlapDistanceCulling { get; set; } [JsonPropertyName("WebDiagnosticsEnabled")] public bool WebDiagnosticsEnabled { get; set; } [JsonPropertyName("NetworkStateView")] public NetworkStateView NetworkStateView { get; set; } [JsonPropertyName("WsReconnectionDelays")] public List WsReconnectionDelays { get; set; } } public record AudioSettings { [JsonExtensionData] public Dictionary? ExtensionData { get; set; } [JsonPropertyName("AudioGroupPresets")] public List AudioGroupPresets { get; set; } [JsonPropertyName("EnvironmentSettings")] public EnvironmentSettings EnvironmentSettings { get; set; } [JsonPropertyName("HeadphonesSettings")] public HeadphoneSettings HeadphonesSettings { get; set; } [JsonPropertyName("MetaXRAudioPluginSettings")] public MetaXRAudioPluginSettings MetaXRAudioPluginSettings { get; set; } [JsonPropertyName("PlayerSettings")] public PlayerSettings PlayerSettings { get; set; } [JsonPropertyName("RadioBroadcastSettings")] public RadioBroadcastSettings RadioBroadcastSettings { get; set; } } public record FramerateLimit { [JsonExtensionData] public Dictionary? ExtensionData { get; set; } [JsonPropertyName("MaxFramerateGameLimit")] public int MaxFramerateGameLimit { get; set; } [JsonPropertyName("MaxFramerateLobbyLimit")] public int MaxFramerateLobbyLimit { get; set; } [JsonPropertyName("MinFramerateLimit")] public int MinFramerateLimit { get; set; } } public record MemoryManagementSettings { [JsonExtensionData] public Dictionary? ExtensionData { get; set; } [JsonPropertyName("AggressiveGC")] public bool AggressiveGC { get; set; } [JsonPropertyName("GigabytesRequiredToDisableGCDuringRaid")] public int GigabytesRequiredToDisableGCDuringRaid { get; set; } [JsonPropertyName("HeapPreAllocationEnabled")] public bool HeapPreAllocationEnabled { get; set; } [JsonPropertyName("HeapPreAllocationMB")] public int HeapPreAllocationMB { get; set; } [JsonPropertyName("OverrideRamCleanerSettings")] public bool OverrideRamCleanerSettings { get; set; } [JsonPropertyName("RamCleanerEnabled")] public bool RamCleanerEnabled { get; set; } } public record ReleaseProfiler { [JsonExtensionData] public Dictionary? ExtensionData { get; set; } [JsonPropertyName("Enabled")] public bool Enabled { get; set; } [JsonPropertyName("MaxRecords")] public int MaxRecords { get; set; } [JsonPropertyName("RecordTriggerValue")] public int RecordTriggerValue { get; set; } } public record NetworkStateView { [JsonExtensionData] public Dictionary? ExtensionData { get; set; } [JsonPropertyName("LossThreshold")] public int LossThreshold { get; set; } [JsonPropertyName("RttThreshold")] public int RttThreshold { get; set; } } public record AudioGroupPreset { [JsonExtensionData] public Dictionary? ExtensionData { get; set; } [JsonPropertyName("AngleToAllowBinaural")] public double? AngleToAllowBinaural { get; set; } [JsonPropertyName("DisabledBinauralByDistance")] public bool? DisabledBinauralByDistance { get; set; } [JsonPropertyName("DistanceToAllowBinaural")] public double? DistanceToAllowBinaural { get; set; } [JsonPropertyName("GroupType")] public double? GroupType { get; set; } [JsonPropertyName("HeightToAllowBinaural")] public double? HeightToAllowBinaural { get; set; } [JsonPropertyName("Name")] public string? Name { get; set; } [JsonPropertyName("OcclusionEnabled")] public bool? OcclusionEnabled { get; set; } [JsonPropertyName("OcclusionIntensity")] public double? OcclusionIntensity { get; set; } [JsonPropertyName("OcclusionRolloffScale")] public double? OcclusionRolloffScale { get; set; } [JsonPropertyName("OverallVolume")] public double? OverallVolume { get; set; } } public record EnvironmentSettings { [JsonExtensionData] public Dictionary? ExtensionData { get; set; } [JsonPropertyName("AutumnLateSettings")] public SeasonEnvironmentSettings AutumnLateSettings { get; set; } [JsonPropertyName("AutumnSettings")] public SeasonEnvironmentSettings AutumnSettings { get; set; } [JsonPropertyName("SpringEarlySettings")] public SeasonEnvironmentSettings SpringEarlySettings { get; set; } [JsonPropertyName("SpringSettings")] public SeasonEnvironmentSettings SpringSettings { get; set; } [JsonPropertyName("StormSettings")] public SeasonEnvironmentSettings StormSettings { get; set; } [JsonPropertyName("SummerSettings")] public SeasonEnvironmentSettings SummerSettings { get; set; } [JsonPropertyName("WinterSettings")] public SeasonEnvironmentSettings WinterSettings { get; set; } [JsonPropertyName("SurfaceMultipliers")] public List? SurfaceMultipliers { get; set; } } public record SeasonEnvironmentSettings { [JsonExtensionData] public Dictionary? ExtensionData { get; set; } [JsonPropertyName("RainSettings")] public List RainSettings { get; set; } [JsonPropertyName("StepsVolumeMultiplier")] public double StepsVolumeMultiplier { get; set; } [JsonPropertyName("WindMultipliers")] public List WindMultipliers { get; set; } } public record SurfaceMultiplier { [JsonExtensionData] public Dictionary? ExtensionData { get; set; } public string SurfaceType { get; set; } public double VolumeMult { get; set; } } public record WindMultiplier { [JsonExtensionData] public Dictionary? ExtensionData { get; set; } [JsonPropertyName("VolumeMult")] public double VolumeMult { get; set; } [JsonPropertyName("WindSpeed")] public string WindSpeed { get; set; } } public record RainSetting { [JsonExtensionData] public Dictionary? ExtensionData { get; set; } [JsonPropertyName("IndoorVolumeMult")] public int IndoorVolumeMult { get; set; } [JsonPropertyName("OutdoorVolumeMult")] public double OutdoorVolumeMult { get; set; } [JsonPropertyName("RainIntensity")] public string RainIntensity { get; set; } } public record HeadphoneSettings { [JsonExtensionData] public Dictionary? ExtensionData { get; set; } public double FadeDuration { get; set; } public string FadeIn { get; set; } public string FadeOut { get; set; } } public record MetaXRAudioPluginSettings { [JsonExtensionData] public Dictionary? ExtensionData { get; set; } public bool? EnabledPluginErrorChecker { get; set; } public double? OutputVolumeCheckCooldown { get; set; } }