diff --git a/Content.Client/Entry/EntryPoint.cs b/Content.Client/Entry/EntryPoint.cs index a66925438d..5e6852ff23 100644 --- a/Content.Client/Entry/EntryPoint.cs +++ b/Content.Client/Entry/EntryPoint.cs @@ -158,6 +158,7 @@ namespace Content.Client.Entry _euiManager.Initialize(); _voteManager.Initialize(); _userInterfaceManager.SetDefaultTheme("SS14DefaultTheme"); + _userInterfaceManager.SetActiveTheme(_configManager.GetCVar(CVars.InterfaceTheme)); _documentParsingManager.Initialize(); _baseClient.RunLevelChanged += (_, args) => diff --git a/Content.Client/Options/UI/Tabs/GraphicsTab.xaml.cs b/Content.Client/Options/UI/Tabs/GraphicsTab.xaml.cs index 87adbd1ca8..99076c853d 100644 --- a/Content.Client/Options/UI/Tabs/GraphicsTab.xaml.cs +++ b/Content.Client/Options/UI/Tabs/GraphicsTab.xaml.cs @@ -26,6 +26,8 @@ namespace Content.Client.Options.UI.Tabs 2f }; + private Dictionary hudThemeIdToIndex = new(); + [Dependency] private readonly IConfigurationManager _cfg = default!; [Dependency] private readonly IPrototypeManager _prototypeManager = default!; @@ -56,6 +58,7 @@ namespace Content.Client.Options.UI.Tabs foreach (var gear in _prototypeManager.EnumeratePrototypes()) { HudThemeOption.AddItem(Loc.GetString(gear.Name)); + hudThemeIdToIndex.Add(gear.ID, HudThemeOption.GetItemId(HudThemeOption.ItemCount - 1)); } HudThemeOption.OnItemSelected += OnHudThemeChanged; @@ -109,7 +112,7 @@ namespace Content.Client.Options.UI.Tabs FullscreenCheckBox.Pressed = ConfigIsFullscreen; LightingPresetOption.SelectId(GetConfigLightingQuality()); UIScaleOption.SelectId(GetConfigUIScalePreset(ConfigUIScale)); - HudThemeOption.SelectId(_cfg.GetCVar(CCVars.HudTheme)); + HudThemeOption.SelectId(hudThemeIdToIndex.GetValueOrDefault(_cfg.GetCVar(CVars.InterfaceTheme), 0)); ViewportScaleSlider.Value = _cfg.GetCVar(CCVars.ViewportFixedScaleFactor); ViewportStretchCheckBox.Pressed = _cfg.GetCVar(CCVars.ViewportStretch); IntegerScalingCheckBox.Pressed = _cfg.GetCVar(CCVars.ViewportSnapToleranceMargin) != 0; @@ -145,9 +148,13 @@ namespace Content.Client.Options.UI.Tabs { _cfg.SetCVar(CVars.DisplayVSync, VSyncCheckBox.Pressed); SetConfigLightingQuality(LightingPresetOption.SelectedId); - if (HudThemeOption.SelectedId != _cfg.GetCVar(CCVars.HudTheme)) // Don't unnecessarily redraw the HUD + + foreach (var theme in _prototypeManager.EnumeratePrototypes()) { - _cfg.SetCVar(CCVars.HudTheme, HudThemeOption.SelectedId); + if (hudThemeIdToIndex[theme.ID] != HudThemeOption.SelectedId) + continue; + _cfg.SetCVar(CVars.InterfaceTheme, theme.ID); + break; } _cfg.SetCVar(CVars.DisplayWindowMode, @@ -189,7 +196,7 @@ namespace Content.Client.Options.UI.Tabs var isVSyncSame = VSyncCheckBox.Pressed == _cfg.GetCVar(CVars.DisplayVSync); var isFullscreenSame = FullscreenCheckBox.Pressed == ConfigIsFullscreen; var isLightingQualitySame = LightingPresetOption.SelectedId == GetConfigLightingQuality(); - var isHudThemeSame = HudThemeOption.SelectedId == _cfg.GetCVar(CCVars.HudTheme); + var isHudThemeSame = HudThemeOption.SelectedId == hudThemeIdToIndex.GetValueOrDefault(_cfg.GetCVar(CVars.InterfaceTheme), 0); var isUIScaleSame = MathHelper.CloseToPercent(UIScaleOptions[UIScaleOption.SelectedId], ConfigUIScale); var isVPStretchSame = ViewportStretchCheckBox.Pressed == _cfg.GetCVar(CCVars.ViewportStretch); var isVPScaleSame = (int) ViewportScaleSlider.Value == _cfg.GetCVar(CCVars.ViewportFixedScaleFactor); diff --git a/Resources/Prototypes/hud.yml b/Resources/Prototypes/hud.yml index 0443f9f54a..dd4ba5a172 100644 --- a/Resources/Prototypes/hud.yml +++ b/Resources/Prototypes/hud.yml @@ -1,14 +1,14 @@ - type: hudTheme - id: 0 + id: SS14DefaultTheme name: ui-options-hud-theme-default path: Default - type: hudTheme - id: 1 + id: SS14ModernizedTheme name: ui-options-hud-theme-modernized path: Modernized - type: hudTheme - id: 2 + id: SS14ClassicTheme name: ui-options-hud-theme-classic path: Classic