Add show disconnected button to admin player tab (#15326)
This commit is contained in:
@@ -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>
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user