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

@@ -5,6 +5,8 @@
<BoxContainer Orientation="Horizontal"> <BoxContainer Orientation="Horizontal">
<Label Name="PlayerCount" HorizontalExpand="True" SizeFlagsStretchRatio="0.50" <Label Name="PlayerCount" HorizontalExpand="True" SizeFlagsStretchRatio="0.50"
Text="{Loc Player Count}" /> Text="{Loc Player Count}" />
<Button Name="ShowDisconnectedButton" HorizontalExpand="True" SizeFlagsStretchRatio="0.25"
Text="{Loc player-tab-show-disconnected}" ToggleMode="True"/>
<Button Name="OverlayButton" HorizontalExpand="True" SizeFlagsStretchRatio="0.25" <Button Name="OverlayButton" HorizontalExpand="True" SizeFlagsStretchRatio="0.25"
Text="{Loc player-tab-overlay}" ToggleMode="True"/> Text="{Loc player-tab-overlay}" ToggleMode="True"/>
</BoxContainer> </BoxContainer>

View File

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

View File

@@ -2,4 +2,5 @@
player-tab-character = Character player-tab-character = Character
player-tab-job = Job player-tab-job = Job
player-tab-antagonist = Antagonist player-tab-antagonist = Antagonist
player-tab-show-disconnected = Show Disconnected
player-tab-overlay = Overlay player-tab-overlay = Overlay