Player list now lists antagonists. (#3826)
This commit is contained in:
committed by
GitHub
parent
67e7d49806
commit
2fac6b1089
@@ -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()
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user