From 5c48d9257f3859bd8380ce40fb4a7715fc5e2684 Mon Sep 17 00:00:00 2001 From: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> Date: Tue, 4 Oct 2022 12:12:13 +1100 Subject: [PATCH] Close context menu on entering combat mode (#11624) --- Content.Client/CombatMode/CombatModeComponent.cs | 3 +++ Content.Client/Verbs/UI/VerbMenuPresenter.cs | 8 ++++++-- Content.Client/Verbs/VerbSystem.cs | 4 +++- Content.Shared/CombatMode/SharedCombatModeComponent.cs | 2 ++ 4 files changed, 14 insertions(+), 3 deletions(-) diff --git a/Content.Client/CombatMode/CombatModeComponent.cs b/Content.Client/CombatMode/CombatModeComponent.cs index df65be2fc7..c1874dae04 100644 --- a/Content.Client/CombatMode/CombatModeComponent.cs +++ b/Content.Client/CombatMode/CombatModeComponent.cs @@ -1,4 +1,5 @@ using Content.Client.HUD; +using Content.Client.Verbs; using Content.Shared.CombatMode; using Content.Shared.Targeting; using Robust.Client.GameObjects; @@ -50,6 +51,8 @@ namespace Content.Client.CombatMode return; } + var verbs = IoCManager.Resolve().GetEntitySystem(); + verbs.CloseAllMenus(); _gameHud.TargetingZone = ActiveZone; } } diff --git a/Content.Client/Verbs/UI/VerbMenuPresenter.cs b/Content.Client/Verbs/UI/VerbMenuPresenter.cs index 15f83a208c..bcad3019fd 100644 --- a/Content.Client/Verbs/UI/VerbMenuPresenter.cs +++ b/Content.Client/Verbs/UI/VerbMenuPresenter.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Linq; +using Content.Client.CombatMode; using Content.Client.ContextMenu.UI; using Content.Shared.Input; using Content.Shared.Verbs; @@ -28,14 +29,16 @@ namespace Content.Client.Verbs.UI [Dependency] private readonly IPlayerManager _playerManager = default!; [Dependency] private readonly IUserInterfaceManager _userInterfaceManager = default!; + private readonly CombatModeSystem _combatMode; private readonly VerbSystem _verbSystem; public EntityUid CurrentTarget; public SortedSet CurrentVerbs = new(); - public VerbMenuPresenter(VerbSystem verbSystem) + public VerbMenuPresenter(CombatModeSystem combatMode, VerbSystem verbSystem) { IoCManager.InjectDependencies(this); + _combatMode = combatMode; _verbSystem = verbSystem; } @@ -46,7 +49,8 @@ namespace Content.Client.Verbs.UI /// Used to force showing all verbs (mostly for admins). public void OpenVerbMenu(EntityUid target, bool force = false) { - if (_playerManager.LocalPlayer?.ControlledEntity is not {Valid: true} user) + if (_playerManager.LocalPlayer?.ControlledEntity is not {Valid: true} user || + _combatMode.IsInCombatMode(user)) return; Close(); diff --git a/Content.Client/Verbs/VerbSystem.cs b/Content.Client/Verbs/VerbSystem.cs index d14f3ab76f..a1b9e3b277 100644 --- a/Content.Client/Verbs/VerbSystem.cs +++ b/Content.Client/Verbs/VerbSystem.cs @@ -2,6 +2,7 @@ using System; using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; using System.Linq; +using Content.Client.CombatMode; using Content.Client.ContextMenu.UI; using Content.Client.Examine; using Content.Client.Gameplay; @@ -28,6 +29,7 @@ namespace Content.Client.Verbs [UsedImplicitly] public sealed class VerbSystem : SharedVerbSystem { + [Dependency] private readonly CombatModeSystem _combatMode = default!; [Dependency] private readonly PopupSystem _popupSystem = default!; [Dependency] private readonly ExamineSystem _examineSystem = default!; [Dependency] private readonly TagSystem _tagSystem = default!; @@ -60,7 +62,7 @@ namespace Content.Client.Verbs SubscribeNetworkEvent(HandleVerbResponse); EntityMenu = new(this); - VerbMenu = new(this); + VerbMenu = new(_combatMode, this); } public void Reset(RoundRestartCleanupEvent ev) diff --git a/Content.Shared/CombatMode/SharedCombatModeComponent.cs b/Content.Shared/CombatMode/SharedCombatModeComponent.cs index a68560b055..62e3ab53fb 100644 --- a/Content.Shared/CombatMode/SharedCombatModeComponent.cs +++ b/Content.Shared/CombatMode/SharedCombatModeComponent.cs @@ -1,6 +1,7 @@ using Content.Shared.Actions; using Content.Shared.Actions.ActionTypes; using Content.Shared.Targeting; +using Content.Shared.Verbs; using Robust.Shared.Audio; using Robust.Shared.GameStates; using Robust.Shared.Serialization; @@ -51,6 +52,7 @@ namespace Content.Shared.CombatMode _isInCombatMode = value; if (CombatToggleAction != null) EntitySystem.Get().SetToggled(CombatToggleAction, _isInCombatMode); + Dirty(); } }