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)
{
_window?.RefreshPlayerList(msg.NamesToPlayers);
_window?.RefreshPlayerList(msg.PlayersInfo);
}
public void ResetWindow()

View File

@@ -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<string, string> namesToPlayers)
public void RefreshPlayerList(IEnumerable<AdminMenuPlayerListMessage.PlayerInfo> players)
{
PlayerTabControl.RefreshPlayerList(namesToPlayers);
PlayerTabControl.RefreshPlayerList(players);
}
}
}

View File

@@ -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<string, string> namesToPlayers)
public void RefreshPlayerList(IEnumerable<AdminMenuPlayerListMessage.PlayerInfo> players)
{
PlayerList.RemoveAllChildren();
var playerManager = IoCManager.Resolve<IPlayerManager>();
@@ -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,
}
}
};

View File

@@ -245,18 +245,18 @@ namespace Content.Server.Administration
}
var netMsg = _netMgr.CreateNetMessage<AdminMenuPlayerListMessage>();
var namesToPlayers = new Dictionary<string, string>();
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);
}

View File

@@ -13,32 +13,36 @@ namespace Content.Shared.Administration.AdminMenu
public AdminMenuPlayerListMessage(INetChannel channel) : base(NAME, GROUP) { }
#endregion
public Dictionary<string, string> NamesToPlayers = default!;
public List<PlayerInfo> PlayersInfo = new();
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 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);
}
}