From 710a6bf61a50fb3446b45f74cd150fa55a016528 Mon Sep 17 00:00:00 2001 From: Samuka <47865393+Samuka-C@users.noreply.github.com> Date: Mon, 6 Jul 2026 09:41:21 -0300 Subject: [PATCH] Add accessibility option to remove noise from the night vision overlay (#44526) * disable noise button * make noise static instead of disabling it * Revert "make noise static instead of disabling it" This reverts commit 3392776ad85fe6fa7c704785e2e685d9d32b0e7f. * rename to _configManager * Minor formatting --------- Co-authored-by: SlamBamActionman --- .../Options/UI/Tabs/AccessibilityTab.xaml | 1 + .../Options/UI/Tabs/AccessibilityTab.xaml.cs | 1 + Content.Client/Overlays/NightVisionOverlay.cs | 15 +++++++++++++-- Content.Shared/CCVar/CCVars.Accessibility.cs | 6 ++++++ .../Locale/en-US/escape-menu/ui/options-menu.ftl | 1 + 5 files changed, 22 insertions(+), 2 deletions(-) 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