Add show disconnected button to admin player tab (#15326)

This commit is contained in:
DrSmugleaf
2023-04-12 06:30:03 -07:00
committed by GitHub
parent 3dc0908151
commit af49ead70f
3 changed files with 20 additions and 5 deletions

View File

@@ -1,3 +1,4 @@
using System.Linq;
using Content.Client.Administration.Systems;
using Content.Shared.Administration;
using Robust.Client.AutoGenerated;
@@ -18,10 +19,11 @@ namespace Content.Client.Administration.UI.Tabs.PlayerTab
private readonly Color _altColor = Color.FromHex("#292B38");
private readonly Color _defaultColor = Color.FromHex("#2F2F3B");
private readonly AdminSystem _adminSystem;
private readonly List<PlayerTabEntry> _players = new();
private IReadOnlyList<PlayerInfo> _players = new List<PlayerInfo>();
private Header _headerClicked = Header.Username;
private bool _ascending = true;
private bool _showDisconnected;
public event Action<ButtonEventArgs>? OnEntryPressed;
@@ -36,6 +38,7 @@ namespace Content.Client.Administration.UI.Tabs.PlayerTab
_adminSystem.OverlayDisabled += OverlayDisabled;
OverlayButton.OnPressed += OverlayButtonPressed;
ShowDisconnectedButton.OnPressed += ShowDisconnectedPressed;
ListHeader.BackgroundColorPanel.PanelOverride = new StyleBoxFlat(_altColor);
ListHeader.OnHeaderClicked += HeaderClicked;
@@ -63,6 +66,12 @@ namespace Content.Client.Administration.UI.Tabs.PlayerTab
}
}
private void ShowDisconnectedPressed(ButtonEventArgs args)
{
_showDisconnected = args.Button.Pressed;
RefreshPlayerList(_players);
}
protected override void Dispose(bool disposing)
{
base.Dispose(disposing);
@@ -81,12 +90,13 @@ namespace Content.Client.Administration.UI.Tabs.PlayerTab
private void RefreshPlayerList(IReadOnlyList<PlayerInfo> players)
{
foreach (var control in _players)
foreach (var child in PlayerList.Children.ToArray())
{
PlayerList.RemoveChild(control);
if (child is PlayerTabEntry)
child.Orphan();
}
_players.Clear();
_players = players;
var playerManager = IoCManager.Resolve<IPlayerManager>();
PlayerCount.Text = $"Players: {playerManager.PlayerCount}";
@@ -99,6 +109,9 @@ namespace Content.Client.Administration.UI.Tabs.PlayerTab
var useAltColor = false;
foreach (var player in sortedPlayers)
{
if (!_showDisconnected && !player.Connected)
continue;
var entry = new PlayerTabEntry(player.Username,
player.CharacterName,
player.IdentityName,
@@ -109,7 +122,6 @@ namespace Content.Client.Administration.UI.Tabs.PlayerTab
entry.PlayerUid = player.EntityUid;
entry.OnPressed += args => OnEntryPressed?.Invoke(args);
PlayerList.AddChild(entry);
_players.Add(entry);
useAltColor ^= true;
}