diff --git a/Content.Client/Options/UI/Tabs/AccessibilityTab.xaml b/Content.Client/Options/UI/Tabs/AccessibilityTab.xaml index 5a389ca491..2000bc81f3 100644 --- a/Content.Client/Options/UI/Tabs/AccessibilityTab.xaml +++ b/Content.Client/Options/UI/Tabs/AccessibilityTab.xaml @@ -8,6 +8,7 @@ StyleClasses="LabelKeyText"/> + diff --git a/Content.Client/Options/UI/Tabs/AccessibilityTab.xaml.cs b/Content.Client/Options/UI/Tabs/AccessibilityTab.xaml.cs index f33da4c501..e3fb90e156 100644 --- a/Content.Client/Options/UI/Tabs/AccessibilityTab.xaml.cs +++ b/Content.Client/Options/UI/Tabs/AccessibilityTab.xaml.cs @@ -16,6 +16,7 @@ public sealed partial class AccessibilityTab : Control Control.AddOptionCheckBox(CCVars.AccessibilityColorblindFriendly, ColorblindFriendlyCheckBox); Control.AddOptionCheckBox(CCVars.ReducedMotion, ReducedMotionCheckBox); Control.AddOptionCheckBox(CCVars.DisableAiStatic, DisableAiStaticCheckBox); + Control.AddOptionCheckBox(CCVars.DisableNightVisionNoise, DisableNightVisionNoiseCheckBox); Control.AddOptionPercentSlider(CCVars.ScreenShakeIntensity, ScreenShakeIntensitySlider); Control.AddOptionPercentSlider(CCVars.ChatWindowOpacity, ChatWindowOpacitySlider); Control.AddOptionPercentSlider(CCVars.SpeechBubbleTextOpacity, SpeechBubbleTextOpacitySlider); diff --git a/Content.Client/Overlays/NightVisionOverlay.cs b/Content.Client/Overlays/NightVisionOverlay.cs index 1feba79bc0..613c4500fa 100644 --- a/Content.Client/Overlays/NightVisionOverlay.cs +++ b/Content.Client/Overlays/NightVisionOverlay.cs @@ -1,4 +1,6 @@ +using Content.Shared.CCVar; using Robust.Client.Graphics; +using Robust.Shared.Configuration; using Robust.Shared.Enums; using Robust.Shared.Prototypes; @@ -10,6 +12,7 @@ namespace Content.Client.Overlays; public sealed partial class NightVisionOverlay : Overlay { [Dependency] private IPrototypeManager _prototypeManager = default!; + [Dependency] private IConfigurationManager _configManager = default!; private static readonly ProtoId Shader = "NightVision"; private readonly ShaderInstance _nightVisionShader; @@ -19,6 +22,8 @@ public sealed partial class NightVisionOverlay : Overlay public float NoiseAmount { get; private set; } public float NoiseMultiplier { get; private set; } + public bool DisableNoise = false; + public override OverlaySpace Space => OverlaySpace.BeforeLighting | OverlaySpace.WorldSpace; public override bool RequestScreenTexture => true; @@ -26,6 +31,12 @@ public sealed partial class NightVisionOverlay : Overlay { IoCManager.InjectDependencies(this); _nightVisionShader = _prototypeManager.Index(Shader).InstanceUnique(); + _configManager.OnValueChanged(CCVars.DisableNightVisionNoise, OnNightVisionNoiseChanged, invokeImmediately: true); + } + + private void OnNightVisionNoiseChanged(bool toggle) + { + DisableNoise = toggle; } public void SetParameters(Color overlayColor, Color lightingColor, float noiseAmount, float noiseMultiplier) @@ -47,8 +58,8 @@ public sealed partial class NightVisionOverlay : Overlay if (isSpace) { _nightVisionShader.SetParameter("SCREEN_TEXTURE", ScreenTexture); - _nightVisionShader.SetParameter("noise_amount", NoiseAmount); - _nightVisionShader.SetParameter("noise_multiplier", NoiseMultiplier); + _nightVisionShader.SetParameter("noise_amount", !DisableNoise ? NoiseAmount : 0); + _nightVisionShader.SetParameter("noise_multiplier", !DisableNoise ? NoiseMultiplier : 0); handle.UseShader(_nightVisionShader); } diff --git a/Content.Shared/CCVar/CCVars.Accessibility.cs b/Content.Shared/CCVar/CCVars.Accessibility.cs index e748789910..6361506217 100644 --- a/Content.Shared/CCVar/CCVars.Accessibility.cs +++ b/Content.Shared/CCVar/CCVars.Accessibility.cs @@ -26,6 +26,12 @@ public sealed partial class CCVars public static readonly CVarDef DisableAiStatic = CVarDef.Create("accessibility.disable_ai_static", false, CVar.CLIENTONLY | CVar.ARCHIVE); + /// + /// Removes the noise from the night vision overlay. + /// + public static readonly CVarDef DisableNightVisionNoise = + CVarDef.Create("accessibility.disable_nv_noise", false, CVar.CLIENTONLY | CVar.ARCHIVE); + public static readonly CVarDef ChatEnableColorName = CVarDef.Create("accessibility.enable_color_name", true, diff --git a/Resources/Locale/en-US/escape-menu/ui/options-menu.ftl b/Resources/Locale/en-US/escape-menu/ui/options-menu.ftl index 67c866028d..b35b4bdf7e 100644 --- a/Resources/Locale/en-US/escape-menu/ui/options-menu.ftl +++ b/Resources/Locale/en-US/escape-menu/ui/options-menu.ftl @@ -368,6 +368,7 @@ ui-options-enable-color-name = Add colors to character names ui-options-colorblind-friendly = Colorblind friendly mode ui-options-reduced-motion = Reduce motion of visual effects ui-options-disable-ai-static = Disable the static effect on the AI camera overlay +ui-options-disable-nv-noise = Disable the noise effect on the night vision overlay ui-options-screen-shake-intensity = Screen shake intensity ui-options-chat-window-opacity = Chat window opacity