]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
Add show disconnected button to admin player tab (#15326)
authorDrSmugleaf <DrSmugleaf@users.noreply.github.com>
Wed, 12 Apr 2023 13:30:03 +0000 (06:30 -0700)
committerGitHub <noreply@github.com>
Wed, 12 Apr 2023 13:30:03 +0000 (23:30 +1000)
Content.Client/Administration/UI/Tabs/PlayerTab/PlayerTab.xaml
Content.Client/Administration/UI/Tabs/PlayerTab/PlayerTab.xaml.cs
Resources/Locale/en-US/administration/ui/tabs/player-tab.ftl

index 6180e5c3891212854b72235b1c2df226308596ed..3071bf8358b335dd1b8d2d91e24cc449cceb0742 100644 (file)
@@ -5,6 +5,8 @@
         <BoxContainer Orientation="Horizontal">
             <Label Name="PlayerCount" HorizontalExpand="True" SizeFlagsStretchRatio="0.50"
                    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"
                     Text="{Loc player-tab-overlay}" ToggleMode="True"/>
         </BoxContainer>
index c7bd84f7675a20c421f9f5e8c811f9a9b3729e7d..7ece83d1cf0015bddd52bba5f69b80c4622dc5f9 100644 (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;
             }
index c4a8bdee752a515b18c8d29a33afecaa153cd442..b9c8f4e5abe20106feeb538c411e6787d2eaa183 100644 (file)
@@ -2,4 +2,5 @@
 player-tab-character = Character
 player-tab-job = Job
 player-tab-antagonist = Antagonist
+player-tab-show-disconnected = Show Disconnected
 player-tab-overlay = Overlay