diff --git a/Content.Client/Lobby/UI/HumanoidProfileEditor.xaml.cs b/Content.Client/Lobby/UI/HumanoidProfileEditor.xaml.cs index df537509fe..952c9ff91e 100644 --- a/Content.Client/Lobby/UI/HumanoidProfileEditor.xaml.cs +++ b/Content.Client/Lobby/UI/HumanoidProfileEditor.xaml.cs @@ -565,6 +565,7 @@ namespace Content.Client.Lobby.UI } Traits.SetSelectedTraits(selectedTraits); + Traits.UpdateConditions(Profile.Species); } // End DeltaV - Traits Integration diff --git a/Content.Client/_DV/Traits/DisabledTraitsPopupSystem.cs b/Content.Client/_DV/Traits/DisabledTraitsPopupSystem.cs new file mode 100644 index 0000000000..d62f7ed7be --- /dev/null +++ b/Content.Client/_DV/Traits/DisabledTraitsPopupSystem.cs @@ -0,0 +1,51 @@ +using Content.Client._DV.Traits.UI; +using Content.Shared._DV.CCVars; +using Content.Shared._DV.Traits; +using Robust.Shared.Configuration; +using Robust.Shared.Prototypes; + +namespace Content.Client._DV.Traits; + +/// +/// Client system that shows a popup when traits are disabled due to unmet conditions. +/// +public sealed class DisabledTraitsPopupSystem : EntitySystem +{ + [Dependency] private readonly IConfigurationManager _cfg = default!; + + private DisabledTraitsPopup? _window; + + public override void Initialize() + { + base.Initialize(); + + SubscribeNetworkEvent(OnDisabledTraits); + } + + private void OnDisabledTraits(DisabledTraitsEvent ev) + { + // Don't show if user has opted to skip this popup + if (_cfg.GetCVar(DCCVars.SkipDisabledTraitsPopup)) + return; + + // Don't show if no traits were actually disabled + if (ev.DisabledTraits.Count == 0) + return; + + OpenDisabledTraitsPopup(ev.DisabledTraits); + } + + private void OpenDisabledTraitsPopup(Dictionary, List> disabledTraits) + { + // Close existing window if one is open + if (_window != null) + { + _window.Close(); + _window = null; + } + + _window = new DisabledTraitsPopup(disabledTraits); + _window.OpenCentered(); + _window.OnClose += () => _window = null; + } +} diff --git a/Content.Client/_DV/Traits/UI/DisabledTraitsPopup.xaml b/Content.Client/_DV/Traits/UI/DisabledTraitsPopup.xaml new file mode 100644 index 0000000000..59d6b83412 --- /dev/null +++ b/Content.Client/_DV/Traits/UI/DisabledTraitsPopup.xaml @@ -0,0 +1,48 @@ + + + + + + + + + + + +