Player list now lists antagonists. (#3826)

This commit is contained in:
Vera Aguilera Puerto
2021-04-11 07:24:50 +02:00
committed by GitHub
parent 67e7d49806
commit 2fac6b1089
5 changed files with 46 additions and 25 deletions

View File

@@ -68,7 +68,7 @@ namespace Content.Client.UserInterface.AdminMenu
private void HandlePlayerListMessage(AdminMenuPlayerListMessage msg) private void HandlePlayerListMessage(AdminMenuPlayerListMessage msg)
{ {
_window?.RefreshPlayerList(msg.NamesToPlayers); _window?.RefreshPlayerList(msg.PlayersInfo);
} }
public void ResetWindow() public void ResetWindow()

View File

@@ -1,6 +1,7 @@
#nullable enable #nullable enable
using System.Collections.Generic; using System.Collections.Generic;
using Content.Client.UserInterface.AdminMenu.Tabs; using Content.Client.UserInterface.AdminMenu.Tabs;
using Content.Shared.Administration.AdminMenu;
using Robust.Client.AutoGenerated; using Robust.Client.AutoGenerated;
using Robust.Client.UserInterface.CustomControls; using Robust.Client.UserInterface.CustomControls;
using Robust.Client.UserInterface.XAML; using Robust.Client.UserInterface.XAML;
@@ -49,9 +50,9 @@ namespace Content.Client.UserInterface.AdminMenu
_gameHud.AdminButtonDown = false; _gameHud.AdminButtonDown = false;
} }
public void RefreshPlayerList(Dictionary<string, string> namesToPlayers) public void RefreshPlayerList(IEnumerable<AdminMenuPlayerListMessage.PlayerInfo> players)
{ {
PlayerTabControl.RefreshPlayerList(namesToPlayers); PlayerTabControl.RefreshPlayerList(players);
} }
} }
} }

View File

@@ -1,6 +1,7 @@
#nullable enable #nullable enable
using System.Collections.Generic; using System.Collections.Generic;
using Content.Shared.Administration.AdminMenu;
using Robust.Client.AutoGenerated; using Robust.Client.AutoGenerated;
using Robust.Client.Graphics; using Robust.Client.Graphics;
using Robust.Client.Player; using Robust.Client.Player;
@@ -31,7 +32,7 @@ namespace Content.Client.UserInterface.AdminMenu.Tabs
OnPlayerListRefresh?.Invoke(); OnPlayerListRefresh?.Invoke();
} }
public void RefreshPlayerList(Dictionary<string, string> namesToPlayers) public void RefreshPlayerList(IEnumerable<AdminMenuPlayerListMessage.PlayerInfo> players)
{ {
PlayerList.RemoveAllChildren(); PlayerList.RemoveAllChildren();
var playerManager = IoCManager.Resolve<IPlayerManager>(); var playerManager = IoCManager.Resolve<IPlayerManager>();
@@ -48,16 +49,23 @@ namespace Content.Client.UserInterface.AdminMenu.Tabs
{ {
new Label new Label
{ {
Text = "Name", Text = "Username",
SizeFlagsStretchRatio = 2f, SizeFlagsStretchRatio = 2f,
HorizontalExpand = true HorizontalExpand = true
}, },
new VSeparator(), new VSeparator(),
new Label new Label
{ {
Text = "Player", Text = "Character",
SizeFlagsStretchRatio = 2f, SizeFlagsStretchRatio = 2f,
HorizontalExpand = true 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()); PlayerList.AddChild(new HSeparator());
var useAltColor = false; var useAltColor = false;
foreach (var (name, player) in namesToPlayers) foreach (var player in players)
{ {
var hBox = new HBoxContainer var hBox = new HBoxContainer
{ {
@@ -85,7 +93,7 @@ namespace Content.Client.UserInterface.AdminMenu.Tabs
{ {
new Label new Label
{ {
Text = name, Text = player.Username,
SizeFlagsStretchRatio = 2f, SizeFlagsStretchRatio = 2f,
HorizontalExpand = true, HorizontalExpand = true,
ClipText = true ClipText = true
@@ -93,10 +101,18 @@ namespace Content.Client.UserInterface.AdminMenu.Tabs
new VSeparator(), new VSeparator(),
new Label new Label
{ {
Text = player, Text = player.CharacterName,
SizeFlagsStretchRatio = 2f, SizeFlagsStretchRatio = 2f,
HorizontalExpand = true, HorizontalExpand = true,
ClipText = true ClipText = true
},
new VSeparator(),
new Label()
{
Text = player.Antag ? "YES" : "NO",
SizeFlagsStretchRatio = 2f,
HorizontalExpand = true,
ClipText = true,
} }
} }
}; };

View File

@@ -245,18 +245,18 @@ namespace Content.Server.Administration
} }
var netMsg = _netMgr.CreateNetMessage<AdminMenuPlayerListMessage>(); var netMsg = _netMgr.CreateNetMessage<AdminMenuPlayerListMessage>();
var namesToPlayers = new Dictionary<string, string>();
netMsg.PlayersInfo.Clear();
foreach (var session in _playerManager.GetAllPlayers()) foreach (var session in _playerManager.GetAllPlayers())
{ {
var name = session.Name; 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); _netMgr.ServerSendMessage(netMsg, senderSession.ConnectedClient);
} }

View File

@@ -13,32 +13,36 @@ namespace Content.Shared.Administration.AdminMenu
public AdminMenuPlayerListMessage(INetChannel channel) : base(NAME, GROUP) { } public AdminMenuPlayerListMessage(INetChannel channel) : base(NAME, GROUP) { }
#endregion #endregion
public Dictionary<string, string> NamesToPlayers = default!; public List<PlayerInfo> PlayersInfo = new();
public override void ReadFromBuffer(NetIncomingMessage buffer) public override void ReadFromBuffer(NetIncomingMessage buffer)
{ {
var pairs = buffer.ReadInt32(); var count = buffer.ReadInt32();
NamesToPlayers = new Dictionary<string, string>(); PlayersInfo.Clear();
for (var i = 0; i < pairs; i++) for (var i = 0; i < count; i++)
{ {
var name = buffer.ReadString(); var username = buffer.ReadString();
var player = 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) 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.Username);
buffer.Write(player); buffer.Write(player.CharacterName);
buffer.Write(player.Antag);
} }
} }
public record PlayerInfo(string Username, string CharacterName, bool Antag);
} }
} }