Title="{Loc 'ui-options-title'}"
MinSize="800 450">
<TabContainer Name="Tabs" Access="Public">
+ <tabs:MiscTab Name="MiscTab" />
<tabs:GraphicsTab Name="GraphicsTab" />
<tabs:KeyRebindTab Name="KeyRebindTab" />
<tabs:AudioTab Name="AudioTab" />
RobustXamlLoader.Load(this);
IoCManager.InjectDependencies(this);
- Tabs.SetTabTitle(0, Loc.GetString("ui-options-tab-graphics"));
- Tabs.SetTabTitle(1, Loc.GetString("ui-options-tab-controls"));
- Tabs.SetTabTitle(2, Loc.GetString("ui-options-tab-audio"));
- Tabs.SetTabTitle(3, Loc.GetString("ui-options-tab-network"));
+ Tabs.SetTabTitle(0, Loc.GetString("ui-options-tab-misc"));
+ Tabs.SetTabTitle(1, Loc.GetString("ui-options-tab-graphics"));
+ Tabs.SetTabTitle(2, Loc.GetString("ui-options-tab-controls"));
+ Tabs.SetTabTitle(3, Loc.GetString("ui-options-tab-audio"));
+ Tabs.SetTabTitle(4, Loc.GetString("ui-options-tab-network"));
UpdateTabs();
}
<Control MinSize="4 0" />
<OptionButton Name="HudThemeOption" />
</BoxContainer>
- <CheckBox Name="ShowHeldItemCheckBox" Text="{Loc 'ui-options-show-held-item'}" />
- <CheckBox Name="ShowCombatModeIndicatorsCheckBox" Text="{Loc 'ui-options-show-combat-mode-indicators'}" />
- <CheckBox Name="OpaqueStorageWindowCheckBox" Text="{Loc 'ui-options-opaque-storage-window'}" />
- <CheckBox Name="ShowLoocAboveHeadCheckBox" Text="{Loc 'ui-options-show-looc-on-head'}" />
- <CheckBox Name="FancySpeechBubblesCheckBox" Text="{Loc 'ui-options-fancy-speech'}" />
- <CheckBox Name="FancyNameBackgroundsCheckBox" Text="{Loc 'ui-options-fancy-name-background'}" />
<BoxContainer Orientation="Horizontal">
<CheckBox Name="ViewportStretchCheckBox" Text="{Loc 'ui-options-vp-stretch'}" />
<BoxContainer Name="ViewportScaleBox" Orientation="Horizontal">
UpdateApplyButton();
};
- ShowHeldItemCheckBox.OnToggled += OnCheckBoxToggled;
- ShowCombatModeIndicatorsCheckBox.OnToggled += OnCheckBoxToggled;
- OpaqueStorageWindowCheckBox.OnToggled += OnCheckBoxToggled;
- ShowLoocAboveHeadCheckBox.OnToggled += OnCheckBoxToggled;
- ShowLoocAboveHeadCheckBox.OnToggled += OnCheckBoxToggled;
- FancySpeechBubblesCheckBox.OnToggled += OnCheckBoxToggled;
- FancyNameBackgroundsCheckBox.OnToggled += OnCheckBoxToggled;
IntegerScalingCheckBox.OnToggled += OnCheckBoxToggled;
ViewportLowResCheckBox.OnToggled += OnCheckBoxToggled;
ParallaxLowQualityCheckBox.OnToggled += OnCheckBoxToggled;
ViewportLowResCheckBox.Pressed = !_cfg.GetCVar(CCVars.ViewportScaleRender);
ParallaxLowQualityCheckBox.Pressed = _cfg.GetCVar(CCVars.ParallaxLowQuality);
FpsCounterCheckBox.Pressed = _cfg.GetCVar(CCVars.HudFpsCounterVisible);
- ShowHeldItemCheckBox.Pressed = _cfg.GetCVar(CCVars.HudHeldItemShow);
- ShowCombatModeIndicatorsCheckBox.Pressed = _cfg.GetCVar(CCVars.CombatModeIndicatorsPointShow);
- OpaqueStorageWindowCheckBox.Pressed = _cfg.GetCVar(CCVars.OpaqueStorageWindow);
- ShowLoocAboveHeadCheckBox.Pressed = _cfg.GetCVar(CCVars.LoocAboveHeadShow);
- FancySpeechBubblesCheckBox.Pressed = _cfg.GetCVar(CCVars.ChatEnableFancyBubbles);
- FancyNameBackgroundsCheckBox.Pressed = _cfg.GetCVar(CCVars.ChatFancyNameBackground);
ViewportWidthSlider.Value = _cfg.GetCVar(CCVars.ViewportWidth);
_cfg.OnValueChanged(CCVars.ViewportMinimumWidth, _ => UpdateViewportWidthRange());
IntegerScalingCheckBox.Pressed ? CCVars.ViewportSnapToleranceMargin.DefaultValue : 0);
_cfg.SetCVar(CCVars.ViewportScaleRender, !ViewportLowResCheckBox.Pressed);
_cfg.SetCVar(CCVars.ParallaxLowQuality, ParallaxLowQualityCheckBox.Pressed);
- _cfg.SetCVar(CCVars.HudHeldItemShow, ShowHeldItemCheckBox.Pressed);
- _cfg.SetCVar(CCVars.CombatModeIndicatorsPointShow, ShowCombatModeIndicatorsCheckBox.Pressed);
- _cfg.SetCVar(CCVars.OpaqueStorageWindow, OpaqueStorageWindowCheckBox.Pressed);
- _cfg.SetCVar(CCVars.LoocAboveHeadShow, ShowLoocAboveHeadCheckBox.Pressed);
- _cfg.SetCVar(CCVars.ChatEnableFancyBubbles, FancySpeechBubblesCheckBox.Pressed);
- _cfg.SetCVar(CCVars.ChatFancyNameBackground, FancyNameBackgroundsCheckBox.Pressed);
_cfg.SetCVar(CCVars.HudFpsCounterVisible, FpsCounterCheckBox.Pressed);
_cfg.SetCVar(CCVars.ViewportWidth, (int) ViewportWidthSlider.Value);
var isIntegerScalingSame = IntegerScalingCheckBox.Pressed == (_cfg.GetCVar(CCVars.ViewportSnapToleranceMargin) != 0);
var isVPResSame = ViewportLowResCheckBox.Pressed == !_cfg.GetCVar(CCVars.ViewportScaleRender);
var isPLQSame = ParallaxLowQualityCheckBox.Pressed == _cfg.GetCVar(CCVars.ParallaxLowQuality);
- var isShowHeldItemSame = ShowHeldItemCheckBox.Pressed == _cfg.GetCVar(CCVars.HudHeldItemShow);
- var isCombatModeIndicatorsSame = ShowCombatModeIndicatorsCheckBox.Pressed == _cfg.GetCVar(CCVars.CombatModeIndicatorsPointShow);
- var isOpaqueStorageWindow = OpaqueStorageWindowCheckBox.Pressed == _cfg.GetCVar(CCVars.OpaqueStorageWindow);
- var isLoocShowSame = ShowLoocAboveHeadCheckBox.Pressed == _cfg.GetCVar(CCVars.LoocAboveHeadShow);
- var isFancyChatSame = FancySpeechBubblesCheckBox.Pressed == _cfg.GetCVar(CCVars.ChatEnableFancyBubbles);
- var isFancyBackgroundSame = FancyNameBackgroundsCheckBox.Pressed == _cfg.GetCVar(CCVars.ChatFancyNameBackground);
var isFpsCounterVisibleSame = FpsCounterCheckBox.Pressed == _cfg.GetCVar(CCVars.HudFpsCounterVisible);
var isWidthSame = (int) ViewportWidthSlider.Value == _cfg.GetCVar(CCVars.ViewportWidth);
var isLayoutSame = HudLayoutOption.SelectedMetadata is string opt && opt == _cfg.GetCVar(CCVars.UILayout);
isVPResSame &&
isPLQSame &&
isHudThemeSame &&
- isShowHeldItemSame &&
- isCombatModeIndicatorsSame &&
- isOpaqueStorageWindow &&
- isLoocShowSame &&
- isFancyChatSame &&
- isFancyBackgroundSame &&
isFpsCounterVisibleSame &&
isWidthSame &&
isLayoutSame;
AddButton(ContentKeyFunctions.SwapHands);
AddButton(ContentKeyFunctions.MoveStoredItem);
AddButton(ContentKeyFunctions.RotateStoredItem);
- AddCheckBox("ui-options-static-storage-ui", _cfg.GetCVar(CCVars.StaticStorageUI), HandleStaticStorageUI);
AddHeader("ui-options-header-interaction-adv");
AddButton(ContentKeyFunctions.SmartEquipBackpack);
--- /dev/null
+<tabs:MiscTab xmlns="https://spacestation14.io"
+ xmlns:controls="clr-namespace:Content.Client.UserInterface.Controls"
+ xmlns:tabs="clr-namespace:Content.Client.Options.UI.Tabs"
+ xmlns:xNamespace="http://schemas.microsoft.com/winfx/2006/xaml"
+ xmlns:s="clr-namespace:Content.Client.Stylesheets">
+ <BoxContainer Orientation="Vertical">
+ <BoxContainer Orientation="Vertical" Margin="8 8 8 8" VerticalExpand="True">
+ <Label Text="{Loc 'ui-options-general-discord'}"
+ FontColorOverride="{xNamespace:Static s:StyleNano.NanoGold}"
+ StyleClasses="LabelKeyText"/>
+ <CheckBox Name="DiscordRich" Text="{Loc 'ui-options-discordrich'}" />
+ <Label Text="{Loc 'ui-options-general-speech'}"
+ FontColorOverride="{xNamespace:Static s:StyleNano.NanoGold}"
+ StyleClasses="LabelKeyText"/>
+ <CheckBox Name="ShowLoocAboveHeadCheckBox" Text="{Loc 'ui-options-show-looc-on-head'}" />
+ <CheckBox Name="FancySpeechBubblesCheckBox" Text="{Loc 'ui-options-fancy-speech'}" />
+ <CheckBox Name="FancyNameBackgroundsCheckBox" Text="{Loc 'ui-options-fancy-name-background'}" />
+ <Label Text="{Loc 'ui-options-general-cursor'}"
+ FontColorOverride="{xNamespace:Static s:StyleNano.NanoGold}"
+ StyleClasses="LabelKeyText"/>
+ <CheckBox Name="ShowHeldItemCheckBox" Text="{Loc 'ui-options-show-held-item'}" />
+ <CheckBox Name="ShowCombatModeIndicatorsCheckBox" Text="{Loc 'ui-options-show-combat-mode-indicators'}" />
+ <Label Text="{Loc 'ui-options-general-storage'}"
+ FontColorOverride="{xNamespace:Static s:StyleNano.NanoGold}"
+ StyleClasses="LabelKeyText"/>
+ <CheckBox Name="OpaqueStorageWindowCheckBox" Text="{Loc 'ui-options-opaque-storage-window'}" />
+ <CheckBox Name="StaticStorageUI" Text="{Loc 'ui-options-static-storage-ui'}" />
+ <!-- <CheckBox Name="ToggleWalk" Text="{Loc 'ui-options-hotkey-toggle-walk'}" /> -->
+
+ </BoxContainer>
+ <controls:StripeBack HasBottomEdge="False" HasMargins="False">
+ <Button Name="ApplyButton"
+ Text="{Loc 'ui-options-apply'}"
+ TextAlign="Center"
+ HorizontalAlignment="Right" />
+ </controls:StripeBack>
+ </BoxContainer>
+</tabs:MiscTab>
+
+
+
--- /dev/null
+using Content.Shared.CCVar;
+using Robust.Client.AutoGenerated;
+using Robust.Client.UserInterface;
+using Robust.Client.UserInterface.Controls;
+using Robust.Client.UserInterface.XAML;
+using Robust.Shared;
+using Robust.Shared.Configuration;
+using Robust.Shared.Input;
+
+namespace Content.Client.Options.UI.Tabs
+{
+ [GenerateTypedNameReferences]
+ public sealed partial class MiscTab : Control
+ {
+
+ [Dependency] private readonly IConfigurationManager _cfg = default!;
+
+ public MiscTab()
+ {
+ RobustXamlLoader.Load(this);
+ IoCManager.InjectDependencies(this);
+
+ DiscordRich.OnToggled += OnCheckBoxToggled;
+ ShowLoocAboveHeadCheckBox.OnToggled += OnCheckBoxToggled;
+ ShowHeldItemCheckBox.OnToggled += OnCheckBoxToggled;
+ ShowCombatModeIndicatorsCheckBox.OnToggled += OnCheckBoxToggled;
+ OpaqueStorageWindowCheckBox.OnToggled += OnCheckBoxToggled;
+ FancySpeechBubblesCheckBox.OnToggled += OnCheckBoxToggled;
+ FancyNameBackgroundsCheckBox.OnToggled += OnCheckBoxToggled;
+ // ToggleWalk.OnToggled += OnCheckBoxToggled;
+ StaticStorageUI.OnToggled += OnCheckBoxToggled;
+
+ DiscordRich.Pressed = _cfg.GetCVar(CVars.DiscordEnabled);
+ ShowLoocAboveHeadCheckBox.Pressed = _cfg.GetCVar(CCVars.LoocAboveHeadShow);
+ ShowHeldItemCheckBox.Pressed = _cfg.GetCVar(CCVars.HudHeldItemShow);
+ ShowCombatModeIndicatorsCheckBox.Pressed = _cfg.GetCVar(CCVars.CombatModeIndicatorsPointShow);
+ OpaqueStorageWindowCheckBox.Pressed = _cfg.GetCVar(CCVars.OpaqueStorageWindow);
+ FancySpeechBubblesCheckBox.Pressed = _cfg.GetCVar(CCVars.ChatEnableFancyBubbles);
+ FancyNameBackgroundsCheckBox.Pressed = _cfg.GetCVar(CCVars.ChatFancyNameBackground);
+ // ToggleWalk.Pressed = _cfg.GetCVar(CCVars.ToggleWalk);
+ StaticStorageUI.Pressed = _cfg.GetCVar(CCVars.StaticStorageUI);
+
+
+ ApplyButton.OnPressed += OnApplyButtonPressed;
+ UpdateApplyButton();
+ }
+
+ private void OnCheckBoxToggled(BaseButton.ButtonToggledEventArgs args)
+ {
+ UpdateApplyButton();
+ }
+
+ private void OnApplyButtonPressed(BaseButton.ButtonEventArgs args)
+ {
+ _cfg.SetCVar(CVars.DiscordEnabled, DiscordRich.Pressed);
+ _cfg.SetCVar(CCVars.HudHeldItemShow, ShowHeldItemCheckBox.Pressed);
+ _cfg.SetCVar(CCVars.CombatModeIndicatorsPointShow, ShowCombatModeIndicatorsCheckBox.Pressed);
+ _cfg.SetCVar(CCVars.OpaqueStorageWindow, OpaqueStorageWindowCheckBox.Pressed);
+ _cfg.SetCVar(CCVars.LoocAboveHeadShow, ShowLoocAboveHeadCheckBox.Pressed);
+ _cfg.SetCVar(CCVars.ChatEnableFancyBubbles, FancySpeechBubblesCheckBox.Pressed);
+ _cfg.SetCVar(CCVars.ChatFancyNameBackground, FancyNameBackgroundsCheckBox.Pressed);
+ // _cfg.SetCVar(CCVars.ToggleWalk, ToggleWalk.Pressed);
+ _cfg.SetCVar(CCVars.StaticStorageUI, StaticStorageUI.Pressed);
+
+ _cfg.SaveToFile();
+ UpdateApplyButton();
+ }
+
+ private void UpdateApplyButton()
+ {
+ var isDiscordSame = DiscordRich.Pressed == _cfg.GetCVar(CVars.DiscordEnabled);
+ var isShowHeldItemSame = ShowHeldItemCheckBox.Pressed == _cfg.GetCVar(CCVars.HudHeldItemShow);
+ var isCombatModeIndicatorsSame = ShowCombatModeIndicatorsCheckBox.Pressed == _cfg.GetCVar(CCVars.CombatModeIndicatorsPointShow);
+ var isOpaqueStorageWindow = OpaqueStorageWindowCheckBox.Pressed == _cfg.GetCVar(CCVars.OpaqueStorageWindow);
+ var isLoocShowSame = ShowLoocAboveHeadCheckBox.Pressed == _cfg.GetCVar(CCVars.LoocAboveHeadShow);
+ var isFancyChatSame = FancySpeechBubblesCheckBox.Pressed == _cfg.GetCVar(CCVars.ChatEnableFancyBubbles);
+ var isFancyBackgroundSame = FancyNameBackgroundsCheckBox.Pressed == _cfg.GetCVar(CCVars.ChatFancyNameBackground);
+ // var isToggleWalkSame = ToggleWalk.Pressed == _cfg.GetCVar(CCVars.ToggleWalk);
+ var isStaticStorageUISame = StaticStorageUI.Pressed == _cfg.GetCVar(CCVars.StaticStorageUI);
+
+ ApplyButton.Disabled = isDiscordSame &&
+ isShowHeldItemSame &&
+ isCombatModeIndicatorsSame &&
+ isOpaqueStorageWindow &&
+ isLoocShowSame &&
+ isFancyChatSame &&
+ isFancyBackgroundSame &&
+ // isToggleWalkSame &&
+ isStaticStorageUISame;
+ }
+
+ }
+
+}
ui-options-tab-controls = Controls
ui-options-tab-audio = Audio
ui-options-tab-network = Network
+ui-options-tab-misc = General
ui-options-apply = Apply
ui-options-reset-all = Reset All
ui-options-default = Default
+# Misc/General menu
+
+ui-options-discordrich = Enable Discord Rich Presence
+ui-options-general-discord = Discord
+ui-options-general-cursor = Cursor
+ui-options-general-speech = Speech
+ui-options-general-storage = Storage
+
## Audio menu
ui-options-master-volume = Master Volume: