From a0312c3cf255e76949a302adc00b0c9350a08135 Mon Sep 17 00:00:00 2001 From: noirogen Date: Tue, 25 Feb 2025 11:00:12 -0500 Subject: [PATCH] Adds new speech bubble opacity sliders to the accessibility menu. (#35346) * Adds new accessibility slider for speech bubble text opacity. Adds new accessibility slider for speech bubble background opacity. Adds new Cvars to track speech bubble text and background opacity settings. * Adds a separate option slider for the opacity of the speaker's name on speech bubbles. * Changes text and speaker default opacity to 100%, as it was before. * Apply suggestions from code review --------- Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com> --- Content.Client/Chat/UI/SpeechBubble.cs | 14 ++++++----- .../Options/UI/Tabs/AccessibilityTab.xaml | 5 +++- .../Options/UI/Tabs/AccessibilityTab.xaml.cs | 5 +++- Content.Shared/CCVar/CCVars.Accessibility.cs | 23 +++++++++++++++++++ .../_Shitmed/escape-menu/ui/options-menu.ftl | 12 ++++++++++ .../en-US/escape-menu/ui/options-menu.ftl | 18 ++++----------- 6 files changed, 55 insertions(+), 22 deletions(-) create mode 100644 Resources/Locale/en-US/_Shitmed/escape-menu/ui/options-menu.ftl diff --git a/Content.Client/Chat/UI/SpeechBubble.cs b/Content.Client/Chat/UI/SpeechBubble.cs index aa61e73e31..94505fd892 100644 --- a/Content.Client/Chat/UI/SpeechBubble.cs +++ b/Content.Client/Chat/UI/SpeechBubble.cs @@ -217,7 +217,7 @@ namespace Content.Client.Chat.UI { StyleClasses = { "speechBox", speechStyleClass }, Children = { label }, - ModulateSelfOverride = Color.White.WithAlpha(0.75f) + ModulateSelfOverride = Color.White.WithAlpha(ConfigManager.GetCVar(CCVars.SpeechBubbleBackgroundOpacity)) }; return panel; @@ -247,21 +247,23 @@ namespace Content.Client.Chat.UI { StyleClasses = { "speechBox", speechStyleClass }, Children = { label }, - ModulateSelfOverride = Color.White.WithAlpha(0.75f) + ModulateSelfOverride = Color.White.WithAlpha(ConfigManager.GetCVar(CCVars.SpeechBubbleBackgroundOpacity)), }; return unfanciedPanel; } var bubbleHeader = new RichTextLabel { - Margin = new Thickness(1, 1, 1, 1) + ModulateSelfOverride = Color.White.WithAlpha(ConfigManager.GetCVar(CCVars.SpeechBubbleSpeakerOpacity)), + Margin = new Thickness(1, 1, 1, 1), }; var bubbleContent = new RichTextLabel { + ModulateSelfOverride = Color.White.WithAlpha(ConfigManager.GetCVar(CCVars.SpeechBubbleTextOpacity)), MaxWidth = SpeechMaxWidth, Margin = new Thickness(2, 6, 2, 2), - StyleClasses = { "bubbleContent" } + StyleClasses = { "bubbleContent" }, }; //We'll be honest. *Yes* this is hacky. Doing this in a cleaner way would require a bottom-up refactor of how saycode handles sending chat messages. -Myr @@ -273,7 +275,7 @@ namespace Content.Client.Chat.UI { StyleClasses = { "speechBox", speechStyleClass }, Children = { bubbleContent }, - ModulateSelfOverride = Color.White.WithAlpha(0.75f), + ModulateSelfOverride = Color.White.WithAlpha(ConfigManager.GetCVar(CCVars.SpeechBubbleBackgroundOpacity)), HorizontalAlignment = HAlignment.Center, VerticalAlignment = VAlignment.Bottom, Margin = new Thickness(4, 14, 4, 2) @@ -283,7 +285,7 @@ namespace Content.Client.Chat.UI { StyleClasses = { "speechBox", speechStyleClass }, Children = { bubbleHeader }, - ModulateSelfOverride = Color.White.WithAlpha(ConfigManager.GetCVar(CCVars.ChatFancyNameBackground) ? 0.75f : 0f), + ModulateSelfOverride = Color.White.WithAlpha(ConfigManager.GetCVar(CCVars.ChatFancyNameBackground) ? ConfigManager.GetCVar(CCVars.SpeechBubbleBackgroundOpacity) : 0f), HorizontalAlignment = HAlignment.Center, VerticalAlignment = VAlignment.Top }; diff --git a/Content.Client/Options/UI/Tabs/AccessibilityTab.xaml b/Content.Client/Options/UI/Tabs/AccessibilityTab.xaml index 54d92b2b11..763fd995ca 100644 --- a/Content.Client/Options/UI/Tabs/AccessibilityTab.xaml +++ b/Content.Client/Options/UI/Tabs/AccessibilityTab.xaml @@ -7,8 +7,11 @@ - + + + + diff --git a/Content.Client/Options/UI/Tabs/AccessibilityTab.xaml.cs b/Content.Client/Options/UI/Tabs/AccessibilityTab.xaml.cs index 15182fbf12..e1dead0b0e 100644 --- a/Content.Client/Options/UI/Tabs/AccessibilityTab.xaml.cs +++ b/Content.Client/Options/UI/Tabs/AccessibilityTab.xaml.cs @@ -15,8 +15,11 @@ public sealed partial class AccessibilityTab : Control Control.AddOptionCheckBox(CCVars.ChatEnableColorName, EnableColorNameCheckBox); Control.AddOptionCheckBox(CCVars.AccessibilityColorblindFriendly, ColorblindFriendlyCheckBox); Control.AddOptionCheckBox(CCVars.ReducedMotion, ReducedMotionCheckBox); - Control.AddOptionPercentSlider(CCVars.ChatWindowOpacity, ChatWindowOpacitySlider); Control.AddOptionPercentSlider(CCVars.ScreenShakeIntensity, ScreenShakeIntensitySlider); + Control.AddOptionPercentSlider(CCVars.ChatWindowOpacity, ChatWindowOpacitySlider); + Control.AddOptionPercentSlider(CCVars.SpeechBubbleTextOpacity, SpeechBubbleTextOpacitySlider); + Control.AddOptionPercentSlider(CCVars.SpeechBubbleSpeakerOpacity, SpeechBubbleSpeakerOpacitySlider); + Control.AddOptionPercentSlider(CCVars.SpeechBubbleBackgroundOpacity, SpeechBubbleBackgroundOpacitySlider); Control.Initialize(); } diff --git a/Content.Shared/CCVar/CCVars.Accessibility.cs b/Content.Shared/CCVar/CCVars.Accessibility.cs index 8eb61f0806..14312363a1 100644 --- a/Content.Shared/CCVar/CCVars.Accessibility.cs +++ b/Content.Shared/CCVar/CCVars.Accessibility.cs @@ -38,4 +38,27 @@ public sealed partial class CCVars /// public static readonly CVarDef AccessibilityColorblindFriendly = CVarDef.Create("accessibility.colorblind_friendly", false, CVar.CLIENTONLY | CVar.ARCHIVE); + + /// + /// Speech bubble text opacity slider, controlling the alpha of speech bubble's text. + /// Goes from to 0 (completely transparent) to 1 (completely opaque) + /// + public static readonly CVarDef SpeechBubbleTextOpacity = + CVarDef.Create("accessibility.speech_bubble_text_opacity", 1f, CVar.CLIENTONLY | CVar.ARCHIVE); + + /// + /// Speech bubble speaker opacity slider, controlling the alpha of the speaker's name in a speech bubble. + /// Goes from to 0 (completely transparent) to 1 (completely opaque) + /// + public static readonly CVarDef SpeechBubbleSpeakerOpacity = + CVarDef.Create("accessibility.speech_bubble_speaker_opacity", 1f, CVar.CLIENTONLY | CVar.ARCHIVE); + + /// + /// Speech bubble background opacity slider, controlling the alpha of the speech bubble's background. + /// Goes from to 0 (completely transparent) to 1 (completely opaque) + /// + public static readonly CVarDef SpeechBubbleBackgroundOpacity = + CVarDef.Create("accessibility.speech_bubble_background_opacity", 0.75f, CVar.CLIENTONLY | CVar.ARCHIVE); + + } diff --git a/Resources/Locale/en-US/_Shitmed/escape-menu/ui/options-menu.ftl b/Resources/Locale/en-US/_Shitmed/escape-menu/ui/options-menu.ftl new file mode 100644 index 0000000000..32ba03cef3 --- /dev/null +++ b/Resources/Locale/en-US/_Shitmed/escape-menu/ui/options-menu.ftl @@ -0,0 +1,12 @@ +ui-options-header-targeting = Targeting +ui-options-function-target-head = Target head +ui-options-function-target-torso = Target torso +ui-options-function-target-left-arm = Target left arm +ui-options-function-target-left-hand = Target left hand +ui-options-function-target-right-arm = Target right arm +ui-options-function-target-right-hand = Target right hand +ui-options-function-target-left-leg = Target left leg +ui-options-function-target-left-foot = Target left foot +ui-options-function-target-right-leg = Target right leg +ui-options-function-target-right-foot = Target right foot +ui-options-function-toggle-standing = Crawl/Stand 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 8473b9813e..a2a80a26b1 100644 --- a/Resources/Locale/en-US/escape-menu/ui/options-menu.ftl +++ b/Resources/Locale/en-US/escape-menu/ui/options-menu.ftl @@ -281,19 +281,9 @@ cmd-options-help = Usage: options [tab] 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-chat-window-opacity = Chat window opacity ui-options-screen-shake-intensity = Screen shake intensity -## Shitmed Change -ui-options-header-targeting = Targeting -ui-options-function-target-head = Target head -ui-options-function-target-torso = Target torso -ui-options-function-target-left-arm = Target left arm -ui-options-function-target-left-hand = Target left hand -ui-options-function-target-right-arm = Target right arm -ui-options-function-target-right-hand = Target right hand -ui-options-function-target-left-leg = Target left leg -ui-options-function-target-left-foot = Target left foot -ui-options-function-target-right-leg = Target right leg -ui-options-function-target-right-foot = Target right foot -ui-options-function-toggle-standing = Crawl/Stand +ui-options-chat-window-opacity = Chat window opacity +ui-options-speech-bubble-text-opacity = Speech bubble text opacity +ui-options-speech-bubble-speaker-opacity = Speech bubble speaker opacity +ui-options-speech-bubble-background-opacity = Speech bubble background opacity