Fix right clicking entries in the admin objects tab (#11866)

This commit is contained in:
DrSmugleaf
2022-10-12 15:07:23 +02:00
committed by GitHub
parent 61d5cd62fe
commit fb76bc8032

View File

@@ -1,5 +1,6 @@
using Content.Client.Administration.Managers;
using Content.Client.Administration.UI;
using Content.Client.Administration.UI.Tabs.ObjectsTab;
using Content.Client.Administration.UI.Tabs.PlayerTab;
using Content.Client.Gameplay;
using Content.Client.UserInterface.Controls;
@@ -34,15 +35,16 @@ public sealed class AdminUIController : UIController, IOnStateEntered<GameplaySt
public void OnStateEntered(GameplayState state)
{
DebugTools.Assert(_window == null);
_window = UIManager.CreateWindow<AdminMenuWindow>();
_adminButton = UIManager.GetActiveUIWidget<MenuBar.Widgets.GameTopMenuBar>().AdminButton;
LayoutContainer.SetAnchorPreset(_window, LayoutContainer.LayoutPreset.Center);
_window.PlayerTabControl.OnEntryPressed += PlayerTabEntryPressed;
_window.OnOpen += () => _adminButton.Pressed = true;
_window.OnClose += () => _adminButton.Pressed = false;
_window.ObjectsTabControl.OnEntryPressed += ObjectsTabEntryPressed;
_window.OnOpen += OnWindowOpen;
_window.OnClose += OnWindowClosed;
_admin.AdminStatusUpdated += AdminStatusUpdated;
_adminButton.OnPressed += AdminButtonPressed;
_input.SetInputCommand(ContentKeyFunctions.OpenAdminMenu,
@@ -51,10 +53,27 @@ public sealed class AdminUIController : UIController, IOnStateEntered<GameplaySt
AdminStatusUpdated();
}
private void OnWindowOpen()
{
if (_adminButton != null)
_adminButton.Pressed = true;
}
private void OnWindowClosed()
{
if (_adminButton != null)
_adminButton.Pressed = false;
}
public void OnStateExited(GameplayState state)
{
if (_window != null)
{
_window.PlayerTabControl.OnEntryPressed -= PlayerTabEntryPressed;
_window.ObjectsTabControl.OnEntryPressed -= ObjectsTabEntryPressed;
_window.OnOpen -= OnWindowOpen;
_window.OnClose -= OnWindowClosed;
_window.Dispose();
_window = null;
}
@@ -111,4 +130,22 @@ public sealed class AdminUIController : UIController, IOnStateEntered<GameplaySt
args.Event.Handle();
}
private void ObjectsTabEntryPressed(ButtonEventArgs args)
{
if (args.Button is not ObjectsTabEntry button)
return;
var uid = button.AssocEntity;
var function = args.Event.Function;
if (function == EngineKeyFunctions.UIClick)
_conHost.ExecuteCommand($"vv {uid}");
else if (function == EngineKeyFunctions.UseSecondary)
_verbs.VerbMenu.OpenVerbMenu(uid, true);
else
return;
args.Event.Handle();
}
}