From 2fac6b1089bf4f055201bcc23ca6bbabe7590cd9 Mon Sep 17 00:00:00 2001 From: Vera Aguilera Puerto <6766154+Zumorica@users.noreply.github.com> Date: Sun, 11 Apr 2021 07:24:50 +0200 Subject: [PATCH] Player list now lists antagonists. (#3826) --- .../AdminMenu/AdminMenuManager.cs | 2 +- .../AdminMenu/AdminMenuWindow.xaml.cs | 5 ++-- .../AdminMenu/Tabs/PlayerTab.xaml.cs | 28 +++++++++++++++---- Content.Server/Administration/AdminManager.cs | 10 +++---- .../AdminMenu/AdminMenuPlayerListMessage.cs | 26 +++++++++-------- 5 files changed, 46 insertions(+), 25 deletions(-) diff --git a/Content.Client/UserInterface/AdminMenu/AdminMenuManager.cs b/Content.Client/UserInterface/AdminMenu/AdminMenuManager.cs index ec113b3877..20b23f9fe3 100644 --- a/Content.Client/UserInterface/AdminMenu/AdminMenuManager.cs +++ b/Content.Client/UserInterface/AdminMenu/AdminMenuManager.cs @@ -68,7 +68,7 @@ namespace Content.Client.UserInterface.AdminMenu private void HandlePlayerListMessage(AdminMenuPlayerListMessage msg) { - _window?.RefreshPlayerList(msg.NamesToPlayers); + _window?.RefreshPlayerList(msg.PlayersInfo); } public void ResetWindow() diff --git a/Content.Client/UserInterface/AdminMenu/AdminMenuWindow.xaml.cs b/Content.Client/UserInterface/AdminMenu/AdminMenuWindow.xaml.cs index dc00852f5c..ff34de6309 100644 --- a/Content.Client/UserInterface/AdminMenu/AdminMenuWindow.xaml.cs +++ b/Content.Client/UserInterface/AdminMenu/AdminMenuWindow.xaml.cs @@ -1,6 +1,7 @@ #nullable enable using System.Collections.Generic; using Content.Client.UserInterface.AdminMenu.Tabs; +using Content.Shared.Administration.AdminMenu; using Robust.Client.AutoGenerated; using Robust.Client.UserInterface.CustomControls; using Robust.Client.UserInterface.XAML; @@ -49,9 +50,9 @@ namespace Content.Client.UserInterface.AdminMenu _gameHud.AdminButtonDown = false; } - public void RefreshPlayerList(Dictionary namesToPlayers) + public void RefreshPlayerList(IEnumerable players) { - PlayerTabControl.RefreshPlayerList(namesToPlayers); + PlayerTabControl.RefreshPlayerList(players); } } } diff --git a/Content.Client/UserInterface/AdminMenu/Tabs/PlayerTab.xaml.cs b/Content.Client/UserInterface/AdminMenu/Tabs/PlayerTab.xaml.cs index df08b3e883..26094288fa 100644 --- a/Content.Client/UserInterface/AdminMenu/Tabs/PlayerTab.xaml.cs +++ b/Content.Client/UserInterface/AdminMenu/Tabs/PlayerTab.xaml.cs @@ -1,6 +1,7 @@ #nullable enable using System.Collections.Generic; +using Content.Shared.Administration.AdminMenu; using Robust.Client.AutoGenerated; using Robust.Client.Graphics; using Robust.Client.Player; @@ -31,7 +32,7 @@ namespace Content.Client.UserInterface.AdminMenu.Tabs OnPlayerListRefresh?.Invoke(); } - public void RefreshPlayerList(Dictionary namesToPlayers) + public void RefreshPlayerList(IEnumerable players) { PlayerList.RemoveAllChildren(); var playerManager = IoCManager.Resolve(); @@ -48,16 +49,23 @@ namespace Content.Client.UserInterface.AdminMenu.Tabs { new Label { - Text = "Name", + Text = "Username", SizeFlagsStretchRatio = 2f, HorizontalExpand = true }, new VSeparator(), new Label { - Text = "Player", + Text = "Character", SizeFlagsStretchRatio = 2f, HorizontalExpand = true + }, + new VSeparator(), + new Label() + { + Text = "Antagonist", + SizeFlagsStretchRatio = 2f, + HorizontalExpand = true, } } }; @@ -75,7 +83,7 @@ namespace Content.Client.UserInterface.AdminMenu.Tabs PlayerList.AddChild(new HSeparator()); var useAltColor = false; - foreach (var (name, player) in namesToPlayers) + foreach (var player in players) { var hBox = new HBoxContainer { @@ -85,7 +93,7 @@ namespace Content.Client.UserInterface.AdminMenu.Tabs { new Label { - Text = name, + Text = player.Username, SizeFlagsStretchRatio = 2f, HorizontalExpand = true, ClipText = true @@ -93,10 +101,18 @@ namespace Content.Client.UserInterface.AdminMenu.Tabs new VSeparator(), new Label { - Text = player, + Text = player.CharacterName, SizeFlagsStretchRatio = 2f, HorizontalExpand = true, ClipText = true + }, + new VSeparator(), + new Label() + { + Text = player.Antag ? "YES" : "NO", + SizeFlagsStretchRatio = 2f, + HorizontalExpand = true, + ClipText = true, } } }; diff --git a/Content.Server/Administration/AdminManager.cs b/Content.Server/Administration/AdminManager.cs index f3d6c3703f..39ddb11d5f 100644 --- a/Content.Server/Administration/AdminManager.cs +++ b/Content.Server/Administration/AdminManager.cs @@ -245,18 +245,18 @@ namespace Content.Server.Administration } var netMsg = _netMgr.CreateNetMessage(); - var namesToPlayers = new Dictionary(); + + netMsg.PlayersInfo.Clear(); foreach (var session in _playerManager.GetAllPlayers()) { var name = session.Name; - var player = session.AttachedEntity?.Name ?? ""; + var username = session.AttachedEntity?.Name ?? ""; + var antag = session.ContentData()?.Mind?.AllRoles.Any(r => r.Antagonist) ?? false; - namesToPlayers.Add(name, player); + netMsg.PlayersInfo.Add(new AdminMenuPlayerListMessage.PlayerInfo(name, username, antag)); } - netMsg.NamesToPlayers = namesToPlayers; - _netMgr.ServerSendMessage(netMsg, senderSession.ConnectedClient); } diff --git a/Content.Shared/Administration/AdminMenu/AdminMenuPlayerListMessage.cs b/Content.Shared/Administration/AdminMenu/AdminMenuPlayerListMessage.cs index 62128c67cc..42ec1b092f 100644 --- a/Content.Shared/Administration/AdminMenu/AdminMenuPlayerListMessage.cs +++ b/Content.Shared/Administration/AdminMenu/AdminMenuPlayerListMessage.cs @@ -13,32 +13,36 @@ namespace Content.Shared.Administration.AdminMenu public AdminMenuPlayerListMessage(INetChannel channel) : base(NAME, GROUP) { } #endregion - public Dictionary NamesToPlayers = default!; + public List PlayersInfo = new(); public override void ReadFromBuffer(NetIncomingMessage buffer) { - var pairs = buffer.ReadInt32(); + var count = buffer.ReadInt32(); - NamesToPlayers = new Dictionary(); + PlayersInfo.Clear(); - for (var i = 0; i < pairs; i++) + for (var i = 0; i < count; i++) { - var name = buffer.ReadString(); - var player = buffer.ReadString(); + var username = buffer.ReadString(); + var characterName = buffer.ReadString(); + var antag = buffer.ReadBoolean(); - NamesToPlayers.Add(name, player); + PlayersInfo.Add(new PlayerInfo(username, characterName, antag)); } } public override void WriteToBuffer(NetOutgoingMessage buffer) { - buffer.Write(NamesToPlayers.Count); + buffer.Write(PlayersInfo.Count); - foreach (var (name, player) in NamesToPlayers) + foreach (var player in PlayersInfo) { - buffer.Write(name); - buffer.Write(player); + buffer.Write(player.Username); + buffer.Write(player.CharacterName); + buffer.Write(player.Antag); } } + + public record PlayerInfo(string Username, string CharacterName, bool Antag); } }